欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mysql无法找到或无法连接本地的mysql.sock的问题

程序员文章站 2022-05-29 16:48:42
...
类似如下错误
Can't connect to local MySQL server through socket '/var/mysql/mysql.sock'

或者是另外的其他路径,比如 /var/lib/mysql/mysql.sock


网上有很多解决方案,就是配置my.cnf或者my.ini,针对不同操作系统以及版本
我们明明在my.cnf配置了路径,但是还是不管用


首先,了解mysql.sock的作用,他是负责mysql建立socket连接的时候记录的一些信息文件
比如我们更换了mysql的数据文件目录,修改了配置文件之后就无法启动或者无法连接


上面我们知道mysql.sock的文件作用,再分析几种可能,而不是直接尝试解决问题
首先要确保,配置文件中的文件路径位置对当前的用户是否有相应的读写权限,否则即便MySQL读取了配置文件,也无法执行写操作或创建文件,就会报错
可以尝试如下,在对应目录下授权
chown -R mysql .


第二,配置完成后重启看是否可以启动成功,查看对应的目录下是否生成了相应文件,如果生成了,说明文件权限生效了,如果未生成,则需要判断,当前MySQL读取的配置文件是否为my.cnf,当然,默认情况下会是这个文件,除非启动的时候追加了参数,当然也要确保不要重复启动mysqld服务,看看端口是否已经启动了。


第三,如果MySQL服务成功启动了,说明服务端已经正常启动,但是在连接客户端的时候还可能出现这个问题,那么也就是连接客户端访问的又提示还是默认的路径,而不是my.cnf文件配置的路径,这个时候可以通过连接mysql的客户端后面追加参数 -S 文件路径,来连接mysql,不过这样并不方便,我们可以在my.cnf中追加
[client]
socket=/var/lib/mysql/mysql.sock或者自定义的目录,这样连接本地客户端的时候就会像这个文件目录读写文件了。

网上还有通过ln -s简历软连接的方式,将mysql读取的默认目录连接到自定义的目录,不过总觉得这样是治标不治本而且很别扭,虽然可以解决问题

相关更多说明可以参看官方文档
http://dev.mysql.com/doc/refman/5.7/en/option-files.html