zoukankan      html  css  js  c++  java
  • MySQL中导出用户权限设置的脚本

        在对MySQL数据库进行迁移的时候,有时候也需要迁移源数据库内的用户与权限。对于这个迁移我们可以从mysql.user表来获取用户的相关权限来生成相应的SQL语句,然后在目标服务器上来执行生成的SQL语句即可。本文提供了两个生成提取用户权限的脚本并给出演示。

        说明:mysql中直接通过授权即可使用对应用户,不必使用创建用户命令(如CREATE USER 'xxx'@'%' IDENTIFIED BY 'XXX';)先建用户再授权。

    方法一:该脚本可以将所有授权数据到当前目录下的sql脚本(grants.sql)中,使用grants.sql脚本刷到数据库中即可完成授权数据迁移(注意:这里导出的数据包含root用户的授权关系,而且导入之后会把目前已有的数据覆盖掉,请确认需要覆盖再进行导入!!)

    #!/bin/bash  
    #Function export user privileges  
    
    pwd=root123
    expgrants()  
    {
      mysql -B -u'root' -p${pwd} -N $@ -e "SELECT CONCAT('SHOW GRANTS FOR ''', user, '''@''', host, ''';') AS query FROM mysql.user" | mysql -u'root' -p${pwd} $@ | sed 's/(GRANT .*)/1;/;s/^(Grants for .*)/-- 1 /;/--/{x;p;x;}'
    }
    expgrants > ./grants.sql
    注意:上述代码中,需要根据实际情况(mysql的root用户的密码)替换pwd的值。将上述代码拷贝后,新建并贴到shell脚本(如exp_grants.sh)中执行该脚本即可完成数据库用户授权导出。

    方法二:该脚本可以将所有授权数据到当前目录下的sql脚本(create-users.sql)中,使用create-users.sql脚本刷到数据库中即可完成授权数据迁移(注意:这里导出的数据包含root用户的授权关系,而且导入之后会把目前已有的数据覆盖掉,请确认需要覆盖再进行导入!!)

    #!/bin/bash  
    #Function export user privileges  
    hostname=localhost
    username=root
    password=root123
    port=3306
    echo "select concat('show grants for ''',user,'''@''',host, ''';') from mysql.user " | 
    mysql --host=$hostname --user=$username --password=$password --port=$port -N | 
    mysql --host=$hostname --user=$username --password=$password --port=$port -N | 
    sed "s/$/;/" > create-users.sql
    注意:上述代码中,需要根据实际情况替换hostname、username、password、port的值。将上述代码拷贝后,新建并贴到shell脚本(如exp_grants.sh)中执行该脚本即可完成数据库用户授权导出。


    以上两个文件导出后的脚本(grants.sql及create-users.sql)中内容类似如下片段:

    -- Grants for root@% 
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*FAAFFE644E901CFAFAEC7562415E5FAEC243B8B2' WITH GRANT OPTION;
    
    -- Grants for skyleo@% 
    GRANT ALL PRIVILEGES ON *.* TO 'aaa'@'%' IDENTIFIED BY PASSWORD '*E6A7BF712C9294EEF165FC1CD0AD04FABC5E1136' WITH GRANT OPTION;
    
    -- Grants for skyleo1@% 
    GRANT ALL PRIVILEGES ON *.* TO 'aaa1'@'%' IDENTIFIED BY PASSWORD '*1E9DC9809EBE1D5089616868F2DE14B375DACF64' WITH GRANT OPTION;
    
    -- Grants for skyleo2@% 
    GRANT ALL PRIVILEGES ON *.* TO 'aaa2'@'%' IDENTIFIED BY PASSWORD '*A601FAAA6AB2D539501BA7FE6E816D499207BA76' WITH GRANT OPTION;


  • 相关阅读:
    js学习(4) 函数
    Js学习(3) 数组
    NGUI的UILabel
    unity模型部分替换
    工作流程
    unity 资源内存管理
    unity 跑酷demo
    unity动画相关
    unity之C#回调函数
    maya导入unity
  • 原文地址:https://www.cnblogs.com/huangmr0811/p/5570994.html
Copyright © 2011-2022 走看看