RDS MySQL 100%兼容开源MySQL,如需了解完整的SQL命令、函数、参数说明及使用限制,请参见 MySQL 参考指南(官方)。
数据库管理
类别 | SQL语法 | 示例 |
创建数据库 | -- 创建数据库
CREATE DATABASE <database name>;
-- 创建数据库并指定字符集与排序规则
CREATE DATABASE <database_name>
DEFAULT CHARACTER SET <charset>
COLLATE <collation>;
| -- 创建数据库app_db
CREATE DATABASE app_db;
-- 创建数据库app_db并指定字符集(建议使用utf8mb4,其支持更多字符)
CREATE DATABASE app_db
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
-- 创建数据库并指定中文字符集(适用于特定场景)
CREATE DATABASE cn_db
DEFAULT CHARACTER SET gbk
COLLATE gbk_chinese_ci;
|
删除数据库 | DROP DATABASE <database name>;
| DROP DATABASE app_db;
|
账号管理
类别 | SQL语法 | 示例 |
创建账号 | CREATE USER 'username'@'host' IDENTIFIED BY 'password';
| -- 创建允许从任意IP登录的账号(%表示允许任意IP连接)
-- 该方式与RDS控制台账号创建逻辑一致,后续可通过RDS控制台删除账号
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongPass123!';
-- 创建仅允许从指定网段登录的账号
-- 若创建账号时指定了IP或网段,后续通过RDS控制台删除账号会报错,需通过SQL命令删除
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPass123!';
|
删除账号 | DROP USER 'username'@'host';
重要 请勿使用DELETE FROM mysql.user WHERE User = '<username>' AND Host = '<host>'; 删除账号,此方式可能导致权限残留、元数据不一致等情况。 | -- 删除名app_user且只允许从192.168.1.x网段登录的账号
DROP USER 'app_user'@'192.168.1.%';
|
赋予权限 | GRANT SELECT ON db01.* TO 'username'@'host';
GRANT <privilege> ON <level> TO 'username'@'host';
-- <privilege>:如 SELECT、INSERT、UPDATE、DELETE、ALL PRIVILEGES
-- <level>:权限级别,如 db_name.*(库级)、db_name.table_name(表级)、*.*(全局)
说明 不支持通过GRANT ALL PRIVILEGES ON *.* 授予所有数据库的完全控制权限。 | -- 授予app_db库所有表的查询权限
GRANT SELECT ON app_db.* TO 'app_user'@'%';
-- 授予app_db库中users表的增删改查权限
GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.users TO 'app_user'@'%';
-- (谨慎使用)授予app_db库所有权限,仅允许来自192.168.1.x网段的客户端连接
GRANT ALL PRIVILEGES ON app_db.* TO 'admin_user'@'192.168.1.%';
|
查询账号权限 | -- 所有实例中所有已创建的账号及其允许登录的主机地址
SELECT user, host FROM mysql.user;
-- 查看账号权限
SHOW GRANTS FOR 'username'@'host';
说明 对于早期版本,若查询mysql.user 报错,可改为查询mysql.user_view 视图。 | -- 查看账号app_user从192.168.1.%主机登录时拥有的所有数据库权限
SHOW GRANTS FOR 'app_user'@'192.168.1.%';
|
回收账号权限(账号依然存在) | 收回全部权限:撤销该账号在所有数据库上的所有操作权限和授权能力 REVOKE ALL PRIVILEGES,GRANT OPTION FROM 'username'@'host';
收回指定权限:撤销该账号在所有数据库的所有表上执行UPDATE的权限(权限类型按需变更即可) REVOKE UPDATE ON *.* FROM 'username'@'host';
说明 回收权限不会删除账号,如需彻底删除,请配合DROP USER 使用。 | --撤销账号app_user从192.168.1.%登录时在所有数据库上的全部操作权限和授权能力
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'app_user'@'192.168.1.%';
-- 撤销用户app_user从10.10.0.%登录时对shop_db库中users表的修改数据权限
REVOKE UPDATE ON shop_db.users FROM 'app_user'@'10.10.0.%';
|
常见问题
通过RDS控制台删除账号报错?
问题描述
在RDS MySQL控制台账号管理页面删除用户时报错删除账户失败,请检查输入的参数或请求。实例中可能存在其他进程正在等待锁,或者该数据库账户的host值未设置为%,即允许任意主机登录。

解决方案
通过RDS MySQL控制台创建的用户账号默认主机白名单为%
,即允许任意主机访问。若账号是通过SQL命令手动创建,且创建时指定了仅允许IP或网段登录(如'username'@'10.10.10.1'
或'username'@'10.%.%.%'
),则该账号无法通过RDS控制台删除。
请执行如下SQL先查询待删除账号是否为非%配置,若主机host
为非%形式,则不允许通过RDS控制台删除,需要通过DROP user
命令行方式删除。
-- 检查待删除账号是否为非%配置(如192.168.1.1、192.168.1.%等)
SELECT user,host FROM mysql.user WHERE user='待删除用户名';
-- 若主机host为非%形式,需通过DROP命令删除账号
DROP user 'user'@'host';DROP USER '待删除用户名'@'目标主机IP或网段';