创建用户前的准备工作
在 PolarDB 中创建用户前,需确保已完成以下准备工作:确认 PolarDB 集群状态正常,且具备管理员权限(如 root 或高权限账号);明确用户的应用场景(如只读查询、读写操作、管理权限等),以便合理分配权限;建议提前规划用户命名规则(如 app_user_01),避免与系统内置用户冲突。

创建用户的具体步骤
连接 PolarDB 数据库
使用 MySQL 客户端(如 MySQL Workbench、命令行工具)连接至 PolarDB 集群,连接命令示例如下:
mysql -h <集群地址> -P 3306 -u <管理员账号> -p
输入密码后,成功登录即可执行后续操作。
使用 CREATE USER 语句创建用户
基本语法如下:
CREATE USER '用户名'@'允许访问的主机' IDENTIFIED BY '密码';
- 用户名:自定义的用户标识,建议结合业务命名。
- 允许访问的主机:限制用户登录的 IP 地址, 表示任意主机(生产环境建议指定具体 IP,如
'192.168.1.%')。 - 密码:需符合复杂度要求(长度、字符类型等),建议定期更换。
示例:创建允许从任意主机登录的 app_read_user,密码为 Db@2023!:

CREATE USER 'app_read_user'@'%' IDENTIFIED BY 'Db@2023!';
授权用户权限
创建用户后,需通过 GRANT 语句分配权限,基本语法:
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'允许访问的主机' [WITH GRANT OPTION];
- 权限列表:如
SELECT(只读)、INSERT,UPDATE,DELETE(读写)、ALL PRIVILEGES(所有权限)。 - 数据库名.表名: 表示所有库表,
db_name.*表示指定库的所有表,db_name.tb_name表示指定表。 - WITH GRANT OPTION:允许用户将权限授予其他用户(仅高级权限需要)。
示例:授予 app_read_user 对 test_db 库的只读权限:
GRANT SELECT ON test_db.* TO 'app_read_user'@'%';
刷新权限使授权生效
执行以下命令确保权限立即生效:
FLUSH PRIVILEGES;
不同场景下的用户创建示例
场景1:只读用户(用于报表查询)
CREATE USER 'report_user'@'192.168.1.%' IDENTIFIED BY 'Report@123'; GRANT SELECT ON sales_db.* TO 'report_user'@'192.168.1.%'; FLUSH PRIVILEGES;
场景2:读写用户(用于业务应用)
CREATE USER 'app_writer'@'10.0.0.%' IDENTIFIED BY 'AppWriter$456'; GRANT INSERT, UPDATE, DELETE ON order_db.* TO 'app_writer'@'10.0.0.%'; FLUSH PRIVILEGES;
场景3:管理员用户(用于数据库维护)
CREATE USER 'dba_admin'@'localhost' IDENTIFIED BY 'DbaAdmin#789'; GRANT ALL PRIVILEGES ON *.* TO 'dba_admin'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;
PolarDB 用户权限管理最佳实践
- 最小权限原则:仅授予用户完成工作所必需的权限,避免过度授权。
- 定期审计权限:通过
SHOW GRANTS FOR '用户名'@'主机';检查用户权限,及时清理无用权限。 - 密码安全:强制使用强密码,并通过
ALTER USER定期更新密码,ALTER USER 'app_read_user'@'%' IDENTIFIED BY 'NewPassword@2024';
- 限制主机访问:生产环境禁止使用 ,改为指定 IP 或内网段,如
'10.0.0.%'。
常见用户操作命令
| 操作命令 | 功能描述 |
|---|---|
DROP USER '用户名'@'主机'; |
删除用户 |
RENAME USER '旧用户名'@'主机' TO '新用户名'@'主机'; |
修改用户名 |
SET PASSWORD FOR '用户名'@'主机' = PASSWORD('新密码'); |
修改密码 |
相关问答 FAQs
Q1:创建用户时提示 “Access denied for user” 如何解决?
A:该错误通常是由于当前登录账号权限不足导致,请确保使用具备 CREATE USER 和 GRANT 权限的账号(如 root)登录,若仍报错,可检查 PolarDB 集群的权限配置,或联系集群管理员提升当前账号权限。

Q2:如何限制用户只能访问特定 IP 地址?
A:在创建用户时,将 '允许访问的主机' 参数指定为 IP 地址或 IP 段,限制用户仅能通过 168.1.10 访问:
CREATE USER 'restricted_user'@'192.168.1.10' IDENTIFIED BY 'Password@123';
若需允许 IP 段访问,使用通配符,如 '192.168.1.%' 表示 168.1.0/24 网段,禁止使用 除非必要,以降低安全风险。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/67635.html