目前PolarDB 不支持直接导入用户和权限信息,您可以手动将用户和权限数据从MySQL 数据库的系统表导出,然后将其导入到PolarDB。以下是详细步骤:
1. 在自建MySQL中导出用户和权限数据(以mysql.user表为例):
mysqldump -u root -p --databases mysql --tables user > mysql_users.sql
2. 筛选用户以及权限
因为PolarDB MySQL 高权限账户权限限制以及保留用户限制,自建数据库中的用户名可能与PolarDB造成冲突,自建数据库中的用户权限可能会高于高权限账户,所以在导出 mysql.user 表的数据后,需要将PolarDB中的保留用户去除,并且将PolarDB 高权限账户所没有的权限置为'N'
PolarDB 默认的保留用户为: root,aurora,replicator,mysql.infoschema,mysql.session,mysql.sys
PolarDB 高权限账户拥有的权限为:
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER, SERVERS_ADMIN WITH GRANT OPTION
筛选后,在 mysql_users.sql 中仅保留nsert into mysql.user values xxxxx 语句
3. 将数据导入至 PolarDB
mysql -h <Polardb_Hostname> -u <Polardb_Username> -p < mysql_users.sql
4. 刷新权限 & 验证权限
在PolarDB数据库中,刷新用户权限,以确保导入的用户和权限数据立即生效:
FLUSH PRIVILEGES;
刷新权限后,在PolarDB上正确验证用户和权限,以确保用户和权限已经成功导入并可以按预期运行。
以上是mysql.user表(对应user 以及 user的全局权限)的操作示例。对于user 在DB级别、以及table、column等层级权限的导入,需要将mysql.db、mysql.tables_priv等表进行导入。