mysql数据库权限转移_Mysql 用户权限与密码同步迁移

本文介绍如何在迁移MySQL数据库时,使用脚本批量创建用户并迁移权限,包括使用`grantUSAGE`命令、`createuser`替换以及权限恢复步骤。特别适用于RDS迁移场景,省时高效地管理用户权限。
摘要由CSDN通过智能技术生成

一、背景

如果是整个实例迁移的,可以直接备份恢复mysql库,对于一些场景没迁移mysql库,如阿里云RDS迁移时使用了DTS工具,源实例数据库账号也比较多,不适合一个个重建

二、脚本创建用户和迁移密码

SELECT CONCAT('grant USAGE on ',user,'.* to \'', user,'\'@\'', host, '\' IDENTIFIED WITH \'mysql_native_password\' AS \'',authentication_string,'\' REQUIRE NONE PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK;') FROM mysql.user WHERE user != 'cc_dba' AND user != 'root' AND user != '' and user !='testAdmin'最终样式

grant USAGE on test.* to 'test'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*BBBB52A57EA9E648FFDEFBA69458608E20984721';这里可以使用“ create user ” 替代 “grant USAGE on test.* to ” 5.7 grant 命令默认可以新建用户

迁移用户权限

#拿到所有用户

shell>/usr/local/mysql/bin/mysql --socket=/usr/local/mysql/mysql.sock -B -N -uroot -pca -e "SELECT CONCAT('\'', user,'\'@\'', host, '\'') FROM user WHERE user != 'cc_dba' AND user != 'root' AND user != '' and user !='testAdmin'" mysql > /admin/mysql_all_users.txt

#拿到所有权限

shell>cd /home/admin

shell> while read line; do /usr/local/mysql/bin/mysql --socket=/usr/local/mysql/mysql.sock -B -N -uroot -pca -e "SHOW GRANTS FOR $line"; done < mysql_all_users.txt > mysql_all_users_sql.sql

#行尾加分号

shell>sed -i 's/$/;/' mysql_all_users_sql.sql

#刷新权限

shell>echo "flush privileges;" >> mysql_all_users_sql.sql

#执行SQL

mysql> source /home/admin/mysql_all_users_sql.sql;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值