萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> MySQL無法啟動:Table mysql.host doesn t exist

MySQL無法啟動:Table mysql.host doesn t exist

MySQL無法啟動:Table \'mysql.host\' doesn\'t exist,下面我來介紹如何解決這個問題。 安裝很順利但無法啟動,想了想可能是之前誤操作/var/目錄的權限,導致沒有寫權限導致的。但重新設置寫權限之後仍不能正確啟動。

提示:

Timeout error occurred trying to start MySQL Daemon.
Starting MySQL:  [FAILED]

檢查了MySQL的日志(cat /var/log/mysqld.log)發現提示一個錯誤([ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist),如圖:

猜測可能是MySQL的默認數據庫沒正常安裝,但卸載MySQL(yum remove mysql-server)再重裝(yum install mysql-server)還是不行,現象和原來一樣。後來找到一個專門安裝默認數據庫的命令:mysql_install_db,執行之後,再啟動MySQL(/etc/init.d/mysqld start)終於看到久違的OK:

 代碼如下 復制代碼

# /etc/init.d/mysqld start
Starting MySQL:  [  OK  ]


問題二

用safe_mysqldq啟動的時候,出現

Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

最終解決方法如下:

在mysql的安裝目錄下,我的是/usr/local/mysql

 代碼如下 復制代碼

./scripts/mysql_install_db   --usrer=mysql  --datadir=/usr/local/mysql/data/

原因是重裝的時候數據目錄不一致導致


問題三

說一下我解決的過程:

按照mysql的安裝步驟:

 代碼如下 復制代碼 shell> groupadd mysql
shell> useradd -g mysql mysql
shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
shell> cd mysql-VERSION
shell> ./configure --prefix=/usr/local/mysql
shell> make
shell> make install
shell> scripts/mysql_install_db --user=mysql
shell> chown -R root /usr/local/mysql
shell> chown -R mysql /usr/local/mysql/var
shell> chgrp -R mysql /usr/local/mysql
shell> cp support-files/my-medium.cnf /etc/my.cnf
shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &

這樣標准進行下來是沒有問題的,但在最後一步啟動mysql的時候我希望將數據庫的數據文件放在另外一個目錄下面,啟動命令修改為:

 代碼如下 復制代碼 shell>/usr/local/mysql/bin/mysqld_safe --user=mysql --log-error=/u01/mysql/mysql_error/error --datadir=/u01/mysql/data

這個時候就出現問題了, 因為在進行初始化數據庫權限表的那一步的時候默認創建的權限表在默認目錄/usr/local/mysql/var下面,這就造成了,上面的錯誤無法找到 權限表:Can't open and lock privilege tables: Table 'mysql.host' doesn't exist

解決辦法 在運行初始化權限表的時候使用增加參數--datadir ,命令格式為:

 代碼如下 復制代碼 shell> scripts/mysql_install_db --user=mysql --datadir=/u01/mysql/data

 

copyright © 萬盛學電腦網 all rights reserved