我刚刚在旧的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上运行良好。我找不出问题出在哪里。
你知道吗?
6条答案
按热度按时间von4xj4u1#
是的,你不能这样连接!
@PLB和@jammypeach mysqli是v4.1之后,他正在使用v3:)伙计们阅读规格,如果你真的想帮助!
无法连接,因为你的socket文件有一点错误。我现在想起来以前的RH有过这个问题。你的socket可能是/var/mysql/mysql.sock或/tmp/mysql.sock,但有一个或多个应用程序正在寻找另一个。
如果你的文件是/tmp/mysql.sock而不是/var/mysql/mysql.sock,你应该:
如果你有/var/mysql/mysql.sock但是没有/tmp/mysql.sock那么:
您需要权限才能进行更改。如果需要,只需在上面的命令之前输入sudo!
另一种解决方案(更简单):
创建文件并调用phpinfo();查找“mysql.default_socket”;或“pdo_mysql.默认套接字”;打开My.ini或My.cnf找到套接字值,例如socket=/tmp/mysql.sock打开php.ini文件(也可以在phpinfo()页面找到,名为“已加载的配置文件”),并将所有出现的不正确套接字位置更改为MySQL中的正确套接字位置。
另一种解决方案(最简单):PDO的DSN:
mysql连接:
你的系统真的很可怕,当谈到安全,如果你是托管敏感数据,我会升级到最新版本。
----更新----
PHP 5.0和MySQL 3.23:)
PHP 5打包了一个mysql客户端,它无法连接到低于4.1版本的MySQL数据库。从4.1版本开始,MySQL使用了一种新的密码散列方式,该方式与4.1之前的数据库不兼容。您的配置连接到的服务器是3.23版本。因此,您需要获得更高版本的MySQL。抱歉,但是对于你的情况没有其他可行的解决方案。如果我是你,我会升级整个系统,安装最新版本的操作系统,如果有必要,我会选择Debian和最新稳定版本的PHP和MySQL。
vwhgwdsa2#
幸运的是,这对我来说效果很好:
rmbxnbpk3#
在Mac OSX上,只需重新启动MySQL服务器
对我很有效
daolsyd04#
我也遇到过类似的问题,花了几个小时才解决。我把Mysql / Mariadb放在一个单独的驱动器上,PHP驱动的网站正在默认位置寻找套接字。所以,我创建了一个符号链接,但我认为SELinux不会给予这个权限。所以,我把这些行添加到/etc/php. ini文件中,它就工作了。
vwkv1x7d5#
我使用MAMP并且有示例问题。我发现在tmp中没有mysql.sock。所以使用此代码
对我很有效
pxiryf3j6#
请使用127.0.0.1作为您的主机,而不要使用localhost。