如何導入mysql系統“mysql”數據庫
這個問題可能已經回答了,但幾乎不可能用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
在過去的文章中推薦過使用
Feb 03, 2012
:如何通過主從複製解決 mysql 中的主伺服器關閉/不可用問題Jan 19, 2012
:如何將 Mysql DB 伺服器複製到新伺服器?Dec 05, 2011
:使用 mysqldump 設置 MySQL slave 獲取初始數據Jun 26, 2011
:如何啟用 MySQL 所有可能的備份選項警告
請記住,贈款儲存在 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)
現在所有使用者都像以前一樣工作