2016-08-09 210 views
0

我用命令獲取的數據庫的一個MySQL轉儲:填充mysql數據庫

mysqldump --single-transaction --all-databases --flush-privileges -h HOST -u USER -p PASSWORD 

我故意用--all-databases標誌,以確保我得到了所有我所創造的用戶和他們授予的權限。但是當我以root用戶的身份運行導入新數據庫時,出現此錯誤:Access denied for user 'root'@'%' to database 'mysql'

是否有將用戶和權限從一個數據庫複製到另一個數據庫的不同方法?

回答

0

我使用SHOW GRANTS語句來獲得特權,例如:

SHOW GRANTS FOR [email protected]'%' 

它返回是這樣的:

Grants for [email protected]%                             
-------------------------------------------------------------------------------------------------- 
GRANT USAGE ON *.* TO 'foo'@'%' IDENTIFIED BY PASSWORD '*B3CD------------------------------------' 
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE TEMPORARY TABLES, EXECUTE ON `db`.* TO 'foo'@'%' 
GRANT SELECT ON `mysql`.`proc` TO 'foo'@'%' 

我可以輕鬆地輸出,加上分號語句結束,進行其他必要的修改,並在另一個數據庫上執行它們。

只需重複說明,無論哪個用戶我需要遷移。

+0

我想這適用於此。但這有點痛苦。有沒有更簡化的方法?謝謝! – jamesatha

+0

可能有更簡化的方法。這就是我如何做到的。至於採取MySQL數據庫的mysqldump,然後試圖將批量導入到不同的數據庫中......這不是我會做的事情,因爲mysql數據庫中有很多表除了user,db和tables_priv。我還沒有看到(或尋找)關於做這樣的事情的任何指示/警告。至於實際的錯誤信息,我期望這是因爲用戶'root @'%''沒有被定義或錯誤的密碼。 DML更改特權表需要FLUSH PRIVILEGES才能生效。 – spencer7593