服務器上的mysql默認數據目錄爲/var/lib/mysql/,同時服務器的/空間不是很大,而近期又有大量的日誌須要導入進行分析,時常搞得/的空間捉襟見肘,晚上一狠心就想把mysql的數據目錄轉移到另一塊硬盤/data中。mysql
因而關閉mysql服務:sql
service mysqld stop服務器
轉移mysql數據目錄socket
mv /var/lib/mysql/ /data/ide
編輯my.cnf網站
vi /etc/my.cnf日誌
修改其中的datadir和socket到新的路徑server
[mysqld]
datadir=/data/fuhj/mysql
socket=/data/fuhj/mysql/mysql.sockblog
本覺得修改完啓動mysql服務以後就沒問題了。get
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/