mysql_connect()函数:没有这样的文件或目录(mysql_connect(): No s

2019-07-31 22:21发布

我刚装上的老RedHat7中一个MySQL服务器(3.23.58版)。 我无法安装,因为依赖较新的MySQL版本。 我不能更新这个红帽服务器上librairies。

但是,我必须连接到与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);

我两次检查数据库存在,登录名和密码是否正确。

这很奇怪,因为该代码工作正常,我的Windows PC上Wampp。 我找不出问题出在哪里得来的。

任何的想法?

Answer 1:

是的,你无法连接那样的!

@PLB和@jammypeach mysqli的是4.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中找到插座值,例如,插座= / tmp目录/的mysql.sock打开php.ini文件(这也是您的phpinfo()找到页面“加载的配置文件”),并改变所有的事件不正确的插槽位置从MySQL正确的插槽位置。

另一种解决方案(简单):DSN的PDO:

mysql:unix_socket=/tmp/mysql.sock;dbname=...

的mysql_connect:

$db = mysql_connect('localhost:/tmp/mysql.sock', ...

您的系统是当它涉及到安全真正可怕的,如果你托管敏感数据,我想升级到最新版本。

---- ----更新

Aaahhhh PHP 5.0和MySQL 3.23 :)

PHP 5的MySQL客户端打包无法连接到MySQL数据库小于4.1的版本。 从4.1版开始,MySQL使用密码哈希的一种新的方式,是不是与前4.1数据库兼容。 你的配置连接到服务器是3.23版本。 所以,你需要给自己一个更高版本的MySQL。 很抱歉,但对于你的情况下,没有其他可行的解决方案。 如果我是你,我会升级整个系统,并安装最新的操作系统版本,如果我有我与Debian和PHP和MySQL的最新的稳定版本去。



Answer 2:

在MAC OSX只需重新启动MySQL服务器

sudo /usr/local/mysql/support-files/mysql.server restart

它的工作对我来说



Answer 3:

Fortunatly这工作很适合我:

$db = mysql_connect('localhost:/var/lib/mysql/mysql.sock', 'Username', 'Password');


Answer 4:

我不得不花了我好几个小时来解决类似的问题。 我把mysql的/ MariaDB的一个单独的驱动器和PHP驱动的网站一直在寻找的默认位置的插座。 所以,我创建了一个符号链接,但我认为SELinux的不会给的权限。 所以,后来我添加了这些线将/etc/php.ini中的文件和它的作品。

pdo_mysql.default_socket = /data/mysql/mysql.sock
mysql.default_socket = /data/mysql/mysql.sock
mysqli.default_socket = /data/mysql/mysql.sock


Answer 5:

我使用甲基苯丙胺,并具有样本问题。 我发现,有tmp中没有的mysql.sock。 所以用这个代码

cd /tmp && ln -s /Applications/MAMP/tmp/mysql/mysql.sock

它的工作对我来说



文章来源: mysql_connect(): No such file or directory