Mysql

如何導入mysql系統“mysql”數據庫

  • April 28, 2013

這個問題可能已經回答了,但幾乎不可能用Google搜尋它。

當我使用執行 mysql 伺服器的完整備份時

mysqldump --all-databases

然後從頭開始重新安裝我想導入所有數據庫的完整轉儲,包括“mysql”。

我通過執行成功地做到了

mysql -u -p < dumpfile

但現在即使所有使用者記錄都在mysql.user這些帳戶中,也無法正常工作。

我什至不能更改他們的密碼,我總是得到

ERROR 1133 (42000): 在使用者表中找不到任何匹配的行

重啟mysqld沒有幫助

回答:

它是通過執行修復的

MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.26 sec)

現在所有使用者都像以前一樣工作

mysqldump 實際上有一個選項可以FLUSH PRIVILEGES;在轉儲完成後執行

[root@**** ~]# mysqldump --help | grep privileges
 --flush-privileges  Emit a FLUSH PRIVILEGES statement after dumping the mysql
flush-privileges                  FALSE

鑑於此,您將執行

mysqldump --all-databases --flush-privileges > dumpfile

對 MySQL 實例執行 mysqldump 並重新載入回同一個 MySQL 實例不應取消需要您FLUSH PRIVILEGES;手動執行的使用者權限。這可能是 MariaDB 的問題。您應該在開發伺服器上進行測試。您還應該查看 MariaDB 的開放錯誤列表,看看這是否已經是一個已知問題。

--flush-privileges在過去的文章中推薦過使用

警告

請記住,贈款儲存在 RAM 中。執行FLUSH PRIVILEGES;只是讀取 mysql.user授權並將其重新載入到 RAM 中。你之前提到的錯誤資訊

ERROR 1133 (42000): 在使用者表中找不到任何匹配的行

可能不是指物理mysql.user表,而是它的記憶體副本。我再次強調,MariaDB 在重新載入時可能會錯誤地處理使用者授權。

讓我更擔心的是你重新啟動了 mysql (MariaDB) 並且授權仍然沒有工作?冒著聽起來多餘的風險,這可能是 MariaDB 的一個問題。您應該在開發伺服器上進行測試。您還應該查看 MariaDB 的開放錯誤列表,看看這是否已經是一個已知問題。

根據 Petr 更新的問題

它是通過執行修復的

MariaDB [mysql]> flush privileges;

,

Query OK, 0 rows affected (0.26 sec)

現在所有使用者都像以前一樣工作

引用自:https://dba.stackexchange.com/questions/35471