Jus*_*tin 7 mysql permissions users
我需要导出所有 MySQL 数据库用户(包括权限)以进行迁移。有超过 5,000 个用户,这样做的最佳方法是什么?
我应该把mysql.user桌子扔掉吗?
Rol*_*DBA 10
如果您将用户移动到另一个运行相同 MySQL 主要版本的数据库服务器,复制mysql.user是不够的。如果用户有权访问特定数据库,则复制mysql.user会带来用户和密码。
然后,您必须复制以下内容
mysql.db 用于数据库级授权mysql.tables_priv 表级赠款mysql.columns_priv 对于列级赠款这是转储它的合乎逻辑的方法:作为 SQL GRANT 命令!!!
如果你已经安装了 Percona Toolkit,运行pt-show-grants到一个文本文件
GRANT_FILE=MyDatabaseUSers.sql
pt-show-grants -uroot -p > ${GRANT_FILE}
Run Code Online (Sandbox Code Playgroud)
如果你没有 Percona Toolkit 并且迫不及待,这是我个人的模拟
GRANT_CMDS=/tmp/ShowGrantsToExport.sql
GRANT_FILE=MyDatabaseUSers.sql
MYSQL_USER=root
MYSQL_PASS=rootpassword
MYSQL_CONN="-u${MYSQL_USER} -p${MYSQL_PASS}"
SQL="SELECT CONCAT('SHOW GRANTS FOR ',QUOTE(user),'@',QUOTE(host),';')"
SQL="${SQL} FROM mysql.user WHERE user<>'' AND host<>''"
mysql ${MYSQL_CONN} -ANe"${SQL}" > ${GRANT_CMDS}
mysql ${MYSQL_CONN} < ${GRANT_CMDS} | sed 's/$/;/g' > ${GRANT_FILE}
Run Code Online (Sandbox Code Playgroud)
在新的 DB Server 上,迁移数据后,以 root 身份登录 mysql 并运行
mysql> source MyDatabaseUSers.sql
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16821 次 |
| 最近记录: |