Board logo

标题: BT宝塔关于mysql.sock路径的问题 [打印本页]

作者: 万众海浪    时间: 2024-12-3 00:11     标题: BT宝塔关于mysql.sock路径的问题

mysql.sock路径问题
今天在LAMP环境使用WordPress搭建博客,在进行数据库的相关配置时遇到了mysql.sock寻址错误的问题,错误提示:“ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)”意思是通过本地/var/lib/mysql/mysql.sock文件无法连接到MySQL服务。为了解决该问题,上网查询资料,所有回答都大同小异,最终自己总结了两种解决办法。

错误提示
代码语言:javascript
复制
[root@adailinux adaiblog.com ]# mysql -uroot -padailinux
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
解决思路
出现该问题后,J2开奖直播根据错误提示我想到的是查看本地‘/var/lib/mysql/mysql.sock’文件:

代码语言:javascript
复制
[root@adailinux ]# ls /var/lib/mysql/mysql.sock
ls: 无法访问/var/lib/mysql/mysql.sock: 没有那个文件或目录
很显然,该文件不存在,于是想到在安装MySQL的时候自定义过socket文件保存路径,于是查看MySQL的配置文件:

代码语言:javascript
复制
[root@adailinux adaiblog.com]# vim /etc/my.cnf  

[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
根据该信息我检查/tmp/mysql.sock文件是否存在并查看其权限(排除因为权限问题所引起的该问题):

代码语言:javascript
复制
[root@adailinux adaiblog.com]# ls -l /tmp/mysql.sock
srwxrwxrwx 1 mysql mysql 0 8月   6 20:57 /tmp/mysql.sock
如上所示:该文件为"777"权限,所以排除了因为文件权限导致该问题的可能。
综合上面的排查,大致可以确定导致该错误的原因是MySQL寻址没寻到/tmp/mysql.sock该文件,那么该如何解决该问题呢?

解决办法1:
既然是寻址问题,肯定是因为寻址路径原因, 再看错误提示“/var/lib/mysql/mysql.sock”,该路径就是在更改socket路径前的默认路径,文件不存在,说明该地址无效,那么只么MySQL能找道mysql.sock文件就可以啊,于是想到创建软链接:

代码语言:javascript
复制
[root@adailinux adaiblog.com]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
创建完成后重启MySQL服务,再次执行mysql命令,问题解决。

解决办法2:
通过上述分析可以确定MySQL配置文件中所指定的socket路径没有生效,自我感觉这才是问题的本质原因,于是查找资料,进行如下操作:

代码语言:javascript
复制
[root@adailinux adaiblog.com]# vim /etc/my.cnf

[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock

[client]
socket=/tmp/mysql.sock
编辑MySQL配置文件后添加如上内容,重启MySQL服务,问题解决!

sever、client
至于mysql配置文件中[client]模块是什么,查到如下内容:

mysql-server 与 mysql-client是DBMS的两个面向不同操作对象的工具。
server是DBMS面向物理层次,包含存储数据的一系列机制、处理方法的集成;
client是DBMS面向用户,提供一系列工具为用户所用,这些工具包括通常写的sql在内都要通过server的编译才能操作物理数据。

客户--client--server物理数据。

服务器--mysql-server是服务端。

前者是mysql核心程序,生成管理数据库实例,数据库实例任务调度线程之类,并提供相关接口供不同客户端调用,后者是操作数据库实例的工具。
操作mysql实例的客户端有很多,mysql-client只是其中一种,包括mysql,mysqldump,mysqlslap这些进行访问、备份、压力测试的工具。
mysql-server是服务端,也就是说,你服务端没安装,客户端没对象去操作,就好比,你买了个西瓜刀,但是却没买西瓜……切西瓜有很多工具,西瓜刀只是其中一种。
介绍几个主流mysql图形化客户端;navicat、phpmyadmin。

该部分内容小白并没有搞很明白,希网明白该部分知识的道友跟帖解释一下,尽量使用通俗易懂的语言!!!

     (adsbygoogle = window.adsbygoogle || []).push({});

解决办法3:
您连接的是“localhost”还是“127.0.0.1”?我注意到,当您连接到“localhost”时,会使用套接字连接器,但当您连接到“127.0.0.1”时,会使用 TCP/IP 连接器。
如果套接字连接器未启用或无法正常工作,您可以尝试使用“127.0.0.1”。
Are you connecting to "localhost" or "127.0.0.1" ? I noticed that when you connect to "localhost" the socket connector is used, but when you connect to "127.0.0.1" the TCP/IP connector is used. You could try using "127.0.0.1" if the socket connector is not enabled/working.




欢迎光临 万众海浪论坛 (http://bbs.838778.com/) Powered by Discuz! 5.5.0