top
Loading...
2.9.2.1.與運行mysql_install_db有關的問題
2.9.2.1. 與運行mysql_install_db有關的問題

mysql_install_db 腳本的目的是生成新的MySQL授權表。它不覆蓋已有的MySQL授權表,并且它不影響任何其它數據。

如果你想要重新創建授權表,首先停止mysqld服務器(如果它正運行)。然后重新命名數據目錄下的MySQL目錄并保存,然后運行mysql_install_db。例如:

shell> mv mysql-data-directory/mysql mysql-data-directory/mysql-old
shell> mysql_install_db --user=mysql

本節列出了運行mysql_install_db時你可能遇到的問題:

·         mysql_install_db fails to install the grant tables

你會發現mysql_install_db不能安裝 授權表,顯示下面的消息后終止:

Starting mysqld daemon with databases from XXXXXX
mysqld ended

在這種情況下,你應該很小心地檢驗日志文件!日志文件應該位于目錄XXXXXX,用錯誤消息命名,并且應該指出為什么mysqld沒啟動。如果你不理解發生的事情,郵寄一份錯誤報告,包含日志文件!參見1.7.1.3節,“如何通報缺陷和問題”。

·         已經有一個amysqld進程在運行

表示服務器在運行,這種情況下可能已經創建了授權表。如果如此,則不再需要運行mysql_install_db,因為只需要運行一次(當你首次安裝MySQL)

·         當一個服務器正運行時,安裝第二個服務器不工作

這只有在當你已經有已存在的MySQL安裝但是想要把新安裝放在一個不同的地方時才會發生。例如,你可能已經有了一個產品安裝,但為了測試想要同時運行2個安裝。通常當你試著運行第二個服務器時,發生的問題是它試圖和第一個使用同樣的套接字和端口。在這種情況下,你將遇到錯誤消息:

Can't start server: Bind on TCP/IP port:
Address already in use
Can't start server: Bind on unix socket...

關于設置多個服務器的說明,參見5.12節,“在同一臺機器上運行多個MySQL服務器”。

·         你沒有 /tmp 的寫權限

如果你沒有寫權限在默認位置(/tmp)創建一個Unix套接字文件,或沒有在“/tmp創建臨時文件的許可,在運行mysql_install_dbmysqld服務器時,你將遇到一個錯誤。

你可以在開始mysql_install_dbmysqld之前執行以下命令指定一個不同的Unix套接字文件位置和臨時目錄:

shell> TMPDIR=/some_tmp_dir/
shell> MYSQL_UNIX_PORT=/some_tmp_dir/mysql.sock
shell> export TMPDIR MYSQL_UNIX_PORT

some_tmp_dir應該是你有寫許可的某個目錄的全路徑。

然后,你應當能夠用這些命令運行mysql_install_db并啟動服務器:

shell> bin/mysql_install_db --user=mysql
shell> bin/mysqld_safe --user=mysql &

如果mysql_install_db位于scripts目錄下,首先修改命令scripts/mysql_install_db

參見A.4.5節,“如何保護或更改MySQL套接字文件/tmp/mysql.sock”。請參見附錄F:環境變量

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/installing.html
北斗有巢氏 有巢氏北斗