首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql_connect():没有这样的文件或目录

mysql_connect():没有这样的文件或目录
EN

Stack Overflow用户
提问于 2012-09-25 22:09:47
回答 5查看 65.3K关注 0票数 15

我刚刚在一个旧的RedHat7上安装了一个MySQL服务器(版本3.23.58)。由于依赖关系,我无法安装更新的MySQL版本。我无法在此RedHat服务器上更新库。

但是,我在使用PHP连接到数据库时遇到了问题。首先我使用的是PDO,但我意识到PDO与MySQL 3.23不兼容……

所以我使用了mysql_connect()。现在我有以下错误:

代码语言:javascript
复制
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

我的代码是:

代码语言:javascript
复制
$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上运行得很好。我想不出问题是从哪里来的。

有什么想法吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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,您应该:

代码语言:javascript
复制
cd /var 
mkdir mysql
cd mysql
ln -s /tmp/mysql.sock mysql.sock

如果您有/var/mysql/mysql.sock,但没有/tmp/mysql.sock,那么:

代码语言:javascript
复制
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:

代码语言:javascript
复制
mysql:unix_socket=/tmp/mysql.sock;dbname=...

mysql_connect:

代码语言:javascript
复制
$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。

票数 42
EN

Stack Overflow用户

发布于 2015-10-27 15:15:02

幸运的是,这对我来说效果很好:

代码语言:javascript
复制
$db = mysql_connect('localhost:/var/lib/mysql/mysql.sock', 'Username', 'Password');
票数 3
EN

Stack Overflow用户

发布于 2014-05-29 14:06:08

在MAC OSX上,只需重新启动mysql服务器

代码语言:javascript
复制
sudo /usr/local/mysql/support-files/mysql.server restart

这对我很管用

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12584762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档