miketwais

work up

修改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服务。

posted @ 2016-11-21 15:08  MasonZhang  阅读(1286)  评论(0)    收藏  举报