使用mysql -uroot -p连接数据库时,出现
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/usr/local/mysql/run/mysql.sock' (2)
通过
find / -name mysql.sock
可以找到/tmp/mysql.sock,但是没有找到
/usr/local/mysql/run/mysql.sock
先用
mysql -uroot -p -S /tmp/mysql.sock
强制指定使用/tmp/mysql.sock尝试连接,报错
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)
如下图:
检查错误日志:
grep 'Error' /usr/local/mysql/log/mysql_error.log
没有任何输出,自己再仔细查看错误日志,发现全是Note和Warning,并且这些记录和警告与连接无关,后来查了一下,mysql.sock是在mysql启动时生成的一个文件,检查服务状态,并没有启动,重启一下mysql就可以了。
/etc/init.d/mysql.server status/etc/init.d/mysql.server restart
总结:
1、遇到问题一定要沉着冷静。
2、有错误先查看错误日志和错误信息,通过错误信息和错误日志定位问题。
3、服务相关的问题先检查服务状态,可能是服务没有启动,重启服务就可以解决。
4、遇到文件找不到的问题先用find / -name file_name 找一下,可能这个文件不在这个目录下,或者没有在这个目录下生成这个文件,有的时候是权限问题,没有权限生成文件,修改权限或者在root用户下touch /path/to/file/file_name手动创建一个文件。
5、在安装MySQL的时候记得一定要更改所有者。
chown -R root:mysql .
chown-R mysql:mysql data
因为连接数据库的时候使用的是mysql组的mysql用户,可能会因为权限问题导致没有办法获取到key。
原文链接:https://blog.csdn.net/qq_34266639/java/article/details/80668533