Can't find file: './mysql/plugin.frm' (errno: 13)[mysql數據目錄遷移錯位]錯誤解決


 

大概需要4個步驟,其中第1步通過service mysql stop停止數據庫,第4步通過service mysql start啟動數據庫。

第2步移動數據文件,不知道是否為Ubuntu智能的原因,移動數據庫的時候,除了數據文件,連權限也一起帶過去了
root@T60:~#mv /var/lib/mysql /home/
我還在記錄/var/lib/mysql各目錄的權限,當mv完成之后,/home/下面的權限保留原來/var/lib/mysql的各類權限,其中有目錄,文件等等,連chown,chmod都給省事了。

本想這樣就沒事了,執行第4步一直啟動不了,看日志文件/var/log/mysql/error.log的結果是

/usr/sbin/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)100803

12:36:36 [ERROR] Can't open the mysql.plugin table.

Please run mysql_upgrade to create it.100803 12:36:36

InnoDB: Operating system error number 13 in a file operation.

InnoDB: The error means mysqld does not have the access rights to

InnoDB: the directory.

InnoDB: File name ./ibdata1InnoDB: File operation call: 'open'.

InnoDB: Cannot continue operation.

剛才mv過去的權限都是對的,不存在還有什么權限的問題,到網上搜索大部分都是redhat系列的系統,其中的SElinux對ubuntu不適用,還差點真用chcon來修改所謂的安全之類的權限了

其實,在my.cnf中注釋部分說明的很清楚

# * IMPORTANT# If you make changes to these settings and your system uses apparmor, you may# also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.

按照說明進行第3步,注釋掉原來的路徑,增加新的路徑,2行都要修改

root@T60:~# vi /etc/apparmor.d/usr.sbin.mysqld

# /var/lib/mysql/ r,# /var/lib/mysql/** rwk, 改為 /home/mysql/ r, /home/mysql/** rwk,

更新參數

root@T60:~# /etc/init.d/apparmor reload

* Reloading AppArmor profiles Skipping profile in /etc/apparmor.d/disable: usr.bin.firefox [ OK ]

修改完成后執行第4步root@T60:~# service mysql start
可以在日志中看見啟動成功
/var/log/mysql/error.log
100803 12:53:07 InnoDB: Started; log sequence number 0 5646278
100803 12:53:07 [Note] Event Scheduler: Loaded 0 events
100803 12:53:07 [Note] /usr/sbin/mysqld: ready for connections.
Version: ’5.1.41-3ubuntu12.4-log’ socket: ‘/var/run/mysqld/mysqld.sock’ port: 3306 (Ubuntu)

 

轉自《http://www.cnblogs.com/tangtianfly/archive/2012/12/28/2837403.html》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM