2015-09-17 56 views
0

我正在使用mysqldump來保存我的數據庫,現在想要完全重建它,包括數據庫,用戶和用戶權限。mysqldump沒有保存用戶密碼

mysqldump --databases my_db mysql -u root -p > mysqldump.sql 

這將生成SQL來創建數據庫和它創建的下表中的用戶:

INSERT INTO db VALUES( '本地主機', 'MY_DB', 'my_user', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'N', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y','Y 」, 'Y', 'Y', 'Y', 'Y', 'Y');

但是,用戶的密碼並未出現在文件的任何位置,我不清楚在重新創建數據庫後如何使用用戶訪問數據庫。

我不能使用--all-databases選項,因爲有另一個數據庫有大量的數據,我不想在文件中。

回答

1

您正在尋找在轉儲不正確的表: 看看錶:

CREATE TABLE `user` (
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '', 
`User` char(80) COLLATE utf8_bin NOT NULL DEFAULT '', 
`Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL Etc 

後的INSERT語句包含的密碼

+0

謝謝!傻我... :) – user984003

+0

標準:花在創建腳本上的時間:5分鐘。花費在計算錯誤發生的時間:3天:) –

0

用戶名和密碼不是數據庫的一部分,但是是特殊的mysql數據庫的一部分。如果要複製用戶帳戶,請轉儲mysql數據庫並在另一端恢復它,然後使用flush privileges命令刷新數據庫中的用戶表。

0

每當你分配權限的任何用戶則條目變成如下所示 -

如果您正在爲所有dbs分配權限,如然後入口將只在用戶表中。

如果您指定權限DB明智像MYDB。*然後一個表項纔會在其中包含與「N」許可&保持用戶密碼那裏,其中包括適當的權限db表第2項中的所有用戶privilegs表。

MySQL數據庫包含用戶的權限如下─每

全局權限(所有DB)與用戶ANME和密碼:用戶表 DB明智的權利:db表 表明智權:tables_priv表 逐列權限在:columns_priv表中。

所以你正在檢查數據庫表,其中包含數據庫明智的權利,但沒有密碼作爲密碼只存儲在用戶表。