【问题标题】:mysqldump is not saving user passwordmysqldump 没有保存用户密码
【发布时间】:2015-09-17 12:39:52
【问题描述】:

我正在使用 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 选项,因为有另一个数据库包含大量数据,我不希望在文件中。

【问题讨论】:

    标签: mysql mysqldump


    【解决方案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 语句包含您的密码

    【讨论】:

    • 谢谢!傻我... :)
    • 标准:创建脚本所花费的时间:5 分钟。这次找出问题所在所花费的时间:3 天 :)
    【解决方案2】:

    用户名和密码不是数据库的一部分,而是特殊的mysql数据库的一部分。如果要复制用户帐户,请转储 mysql 数据库并在另一端恢复它,然后使用flush privileges 命令刷新数据库中的用户表。

    【讨论】:

      【解决方案3】:

      每当您为任何用户分配权限时,条目都会按照以下方式进行-

      如果您要为所有数据库分配权限,例如 .,则条目将仅在用户表中。

      如果您像 mydb.* 一样分配权限 db 明智,那么用户表中将包含一个条目,其中包含具有“N”权限的所有权限并在此处保留用户密码,而 db 表中的第二个条目包含适当的权限。

      mysql db 包含以下用户权限-

      具有用户名和密码的全局权限(所有数据库):用户表 db 明智的权利:db 表 表中的明智权利:tables_priv 表 列中的权利:columns_priv 表。

      所以您正在检查 db 表,其中包含 db 明智的权限但不包含密码,因为密码仅存储在用户表中。

      【讨论】:

        猜你喜欢
        • 2013-11-23
        • 1970-01-01
        • 2013-12-09
        • 1970-01-01
        • 2021-09-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-14
        相关资源
        最近更新 更多