您的位置:首页 > 数据库 > MySQL

解决Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2) ";

2018-07-25 17:33 441 查看

最近项目出现问题,数据库连不上,出现了这个问题:

[code]root@iZufkfljcZ:~# mysql -uroot -p

Enter password:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

为了解决这个问题,在网上找了很多资料终于找到了解决方案。

首先先运行一下

[code]find / -name mysql.sock

能查到结果的话,只需将查到的结果做一个软连接到/tmp目录下即可解决。但是我的没有

连接localhost通常通过一个Unix域套接字文件进行,一般是/tmp/mysql.sock。如果套接字文件被删除了,本地客户就不能连接。这可能发生在你的系统运行一个cron任务删除了/tmp下的临时文件。

如果你因为丢失套接字文件而不能连接,你可以简单地通过重启服务器重新创建得到它。因为服务器在启动时重新创建它。

如果和我一样,重启服务器还是没有任何变化,你可以先执行下面的语句:

[code]mysql -uroot -h 127.0.0.1 -p

不出意外,这句话应该是可以执行的,你现在不能用套接字建立连接因为它不见了,所以可以建立一个TCP/IP连接
如果套接字文件被一个cron任务删除,问题将重复出现,除非你修改cron任务或使用一个或使用一个不同的套接字文件,我的解决办法是重新指定一个不同的套接字,或者说,我现在没有mysql.sock文件,所以要想办法生成一个。

首先,更改my.cnf文件,我的服务器中的目录为/etc/my.cnf,如果没有的话可以用find去查找,

 

保存退出,确保这个目录存在,修改目录一下,如果不存在,一定要新建哦!

[code]# chmod 777 /var/lib/mysql

准备步骤做好,然后就是mysql和mysqld服务重启

[code]
# service mysql  restart

# service mysqld restart

重启成功,进入刚才新建的目录发现多了 mysqld.sock,尝试登陆。ok可以登陆,将所有配置改回原来的即可。

怎样保护“/tmp/mysql.sock ”不被删除?

如果你有这个问题,事实上任何人可以删除MySQL通讯套接字“/tmp/mysql.sock”,在Unix的大多数版本上,你能通过为其设置sticky(t)位来保护你的“/tmp”文件系统。作为root登录并且做下列事情: chmod +t /tmp
这将保护你的“/tmp”文件系统使得文件仅能由他们的所有者或超级用户(root)删除。
你能执行ls -ld /tmp检查sticky位是否被设置,如果最后一位许可位是t,该位被设置了。

 

 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐