我正在使用mysqldump保存我的数据库,现在想要完全重建它,包括数据库,用户和用户权限。
mysqldump --databases my_db mysql -u root -p > mysqldump.sql
这将生成用于创建数据库的sql,并在下表中创建用户:
INSERT INTO db
VALUES('localhost','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选项,因为有另外一个包含大量数据的数据库,我不想在文件中使用它。
答案 0 :(得分: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语句包含您的密码
答案 1 :(得分:0)
用户名和密码不是数据库的一部分,但是是特殊mysql数据库的一部分。如果要复制用户帐户,请转储mysql数据库并在另一端恢复,然后使用flush privileges
命令刷新数据库中的用户表。
答案 2 :(得分:0)
每当您为任何用户分配权限时,请按以下条目进行输入 -
如果您要为所有dbs分配权限,例如。,则只能在用户表中输入。
如果您像mydb。*那样分配权限db,那么一个条目将进入用户表,其中包含具有'N'权限的所有权限&在那里保留用户密码和db表中包含适当权限的第二个条目。
mysql db包含以下用户权限 -
使用用户anme和密码的全局权限(所有数据库):用户表 db明智的权限:db表 表明权限:tables_priv表 列明智的权利:columns_priv表。
因此,您正在检查db表,其中包含db明智权限但不包含密码,因为密码仅存储在用户表中。