在啓動mysql的時候,可能會遇到各種各樣的問題,然而這時候還找不到錯誤日誌,只是在屏幕上顯示:
Starting MySQL. ERROR! Manager of pid-file quit without updating file.
那麼我們就來看看如何解決這些問題。
在沒有錯誤日誌的情況下,很難排查錯誤,因此我們可以使用另一種方式來使其生成錯誤信息:
/usr/local/mysql/bin/mysqld 或者 /usr/local/mysql/bin/mysqld_safe
這樣就顯示會在數據目錄下生成一個.rr的文件,這裏面就包含我們遇到的錯誤信息。
那麼錯誤有哪些呢,筆者歸類了一下這幾天實驗中遇到的,與大家分享:
1、/usr/local/mysql/bin/mysqld: File './mysql-bin.index' not found (Errcode: 13)
關於這個錯誤,其實就是權限的問題,我們知道,mysql是不方便直接用root用戶來啓動的(當然啦,如
果你非要用的話也可以,但是不安全,這裏不加贅述),因此我們需要創建一個叫mysql的用戶,然後把
安裝目錄和數據目錄的所屬主和所屬組全部改成mysql,這樣就解決了上面的錯誤。但是注意,如果在啓
動過程還是不順利,遇到其它各種錯誤的話,這兩個目錄的權限可能又會發生更改,所以我們可能要再
次去修改權限。
2、mysqld: Table 'mysql.plugin' doesn't exist
如果日誌裏出現這樣的錯誤,說明我們需要重新初始化一下數據庫,如果沒有初始化數據庫的話,就不
能生成守護進程。
初始化數據庫命令:
/usr/local/mysql/scripts/mysql_install_db --user=mysql basedir=/usr/local/mysql datadir=/data/mysql
注意,這裏進行初始化的時候一定加上安裝目錄和數據目錄的路徑,因爲這樣的錯誤提示是說啓動的時
候找不到內置數據庫,而指定數據庫目錄之後再次進行初始化就可以解決這個問題了。
3、ERROR: 1136 Column count doesn't match value count at row 1
這是因爲寫的SQL語句裏列的數目和後面的值的數目不一致,比如我們插入數據操作:insert into 表名
(field1,field2,field3) values('a','b')這樣前面的是三列,後面卻只有二個值,這就會出現這個
錯誤。
但是這個錯誤與啓動mysql服務貌似並不影響,如果重新安裝後啓動不了,出現這個錯誤的話,說明原有
的安裝信息沒有刪除乾淨。
4、[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] /usr/local/mysql/bin/mysqld: unknown variable 'performance_schema=0'
如果遇到了這個錯誤,說明安裝的mysql不支持,或者沒有innodb引擎,但是配置文件/etc/my.cnf中是
使用innodb來工作的,這就出現了錯誤。
解決方法:
a、更改配置文件,將與innodb有關的配置信息刪除
b、動態加載innodb引擎:
先修改配置文件使mysql可以正常啓動,刪除數據目錄下的ibdata1,ib_datafile0,ib_datafile1文件,
啓動服務之後登錄到mysql中,使用命令 INSTALL PLUGIN InnoDB SONAME 'ha_innodb_plugin.so'; 這
樣就可以成功加載innodb引擎了(一定要先刪除數據目錄的那幾個文件,不然加載innodb會出錯)。
5、'--skip-locking' is deprecated and will be removed in a future release. Please use '--
skip-external-locking' instead.
遇到這個錯誤,我們將配置文件/etc/my.cnf中的skip-locking字段改爲skip-external-locking字段即
可解決。