PHP连接MySQL服务器老是出错
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP连接MySQL服务器老是出错相关的知识,希望对你有一定的参考价值。
这是代码:
<?php
mysql_connect("127.0.0.1:8080","root","") or die("数据库链接错误".mysql_error());
mysql_select_db("ruanjian",'') or die("数据库访问错误".mysql_error());
mysql_query("set names utf8_general_ci");
?>
浏览器显示的错误:
Warning: mysql_connect() [function.mysql-connect]: MySQL server has gone
away in D:\WWW\conn.php on line 2
Warning:
mysql_connect() [function.mysql-connect]:
Error while reading greeting packet. PID=8380 in D:\WWW\conn.php on line
2
Warning: mysql_connect() [function.mysql-connect]: MySQL server has gone
away in D:\WWW\conn.php on line 2
Fatal error:
Maximum execution time of 30 seconds exceeded in D:\WWW\conn.php on line
2
<?php
$host="localhost";
$db_user="root"; //用户名
$db_pass="1"; //密码
$db_name="lianxi"; //数据库名
$timezone="Asia/Shanghai";
$link=mysql_connect($host,$db_user,$db_pass);
mysql_select_db($db_name,$link);
mysql_query("SET names UTF8");
header("Content-Type: text/html; charset=utf-8");
date_default_timezone_set($timezone); //北京时间
?> 参考技术A http://www.jb51.net/article/23781.htm 参考这个
phpmyadmin 使用 mysqli 连接,但我的 php 使用 mysqli 出错了
【中文标题】phpmyadmin 使用 mysqli 连接,但我的 php 使用 mysqli 出错了【英文标题】:phpmyadmin using mysqli connects, but my php using mysqli errors out 【发布时间】:2010-12-31 15:06:21 【问题描述】:这快把我逼疯了!我得到了经典的“无法通过套接字'/var/run/mysql4d/mysql4d.sock' (13) 连接到本地 MySQL 服务器”。
到目前为止,我发现的一切都告诉我我的设置应该没问题(例如,在 php.ini 和 my.cnf 中定义套接字等)。更糟糕的是... phpmyadmin 与我在自己的 php 中使用的相同 un/pw 一起工作。所以显然可以连接,但我搞砸了
我尝试从 phpmyadmin 对连接进行逆向工程,但几个小时后因为过于复杂而放弃了它。
谁能给点建议?
我的配置:Ubuntu 9.10 (Karmic)、Apache 2.2、PHP 5.2.6、MySQL 4.1.22(出于遗留应用的原因)。
my.cnf (/var/lib/mysql4/my.cnf):
[客户] 端口 = 3306 套接字 = /var/run/mysql4d/mysql4d.sock [mysqld] 端口 = 3306 套接字 = /var/run/mysql4d/mysql4d.sock
php.ini (/etc/php5/apache2/php.ini):
[MySQL] mysql.default_socket = /var/run/mysql4d/mysql4d.sock [MySQLi] mysql.default_socket = /var/run/mysql4d/mysql4d.sock
使用 mysql 代替 mysqli 时同样的问题,顺便说一句。
编辑: 我应该提到,我已经安装了 mysql4 以及 php 和 mysql 的 ubuntu 默认安装,以便与旧版应用程序一起使用,而我在连接时遇到了麻烦。我试过这个:
ini_set('mysql.default_socket', '/var/run/mysql4d/mysql4d.sock');
现在连接成功,但所有查询都返回空集。 (沮丧地哭泣)
【问题讨论】:
我可能错了,但不是错误 13“权限被拒绝”吗?会不会是你没有访问socket的权限? 【参考方案1】:这听起来像是/var/run/mysql4d/mysql4d.sock
中的权限问题。您以什么用户身份运行它?权限是否正常?在文件系统级别?
如果你用谷歌搜索错误消息,你会发现很多人都遇到了这个问题,这总是一个权限问题,有时是因为激活了SELinux。查看this thread 了解一些可能的解决方案。
【讨论】:
嘿Pekka,谢谢你的提示!但是我的机器上没有安装 selinux。唉,线程上没有任何帮助。如果是权限问题,也许我的 apache.conf 写得不好...... 嗯,太糟糕了!套接字真的存在吗?你检查过它的权限吗?是否允许 Apache 用户访问它? 是的,套接字存在:srwxrwxrwx 1 mysql4 mysql4 0 2010-01-01 14:15 /var/run/mysql4d/mysql4d.sock 必须允许 Apache 访问它,否则 phpmyadmin 将无法工作. 好的。是否可以选择绕过套接字?如果是,请尝试连接到 127.0.0.1 而不是 localhost(请参阅 de2.php.net/manual/en/function.mysql-connect.php 为什么中的“注释”)。也许这有帮助。我现在休息到明天。祝你好运! 啊哈!我尝试用 mysqli 而不是 mysql 覆盖使用 tcp/ip,它突然开始工作了! mysqli_connect('127.0.0.1', $un, $pw, $db, 3306);它不与 mysql_connect 一起工作(这很有趣,因为文档在 mysql_connect 页面上提到了它,但不是 mysqli_connect)。感谢您的所有帮助,Pekka!以上是关于PHP连接MySQL服务器老是出错的主要内容,如果未能解决你的问题,请参考以下文章
使用 PhP 在 android 和 mysql 之间建立连接时出错
用php的 mysql_select_db 选择数据库 老是报1064