Max*_*ter 13 php mysql redhat mysql-connect
我刚刚在旧的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
Run Code Online (Sandbox Code Playgroud)
我的代码是:
$host = 'localhost';
$user = 'root';
$password = '';
$database = 'test';
$db = mysql_connect($host, $user, $password) or die('Error : ' . mysql_error());
mysql_select_db($database);
Run Code Online (Sandbox Code Playgroud)
我检查了两次数据库是否存在,登录名和密码是否正确.
这很奇怪,因为代码在我的带有Wampp的Windows PC上运行良好.我无法弄清楚问题的来源.
任何的想法?
GTo*_*rov 36
是的,你不能那样连接!
@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
Run Code Online (Sandbox Code Playgroud)
如果你有/var/mysql/mysql.sock但没有/tmp/mysql.sock那么:
cd /tmp
ln -s /var/mysql/mysql.sock mysql.sock
Run Code Online (Sandbox Code Playgroud)
您需要具有进行更改的权限.只需sudo,如果需要在上面的命令之前!
另一种解决方案(更简单):
创建文件并调用phpinfo(); 寻找'mysql.default_socket'; 或'pdo_mysql.default_socket'; 打开My.ini或My.cnf找到套接字值,例如socket =/tmp/mysql.sock打开你的php.ini文件(也可以在你的phpinfo()页面上找到'加载配置文件')并更改所有出现的内容不正确的套接字位置到MySQL的正确套接字位置.
另一个解决方案(最简单):PDN的DSN:
mysql:unix_socket=/tmp/mysql.sock;dbname=...
Run Code Online (Sandbox Code Playgroud)
的mysql_connect:
$db = mysql_connect('localhost:/tmp/mysql.sock', ...
Run Code Online (Sandbox Code Playgroud)
在安全方面,您的系统非常可怕,如果您托管敏感数据,我会升级到最新版本.
----更新----
Aaahhhh PHP 5.0和MySQL 3.23 :)
PHP 5有一个mysql客户端打包,无法连接到低于4.1版的MySQL数据库.从版本4.1开始,MySQL使用一种新的密码散列方式,与4.1之前的数据库不兼容.您的配置连接的服务器是版本3.23.所以你需要让自己获得更高版本的MySQL.抱歉,您的案例没有其他实用的解决方案.如果我是你,我会升级整个系统并安装最新的操作系统版本,如果我不得不使用Debian和最新稳定版本的PHP和MySQL.