签到成功

知道了

CNDBA社区CNDBA社区

TiDB 导出用户信息

2019-07-08 17:34 4767 0 原创 TiDB
作者: Marvinn

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

http://www.cndba.cn/Marvinn/article/3463

TiDB 支持 show grants 查看用户权限http://www.cndba.cn/Marvinn/article/3463

http://www.cndba.cn/Marvinn/article/3463

1、生成用户权限的脚本http://www.cndba.cn/Marvinn/article/3463http://www.cndba.cn/Marvinn/article/3463

# more exp_grant.sh

#!/bin/bash

ip="192.168.10.11"
port=4000
user="root" 
pwd="cecf159"

# Function export user privileges
expgrants()
{
  mysql -B -h${ip} -P${port} -u${user} -p${pwd} -N $@ -e "SELECT CONCAT(
    'SHOW GRANTS FOR ''', user, '''@''', host, ''';'
    ) AS query FROM mysql.user where user<>'root'" | /
  mysql -h${ip} -P${port} -u${user} -p${pwd} $@ | /
  sed 's//(GRANT .*/)//1;/;s/^/(Grants for .*/)/-- /1 /;/--/{x;p;x;}'

}

# Function export user password
setpassword()
{
  echo ""
  echo "-- USER PASSWORD SET"
  mysql -u${user} -h${ip} -P${port} -p${pwd} -N $@ -e "SELECT CONCAT('UPDATE mysql.user set password = ''', password, ''' where host = ''', host , ''' and user = ''', user ,''';') AS query FROM mysql.user where user<>'root'" 
  echo "flush privileges;" 
}

expusers()
{
 expgrants
 setpassword
}

expusers > ./grants.sql

2、生成权限SQL脚本

http://www.cndba.cn/Marvinn/article/3463
http://www.cndba.cn/Marvinn/article/3463http://www.cndba.cn/Marvinn/article/3463

# ./exp_grant.sh

3、在目标服务器上执行脚本 将生成的脚本在目标服务器上执行即可。

mysql -uname -ppwd <grants.sql

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

http://www.cndba.cn/Marvinn/article/3463
http://www.cndba.cn/Marvinn/article/3463

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
Marvinn

Marvinn

关注

路漫漫其修远兮、吾将上下而求索

  • 99
    原创
  • 0
    翻译
  • 2
    转载
  • 36
    评论
  • 访问:458385次
  • 积分:449
  • 等级:中级会员
  • 排名:第12名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ