更換mysql資料目錄後出現ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 的解決辦法

@天行健中國元素發表於2014-02-09

伺服器上的mysql預設資料目錄為/var/lib/mysql/,同時伺服器的/空間不是很大,而近期又有大量的日誌需要匯入進行分析,時常搞得/的空間捉襟見肘,晚上一狠心就想把mysql的資料目錄轉移到另外一塊硬碟/data中。

於是關閉mysql服務:

service mysqld stop

轉移mysql資料目錄

mv /var/lib/mysql/ /data/

編輯my.cnf

vi /etc/my.cnf

修改其中的datadir和socket到新的路徑

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

本以為修改完啟動mysql服務之後就沒問題了。

service mysqld start

但是儘管啟動服務沒有問題,但是通過mysql客戶端連線的時候卻報錯:

[root@hostXXX data]# mysql -u root -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

在網上搜了半天也沒個所以然,一個個都是相互抄襲,各種拷貝,沒有一個靠譜的。

自己分析了一下,提示說無法通過socket檔案/var/lib/mysql/mysql.sock連線到mysql伺服器,也就是說對於mysql程式來說,儘管我把socket檔案從/var/lib/mysql/mysql.sock轉移到了/data/mysql/mysql.sock我在my.cnf裡指定了mysqld知道了,但是對於mysql還是會從預設的安裝目錄/var/lib/mysql/裡找這個mysql.sock檔案,找不著,就不知道從哪裡啟動了。

為了驗證我的想法,我首先從轉移後的路徑做了個軟連線指向到mysql的預設目錄裡,如果mysql程式能連上說明想法是正確的。

ln –s /data/mysql/mysql.sock /var/lib/mysql/

做完軟連線,重啟mysql服務,再次通過mysql程式連線,沒有問題,可以連上了。

[root@host160 lib]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.71 Source distribution

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

那說明就是這裡的問題了。

其實不做軟連結也是可以的,只需要在/etc/my.cnf裡新增[mysql]欄位指定socket的位置到我們轉移後的位置即可

[mysql]
socket=/data/mysql/mysql.sock

 

作者: 付海軍
出處:http://fuhj02.cnblogs.com
版權:本文版權歸作者和部落格園共有
轉載:歡迎轉載,為了儲存作者的創作熱情,請按要求【轉載】,謝謝
要求:未經作者同意,必須保留此段宣告;必須在文章中給出原文連線;否則必究法律責任
個人網站: http://www.fuhaijun.com/

相關文章