我刚刚在一个旧的RedHat7上安装了一个MySQL服务器(版本3.23.58)。由于依赖关系,我无法安装更新的MySQL版本。我无法在此RedHat服务器上更新库。
但是,我在使用PHP连接到数据库时遇到了问题。首先我使用的是PDO,但我意识到PDO与MySQL 3.23不兼容……
所以我使用了mysql_connect()。现在我有以下错误:
Warning: mysql_connect(): No such file or directory in /user/local/apache/htdocs/php/database.php on line 9
Error: No such file or directory我的代码是:
$host = 'localhost';
$user = 'root';
$password = '';
$database = 'test';
$db = mysql_connect($host, $user, $password) or die('Error : ' . mysql_error());
mysql_select_db($database);我检查了两次数据库是否存在,登录和密码是否正确。
这很奇怪,因为代码在我装有Wampp的Windows PC上运行得很好。我想不出问题是从哪里来的。
有什么想法吗?
发布于 2012-09-25 22:20:45
是的,你不能那样连接!
@PLB和@jammypeach mysqli是在v4.1之后,他正在使用v3 :)伙计们,如果你真的想要帮助的话,请阅读规范!
您无法连接,因为您的套接字文件有一点错误。我现在想起来了,以前的RH也有过这个问题。您的套接字可能是/var/mysql/mysql.sock或/tmp/mysql.sock,但一个或多个应用程序正在寻找另一个。
如果您的是/tmp/mysql.sock,但没有/var/mysql/mysql.sock,您应该:
cd /var
mkdir mysql
cd mysql
ln -s /tmp/mysql.sock mysql.sock如果您有/var/mysql/mysql.sock,但没有/tmp/mysql.sock,那么:
cd /tmp
ln -s /var/mysql/mysql.sock mysql.sock您需要权限才能进行更改。只要sudo,如果需要在上面的命令之前!
另一种解决方案(更简单):
创建文件并调用phpinfo();查找‘mysql.default_ socket’或'pdo_mysql.default_ socket ';打开My.ini或My.cnf找到套接字值,例如socket=/tmp/mysql.sock打开您的php.ini文件(也可以在您的phpinfo()页面上找到‘加载的配置文件’),并将所有出现的错误套接字位置从MySQL更改为正确的套接字位置。
另一种解决方案(最简单):PDO的DSN:
mysql:unix_socket=/tmp/mysql.sock;dbname=...mysql_connect:
$db = mysql_connect('localhost:/tmp/mysql.sock', ...当涉及到安全性时,你的系统真的很可怕,如果你托管敏感数据,我会升级到最新版本。
--更新
Aaahhhh PHP5.0和MySQL 3.23 :)
PHP5有一个打包的mysql客户端,它不能连接到低于4.1版的MySQL数据库。从4.1版开始,MySQL使用一种与4.1版之前的数据库不兼容的新密码散列方法。您的配置连接到的服务器版本为3.23。因此,您需要为自己安装一个更高版本的MySQL。很抱歉,对于您的情况没有其他实用的解决方案。如果我是你,我会升级整个系统并安装最新的操作系统版本,如果必须的话,我会选择Debian和最新稳定版本的PHP和MySQL。
发布于 2015-10-27 15:15:02
幸运的是,这对我来说效果很好:
$db = mysql_connect('localhost:/var/lib/mysql/mysql.sock', 'Username', 'Password');发布于 2014-05-29 14:06:08
在MAC OSX上,只需重新启动mysql服务器
sudo /usr/local/mysql/support-files/mysql.server restart这对我很管用
https://stackoverflow.com/questions/12584762
复制相似问题