编辑3:感谢大家的帮助。 对不起浪费任何人的时间,但似乎是一个简单的重新启动解决它。 我应该知道更好,但我只是假设“重新启动”的解决scheme大多只适用于MS Windows(无罪)。 在我再次提出问题之前,我会牢记这一点。
我使用sudo apt-get install在Ubuntu 8.04上安装了mysql-client-5.0和mysql-server-5.0软件包。
当我尝试运行“mysql”命令时,出现以下错误:
错误2002(HY000):无法通过套接字'/var/run/mysqld/mysqld.sock'连接到本地MySQL服务器(2)
为了validationmysql服务器是否正在运行,我试过了,它似乎正在运行,也有正确的套接字:
$ ps aux | grep mysql 根13388 0.0 0.0 1772 528? S 06:24 0:00 / bin / sh / usr / bin / mysqld_safe mysql 13553 0.0 1.4 127012 15332? sl 06:25 0:00 / usr / sbin / mysqld --basedir = / usr --datadir = / var / lib / mysql --user = mysql --pid-file = / var / run / mysqld / mysqld.pid --skip-external-locking --port = 3306 --socket = / var / run / mysqld / mysqld.sock 根13555 0.0 0.0 3008 696? S 06:25 0:00 logger -p daemon.err -t mysqld_safe -i -t mysqld ehsanul 16910 0.0 0.0 3092 772 pts / 4 R + 07:17 0:00 grep mysql
所以我不明白为什么我得到一个错误,试图连接到MySQL服务器。 请注意,我对MySQL完全陌生。
编辑:
根据评论的要求,返回错误的确切命令只是“sudo mysql”。
当我检查netstats的活动networking服务,我看到一个条目端口3306与协议:tcp,IP来源:127.0.0.1,状态:LISTEN
编辑2:它看起来像/var/run/mysqld/mysqld.sock套接字不存在(如果我正在解释以下输出):
$ ls -al / var / run / mysqld / 总计0 drwxr-xr-x 2 mysql root 40 2009-08-06 06:36 drwxr-xr-x 20 root root 860 2009-08-06 06:25
如果您通过套接字连接时遇到问题,可以尝试通过tcp连接到您的mysql服务器:
mysql -h localhost
或使用用户名/密码:
mysql -h localhost -u root -p
根据用户的设置,任何一个人都可以工作。 如果你得到这个错误,这意味着mysql命令至less要和服务器通话:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
我遇到了这个问题,假设我使用的客户端软件没有与服务器相同的选项进行编译时,sock文件的位置是错误的。 (在我的情况下,PHP的二进制分布)。
我首先检查一下,确保正在运行的客户端实际上是您认为已经安装的客户端,而不是其他版本。
如果不是这样,你可以告诉服务器把它的套接字文件写在客户端查找的地方。 在my.cnf的“[mysqld]”部分,更改或添加:
socket=/var/run/mysqld/mysqld.sock
或者,只需放入一个符号链接。 对于我的PHP问题,因为它在/ tmp中查找它,我有一个在启动时运行的作业来添加符号链接。
过去我遇到过这样的问题,通常归结为mysql用户不能写/读的套接字文件。 你可以在/ var / run / mysqld /目录下查看mysqld.sock的访问权限。
试试:chown mysql:mysql / var / run / mysqld /
和
chmod 755 / var / run / mysqld /
接着
/etc/init.d/mysql重新启动
它应该解决你的问题。
你可以检查my.cnf,尤其是套接字path和绑定地址,然后回报。 绑定地址应该是127.0.0.1,套接字path应该是相同的。
如果是OpenSuse或SLES,我敢打赌是AppArmor引起了这个问题。 进入yast并禁用它。