重新啟動伺服器後,我無法啟動 mysql:
$ sudo service mysql start
$ Starting MySQL. ERROR! Manager of pid-file quit without updating file.
“/var/log/mysqld.log”顯示:
150225 21:39:49 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 150225 21:39:49 [Note] Plugin 'FEDERATED' is disabled. /usr/local/mysql/bin/mysqld: Table 'mysql.plugin' doesn't exist 150225 21:39:49 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 150225 21:39:49 InnoDB: Initializing buffer pool, size = 8.0M 150225 21:39:49 InnoDB: Completed initialization of buffer pool InnoDB: Log scan progressed past the checkpoint lsn 0 37356 150225 21:39:49 InnoDB: Database was not shut down normally! InnoDB: Starting crash recovery. InnoDB: Reading tablespace information from the .ibd files... InnoDB: Restoring possible half-written data pages from the doublewrite InnoDB: buffer... InnoDB: Doing recovery: scanned up to log sequence number 0 44233 150225 21:39:49 InnoDB: Starting an apply batch of log records to the database... InnoDB: Progress in percents: 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 InnoDB: Apply batch completed 150225 21:39:49 InnoDB: Started; log sequence number 0 44233 150225 21:39:49 [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 150225 21:39:49 mysqld_safe mysqld from pid file /var/lib/mysql/iZ23aa67ovhZ.pid ended
而且我的硬碟未滿。
這是 /var/lib/mysql 的狀態:
drwxrwxrwx 2 mysql root 4096 Feb 26 16:43 . drwxr-xr-x. 21 root root 4096 Feb 25 19:38 .. -rw-rw---- 1 mysql mysql 10485760 Feb 25 19:38 ibdata1 -rw-rw---- 1 mysql mysql 5242880 Feb 26 16:43 ib_logfile0 -rw-rw---- 1 mysql mysql 5242880 Feb 25 19:38 ib_logfile1
這裡是 /etc/my.cnf:
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
伺服器上沒有 mysql_install_db:
bash: mysql_install_db: command not found
當我執行 mysql_safe 時,它顯示:
150226 16:58:50 mysqld_safe Logging to '/var/log/mysqld.log'. 150226 16:58:50 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql 150226 16:58:50 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended
多謝!
答案1
150225 21:39:49 [錯誤] 致命錯誤:無法開啟和鎖定權限表:表格「mysql.host」不存在
要解決這個問題,你只需告訴 mysql 去哪裡查找,而不是預設安裝被移動。您可以透過以下方式做到這一點:
mysql_install_db –user=mysql –ldata=/newlocation
一旦你這樣做了,你就可以重新啟動 mysql
/etc/init.d/mysqld restart
如果沒有幫助:
- 使用卸載mysql
yum remove mysql*
- 遞歸刪除
/usr/bin/mysql
和/var/lib/mysql
- 文件也刪除了
/etc/my.cnf.rmp
- 用於
ps -e
檢查進程以確保 mysql 沒有仍在運行。 - 重新啟動伺服器
reboot
- 然
yum install mysql-server
。這似乎也將 mysql 客戶端安裝為依賴項。 - 給 mysql 擁有權和群組權限與
chown -R mysql /var/lib/mysql
和chgrp -R mysql /var/lib/mysql
- 用於
service mysqld start
啟動 MySQL 守護程式。
150225 21:39:49 InnoDB:資料庫沒有正常關閉! InnoDB:開始崩潰復原。 InnoDB:從 .ibd 檔案讀取表空間資訊... InnoDB:從雙寫恢復可能的半寫入資料頁 InnoDB:緩衝區...
這是崩潰後的正常輸出。 InnoDB 被設計為在這些情況下自動恢復,但這可能需要一些時間。通常是幾分鐘,但如果崩潰發生在記憶體中有數千頁已修改資料並且磁碟速度很慢的情況下,則可能需要幾個小時。
InnoDB在大多數情況下可以自行恢復,不會遺失資料。
要開始恢復,首先,您必須使用 /etc/my.cnf 中的「innodb_force_recovery」指令。如果您對此不熟悉,請閱讀以下文檔,http://dev.mysql.com/doc/refman/5.0/en/forcing-innodb-recovery.html。如果您熟悉,請繼續。
有時,InnoDB只會受到中等程度的損壞,並且可以自行修復。將「innodb_force_recovery = #」新增至 /etc/my.cnf 的 [mysqld] 部分下的新行。確保將 # 替換為您需要的恢復幅度。如果您嘗試使用超過 4 的量級,您將面臨進一步損壞的極大風險,這意味著您的時間和精力將毫無意義。在本例中,由於我們正在嘗試自我修復,因此僅使用 1 或 2。成功修復自身。