导出MySQL用户权限

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

1、生成用户权限的脚本

[[email protected] ~]# more exp_grant.sh
#!/bin/bash
#Function export user privileges

pwd=123456
expgrants()
{
  mysql -B -u‘root‘ -p${pwd} -N [email protected] -e "SELECT CONCAT(
    ‘SHOW GRANTS FOR ‘‘‘, user, ‘‘‘@‘‘‘, host, ‘‘‘;‘
    ) AS query FROM mysql.user" |   mysql -u‘root‘ -p${pwd} [email protected] |   sed ‘s/\(GRANT .*\)/\1;/;s/^\(Grants for .*\)/-- \1 /;/--/{x;p;x;}‘
}
expgrants > ./grants.sql

2、生成权限SQL脚本

[[email protected] ~]# ./exp_grant.sh 

[[email protected] ~]# head grants.sql
-- Grants for [email protected]
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 [email protected]%
GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘172.16.10.%‘ IDENTIFIED BY PASSWORD ‘*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9‘;

-- Grants for [email protected]%
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-07-30 10:18:06

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

mysql用户权限

mysql> show grants for [email protected]'localhost';+----------------------------------------------------------------------------------------------------------------------------------------+| Grants for [email protected] |+---------------------------

mysql用户权限管理

mysql数据在实际生产环境中大量被使用,那平时在做好服务器上防火墙策略以外平时,对mysql下的用户权限也要严格管理,mysql的用户权限都是放在mysql.user这张表里,平时的用户权限管理都是隐式使用着这张表的,先说下权限: 权限 意义 select 查询 insert 插入 update 更新 delete 删除记录,一般用于清空表或者某一条记录 create 创建 drop 删除,从表空间里删除 grant 授予,一般用于给用户授权 references 引用 index 索引 al

MySQL用户权限导致的创建Trigger失败

说来惭愧,MySQL一直处于只会用,不怎么理解的阶段.甚至是一些较为深层次的管理,都不怎么熟悉,得加强啊! 近日,系统测试,使用MySQL数据库,需要在某个表上创建触发器,数据库是在本机安装.但是,无论如何都无法创建触发器,后台错误信息如下: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: TRIGGER command denied to user 'root'@'mortimer-PC' for table 't_user

Mysql用户&权限管理

1.创建用户(相关表mysql.user) localhost root 本机 127.0.0.1  root 本机 ::1 root 本机 % cheng 远程用户(任意ip) 192.168.1.55 jake 远程用户(指定ip) 1).创建本地用户(只能在本机登陆本机数据库) create user 'cheng'@'localhost' identified by '123456';指定密码"123456". insert into mysql.user(Host,User,

MySQL用户权限详解

如果需要查看MySQL用户权限,应该如何实现呢?下面就为您介绍查看MySQL用户权限的方法,并对授予MySQL用户权限的语句进行介绍,供您参考. 查看MySQL用户权限: show grants for 你的用户 比如:show grants for [email protected]'localhost'; Grant 用法 GRANT USAGE ON *.* TO 'discuz'@'localhost' IDENTIFIED BY PASSWORD '*C242DDD213BE9C6F8

30.5. MySQL用户,权限,服务器配置,查询缓存及优化,索引等

MySQL用户和权限管理 元数据数据库:mysql系统授权表:db, host, usercolumns_priv, tables_priv, procs_priv, proxies_priv 用户账号:'USERNAME'@'HOST' @'HOST': 主机名 IP地址或Network可用通配符: % _示例:172.16.%.% 用户管理 创建用户:CREATE USERCREATE USER 'USERNAME'@'HOST' [IDENTIFIED BY 'password']:默认权

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

这篇文章我们就特别来讲解下,nginx.php-fpm以及mysql运行在各个用户下的配置. 先来做个说明:nginx本身不能处理PHP,它只是个web服务器.当接收到客户端请求后,如果是php请求,则转发给php解释器处理,并把结果返回给客户端.如果是静态页面的话,nginx自身处理,然后把结果返回给客户端. Nginx下php解释器使用最多的就是fastcgi.一般情况nginx把php请求转发给fastcgi管理进程处理,fastcgi管理进程选择cgi子进程进行处理,然后把处理结果返回给

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

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

mysql用户权限分配专栏

00x1创建新用户 通过root用户登录之后创建 grant all privileges on *.* to [email protected] identified by "123456" ; /创建新用户,用户名为testuser,密码为123456 : grant all privileges on *.* to [email protected] identified by "123456" ; /设置用户testuser,可以在本地访问mysql gra