注:rpm安裝mysql,默認的mysql的主目錄是【/var/lib/mysql/】,也就是mysql主要的數據文档的存放目錄
現在需要把這些文档放到數據盤。假設數據盤掛載到了/data裡, 數據都在/data/mysql, 那麽,遷移步驟如下:
1:遷移工作
1.1:停止mysql服務
service mysql stop
1.2:複制數據庫到數據盤
我的數據盤目錄是/data
>cd /data >mkdir mysql >cd mysql >cp -r /var/lib/mysql/* ./
1.3:把新建的目錄改爲mysql的用戶組
不是表面上看到所有者是mysql就可以略過這一步的, 這一步無論如何都必須要執行!
chown -R mysql:mysql /data/mysql/
1.4:配置/etc/my.cnf
datadir = /data/mysql # 如果你有以下兩行類似配置, 你也需要修改目錄! innodb_data_home_dir = /data/mysql innodb_log_group_home_dir = /data/mysql
1.5:啓動mysql服務
>service mysql start
2:常見問題Q&A
2.1 首先遷移完的目標目錄的權限問題。
ERROR! The server quit without updating PID file 1
這個是權限問題,mysql沒有這個目錄下的權限
因爲剛複制過來的mysql文档的擁有者是root,所以要改變該目錄的擁有者,執行下面命令來改變
chown -R mysql:mysql /data/mysql/
2.2 用mysql客戶耑連接不上服務器
Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock'1
其實是你的mysql的配置文档沒有配置正確。
mysql啓動如果沒有讀到
[client] socket = /data/mysql/mysql.sock port = 3306 host = localhost
這些配置,則mysql會默認找 /var/lib/mysql/mysql.sock文档,
如果要解決這個問題就需要把上面的東西加入到你的/etc/my.cnf配置文档中。
下面普及下mysql的有關配置文档的知識,以前我也是迷迷糊糊,現在搞清楚了一些。
用 service mysql start 命令啓動mysql,mysql會默認找/etc/my.cnf 配置文档,如果沒有找到,則會按照默認的啓動目錄來啓動mysql
就是【/var/lib/mysql】
會在此目錄下生成 10-4-19-161.pid 類似的pid文档 和 sock文档【mysql.sock】
但是如果你建立的了my.cnf 文档則mysql會按照你的配置文档來啓動mysql。
2.3 用戶密碼過期問題
Your password has expired. To log in you must change it using a client that supports expired passwords1
則需要修改 mysql的用戶表
剛開始以爲修改用戶密碼就可以解決密碼過期的問題,其實不是的。需要修改msyql.user表的 password_expired值
Y表示已經過期,需要修改成N。
首先在本機進入mysql
>mysql -uroot -pxxxxx
>use mysql>select host,user,password_expired from user; +-------------+----------+------------------+| host | user | password_expired | +-------------+----------+------------------+| localhost | root | Y | | 10-4-19-161 | root | Y | | 127.0.0.1 | root | Y | | localhost | data | N || 127.0.0.1 | shangbao | N | +-------------+----------+------------------+
如果有些是Y,則需要吧哪些是Y的改爲N。
update set user.password_expired = ‘N’ where user.user = ‘root’;
root是你密碼過期的用戶
然後刷新權限
>flush privileges;
因爲mysql的權限是啓動的時候緩存起來的,如果修改的用戶的權限,需要手動刷新用戶權限才會生效