导出MySQL用户权限

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

 

1、生成用户权限的脚本

[root@HKBO ~]# more exp_grant.sh
#!/bin/bash
#Function export user privileges

pwd=123456
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

2、生成权限SQL脚本

[root@HKBO ~]# ./exp_grant.sh 

[root@HKBO ~]# head grants.sql
-- Grants for root@127.0.0.1
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY PASSWORD '*EB3EA446C759C9DA93F84FCB56430DBEF051A9DD' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON `CNBO0815`.* TO 'root'@'127.0.0.1' WITH GRANT OPTION;

-- Grants for root@172.16.10.%
GRANT ALL PRIVILEGES ON *.* TO 'root'@'172.16.10.%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9';

-- Grants for CNBO@192.168.1.%
GRANT USAGE ON *.* TO 'CNBO'@'192.168.1.%' IDENTIFIED BY PASSWORD '*ABD91BAD4A3448428563952E281015B237310EA8';
         ...........................

--Author : Leshami
--Blog   : http://blog.csdn.net/leshami

3、在目标服务器上执行脚本
将生成的脚本在目标服务器上执行即可。 mysql -uname -ppwd <grants.sql
需要注意:
a、目标服务上为非空服务器,已经存在一些账户及权限应考虑会覆盖的问题。
b、如果仅仅需要迁移非root用户,可以在原脚本中添加过滤条件,即 where user<>'root' 。

参考:
http://serverfault.com/questions/8860/how-can-i-export-the-privileges-from-mysql-and-then-import-to-a-new-server

时间: 2024-10-02 22:05:45

导出MySQL用户权限的相关文章

配置Mysql用户权限命令

查看用户权限:show grants for occ@localhost; 查看用户列表:select host,user,password from user; 先对密码加密:select password('testpwd');这样执行后 会得到一串字符串 赋予用户权限:grant all on fox.* to huli@localhost identified by password '*61DE32B297DFFDD9B848CB8F21C4BC0EDA6A48E1'; 插销用户权限:

MySQL用户权限管理详解_Mysql

用户权限管理主要有以下作用: 1. 可以限制用户访问哪些库.哪些表 2. 可以限制用户对哪些表执行SELECT.CREATE.DELETE.DELETE.ALTER等操作 3. 可以限制用户登录的IP或域名 4. 可以限制用户自己的权限是否可以授权给别的用户 一.用户授权 复制代码 代码如下: mysql> grant all privileges on *.* to 'yangxin'@'%' identified by 'yangxin123456' with grant option;  

查看 MySQL 用户权限

查看当前用户(自己)权限: show grants; 查看其他 MySQL 用户权限: show grants for aaa@localhost;

MySql用户权限控制

MySql用户权限控制 本文将介绍MySql创建帐号,删除帐号,设置和介绍各种帐号的权限 创建用户帐号:  www.bitsCN.com [sql] CREATE USER user_name IDENTIFIED BY 'your_password'; 改名 [sql] RENAME USER old_name TO new_name; 删除用户帐号 [sql] DROP USER user_name; 查看用户的权限可以用  www.bitsCN.com SHOW GRANTS FOR us

nginx、php-fpm、mysql用户权限解析

前几天学习了,在nginx下搭建wordpress博客.在<烂泥:使用nginx利用虚拟主机搭建WordPress博客>文章中,我们特别提到了有关程序运行在哪个用户下面. 这篇文章我们就特别来讲解下,nginx.php-fpm以及mysql运行在各个用户下的配置. 先来做个说明:nginx本身不能处理PHP,它只是个web服务器.当接收到客户端请求后,如果是php请求,则转发给php解释器处理,并把结果返回给客户端.如果是静态页面的话,nginx自身处理,然后把结果返回给客户端. Nginx下

MySQL用户权限(Host,User,Password)管理(mysql.user)

1:新增用户: 注:mysql数据库下user表中,Host和User为两个主键列(primary key),已经各版本下非空未设置默认字段. 登录后,切换db: mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database changed 新增用

撤销已经赋予给 MySQL 用户权限的权限

revoke 跟 grant 的语法差不多,只需要把关键字 "to" 换成 "from" 即可: grant all on *.* to aaa@localhost;   revoke all on *.* from aaa@localhost; 

向MySQL增加新用户权限

mysql|用户权限 你可以有2个不同的方法增加用户:通过使用GRANT语句或通过直接操作MySQL授权表.比较好的方法是使用GRANT语句,因为他们是更简明并且好像错误少些. 下面的例子显示出如何使用mysql客户安装新用户.这些例子假定权限根据以前的章节描述的缺省被安装.这意味着为了改变,你必须在mysqld正在运行同一台机器上,你必须作为MySQL root用户连接,并且root用户必须对mysql数据库有insert权限和reload管理权限.另外,如果你改变了root用户口令,你必须如

MySQL用户和权限管理

MySQL用户权限表 MySQL的认证是"用户"加"主机"而权限是访问资源对象,MySQL服务器通过权限表来控制用户对数据库的访问,权限表存放在mysql数据库中,由mysql_install_db脚本初始化.存储账户权限信息表主要有:user,db,tables_priv,columns_priv,procs_priv这五张表(5.6之前还有host表,现在已经把host内容整合进user表),五张表其含义分别是: user表 user表时MySQL中最重要的一个