这是一个常见的错误,但所有的答案都不能解决我的问题:
当我启动 mysql 时,我有:
错误 2002 (HY000):无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地 MySQL 服务器 (2)
因此,在阅读了一些答案之后,我在 my.cnf 中将其更改为 /var/lib/mysql/mysql.sock 和 /tmp/mysql.sock 但每次都会遇到同样的问题。
无奈之下,我删除了 /var/run/mysqld 中的 mysql.sock,但在删除时mysqld start
或service mysql start
(停止每个操作后)它并没有被创建。
我在 Ubuntu 10.04 上,带有一个 LAMP 服务器。
谢谢。
答案1
检查这些目录的权限或文件是否正在使用中。
以下是一个权限场景。假设您安装了 MySQL 并以 root 身份进行操作,您设法启动数据库并意外地让它在 /tmp 目录中写入具有 root 所有权的命名套接字。您以暴力方式终止该进程,并且不会发生清理。
然后,稍后,您尝试以普通用户身份启动 MySQL,这可能需要使用发行版在您的系统上设置的特殊 mysql 用户。由于命名套接字存在,因此失败。由于它没有权限清除 root 的垃圾,因此失败。
然后重新启动,这会在系统启动之前清除所有 /tmp。现在那里什么都没有了,MySQL 服务器启动了,没有冲突,而且奇迹般地一切似乎都正常工作了。
并不是说发生了什么,但是当发生这样的事情时,我遇到的大部分麻烦都是因为某些目录没有写权限,或者文件已经存在并且无法被普通帐户删除。
不过,很高兴听到你已经修复了它。
答案2
问题解决了:我重新启动了服务器,它运行良好:)(wtf?)。
相关命令:
/etc/init.d/mysqld restart
/etc/init.d/mysqld stop
/etc/init.d/mysqld start