修改mysql数据存储路径datadir及ERROR 2002 (HY000): Can't connect to local MySQL server through socket '***' (2)解决
1.如何修改mysql的datadir数据存储路径
mysql数据原存储路径为/var/lib/mysql,现在要修改到/home/opt/iredmail/data/mysql,按照如下步骤操作:
a.新建/home/opt/iredmail/data/mysql目录 权限先给0777 mkdir -m 0777 data
b.关掉mysql进程 mysqladmin -u root -p shutdown
c.将原数据移动到新目录中去 mv /var/lib/mysql /home/opt/iredmail/data
d.修改my.conf文件
一般在etc/下面会有my.conf文件,如果没有,则到/usr/share/mysql/下找到*.cnf文件,拷贝其中一个到/etc/并改名为my.cnf,接下来编辑这个文件,
在原有文件的基础上添加下列部分:
[mysqld]
port = 3306
datadir = /home/opt/iredmail/data/mysql
socket =/home/opt/iredmail/data/mysql/mysql.sock
[client]
default-character-set=utf8
socket =/home/opt/iredmail/data/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket =/home/opt/iredmail/data/mysql/mysql.sock
e.修改mysql启动脚本/etc/init.d/mysql(本机上在/etc/rc.d/init.d/mysqld)
修改两个部分datadir和socket的路径(有需要修改日志路径的的也可以修改log-error的配置路径)
f.修改usr/bin/mysqld_safe中配置:将所有/var/lib/mysql/mysql.sock替换成/home/opt/iredmail/data/mysql/mysql.sock,将所有/var/lib/mysql替换成/home/opt/iredmail/data/mysql
g.重启mysqld服务 service mysqld restart 能成功启动 并在/home/opt/iredmail/data/mysql下生成了mysql.socket就表示成功了。
使用mysql -uroot -p链接mysql的时候如果报错ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysqlmysql.socket' (2) 问题分析:
a.看mysql服务是否在运行
由于“socket”文件是由mysql服务运行时创建的,如果提示“ERROR 2002 (HY000): Can't connect to local MySQL server through socket '***' (2)”,找不到“socket”文件,我们首先要确认的是mysql服务是否正在运行。
# 1、 端口是否打开
[root@aiezu.com ~]# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 12207 mysql 14u IPv4 52350 0t0 TCP *:mysql (LISTEN)
# 2、mysqld服务是否正在运行
[root@aiezu.com ~]# service mysqld status
mysqld (pid 4717) is running...
2、确定“socket”文件正确位置:
确定mysql服务正常运行后,产生此错误的原因只剩下“socket”文件路径不正确了,我们可以使用“find”命令或者“lsof”命令来确定socket文件的正确路径:
[root@aiezu.com ~]# lsof -c mysqld|grep sock$
mysqld 4717 mysql 12u unix 0xffff88010a655b80 0t0 77474827 /home/opt/iredmail/data/mysql/mysql.sock
[root@aiezu.com ~]# find / -name '*.sock'
/home/opt/iredmail/data/mysql/mysql.sock
问题所在:mysql.socket的文件所在位置和配置文件中的位置不符合(没找到mysql.socket)
方法一:修改“/etc/my.cnf”配置文件,在配置文件中添加“[client]”选项和“[mysql]”选项,并使用这两个选项下的“socket”参数值,与“[mysqld]”选项下的“socket”参数值,指向的socket文件路径完全一致。如下:
[mysqld]
datadir=/home/opt/iredmail/data/mysql
socket=/home/opt/iredmail/data/mysql/mysql/mysql.sock
[client]
default-character-set=utf8
socket=/home/opt/iredmail/data/mysql/mysql.sock
[mysql]
default-character-set=utf8
socket=/home/opt/iredmail/data/mysql/mysql.sock
修改完后,重启mysqld服务,即可解决此问题。
方法二:使用“ln -s /home/opt/iredmail/data/mysql/mysql.sock /var/lib/mysql/mysql.sock”命令,将正确的socket文件位置,软链接到提示错误的socket文件路径位置,即可解决此问题,同样的,修改完后重启mysqld服务。


浙公网安备 33010602011771号