文档首页> > 常见问题> 通用型问题> 如何将源数据库的用户与权限导出,再导入到目标数据库?

如何将源数据库的用户与权限导出,再导入到目标数据库?

分享
更新时间: 2019/06/25 18:23
  1. 选择一台可以访问源数据库的虚拟机,执行如下命令,导出源数据库中原有用户的授权信息。

    mysql -h 'host' -B -u 'user' -p 'pwd' -N $@ -e "SELECT CONCAT('SHOW GRANTS FOR ''', user, '''@''', host, ''';') AS query FROM mysql.user" | mysql -h 'host' -u 'user' -p 'pwd' $@ | sed 's/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/-- \1 /;/--/{x;p;x;}' > ./grants.sql

    其中的'host' 替换为源数据库的访问IP地址,'user' 替换为源数据库的用户名,'pwd' 替换为源数据库的密码。

  2. 1中命令运行成功后,打开“grants.sql”文件可以看到类似以下的结果。

    -- Grants for root@%
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
    
    -- Grants for testt@%
    GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'testt'@'%';
    
    -- Grants for debian-sys-maint@localhost 
    GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' WITH GRANT OPTION;
    
    -- Grants for mysql.session@localhost
    GRANT SUPER ON *.* TO 'mysql.session'@'localhost'; 
    GRANT SELECT ON `performance_schema`.* TO 'mysql.session'@'localhost';
    GRANT SELECT ON `mysql`.`user` TO 'mysql.session'@'localhost';
    
    -- Grants for mysql.sys@localhost
    GRANT USAGE ON *.* TO 'mysql.sys'@'localhost'; 
    GRANT TRIGGER ON `sys`.* TO 'mysql.sys'@'localhost'; 
    GRANT SELECT ON `sys`.`sys_config` TO 'mysql.sys'@'localhost';
    
    -- Grants for root@localhost
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; 
    GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION;

  3. 2显示的结果中,可以看到源数据库中所有的用户以及对应的权限,请选择所有需要的用户,逐个添加到本云关系型数据库MySQL中,具体操作请参考《关系型数据库用户指南》中的“创建帐号”章节。
如果您喜欢这篇文档,您还可以:

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区