今天在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服务。为了解决该问题,上网查询资料,所有回答都大同小异,最终自己总结了两种解决办法。
[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)
出现该问题后,首先根据错误提示我想到的是查看本地‘/var/lib/mysql/mysql.sock’文件:
[root@adailinux ]# ls /var/lib/mysql/mysql.sock
ls: 无法访问/var/lib/mysql/mysql.sock: 没有那个文件或目录
很显然,该文件不存在,于是想到在安装MySQL的时候自定义过socket文件保存路径,于是查看MySQL的配置文件:
[root@adailinux adaiblog.com]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
根据该信息我检查/tmp/mysql.sock文件是否存在并查看其权限(排除因为权限问题所引起的该问题):
[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该文件,那么该如何解决该问题呢?
既然是寻址问题,肯定是因为寻址路径原因, 再看错误提示“/var/lib/mysql/mysql.sock”,该路径就是在更改socket路径前的默认路径,文件不存在,说明该地址无效,那么只么MySQL能找道mysql.sock文件就可以啊,于是想到创建软链接:
[root@adailinux adaiblog.com]# ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
创建完成后重启MySQL服务,再次执行mysql命令,问题解决。
通过上述分析可以确定MySQL配置文件中所指定的socket路径没有生效,自我感觉这才是问题的本质原因,于是查找资料,进行如下操作:
[root@adailinux adaiblog.com]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
[client]
socket=/tmp/mysql.sock
编辑MySQL配置文件后添加如上内容,重启MySQL服务,问题解决!
至于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({});