MySQL作为常用的关系型数据库,合理的用户管理是保障数据安全的基础。新增用户并分配对应权限,既能满足不同业务场景的访问需求,也能避免root账户权限过度暴露带来的安全隐患。

一、MySQL创建新用户的基本语法
MySQL提供了CREATE USER语句用于新增用户,基础语法结构如下:
-- 创建用户基本语法 CREATE USER '用户名'@'主机地址' IDENTIFIED BY '密码';
其中主机地址的取值决定了用户的访问范围:
localhost:仅允许本地连接访问%:允许任意远程主机连接访问- 具体IP地址:仅允许指定IP的主机连接访问
1.1 创建本地用户示例
创建仅能在MySQL服务器本地登录的用户test_local,密码设置为test123:
-- 创建本地用户 CREATE USER 'test_local'@'localhost' IDENTIFIED BY 'test123'; -- 查看用户是否创建成功 SELECT user, host FROM mysql.user WHERE user = 'test_local';
1.2 创建远程用户示例
创建允许任意远程主机连接的用户test_remote,密码设置为remote123:
-- 创建远程用户 CREATE USER 'test_remote'@'%' IDENTIFIED BY 'remote123'; -- 查看用户是否创建成功 SELECT user, host FROM mysql.user WHERE user = 'test_remote';
二、MySQL用户权限分配操作
新创建的用户默认没有任何权限,需要管理员手动分配对应权限,权限分配使用GRANT语句,基础语法如下:
-- 权限分配基本语法 GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机地址';
常见的权限类型包括:
ALL PRIVILEGES:所有权限SELECT:查询权限INSERT:插入权限UPDATE:更新权限DELETE:删除权限CREATE:创建库表权限DROP:删除库表权限
2.1 分配库级权限
为test_local用户分配test_db数据库下所有表的所有操作权限:
-- 分配test_db库所有表的全部权限给test_local用户 GRANT ALL PRIVILEGES ON test_db.* TO 'test_local'@'localhost'; -- 刷新权限使配置生效 FLUSH PRIVILEGES;
2.2 分配表级权限
为test_remote用户分配test_db数据库下user表的查询和插入权限:
-- 分配指定表的查询和插入权限 GRANT SELECT, INSERT ON test_db.user TO 'test_remote'@'%'; -- 刷新权限使配置生效 FLUSH PRIVILEGES;
三、用户权限查看与回收
3.1 查看用户权限
使用SHOW GRANTS语句可以查看指定用户的权限配置:
-- 查看test_local用户的权限 SHOW GRANTS FOR 'test_local'@'localhost'; -- 查看当前登录用户的权限 SHOW GRANTS;
3.2 回收用户权限
如果用户的权限需要调整,可以使用REVOKE语句回收对应权限,语法如下:
-- 回收权限基本语法 REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'主机地址';
示例:回收test_local用户对test_db数据库的所有权限:
-- 回收test_local用户的test_db库全部权限 REVOKE ALL PRIVILEGES ON test_db.* FROM 'test_local'@'localhost'; -- 刷新权限 FLUSH PRIVILEGES;
四、删除多余用户
如果某个用户不再需要使用,可以使用DROP USER语句删除,避免闲置用户带来安全风险:
-- 删除test_remote用户 DROP USER 'test_remote'@'%'; -- 查看用户是否删除成功 SELECT user, host FROM mysql.user WHERE user = 'test_remote';
五、操作注意事项
- 每次修改权限后都需要执行
FLUSH PRIVILEGES语句,否则权限配置不会立即生效 - 远程用户创建后需要确认MySQL的bind-address配置,若配置为127.0.0.1则仅允许本地连接,需要修改为0.0.0.0才能支持远程访问
- 密码设置建议符合复杂度要求,避免使用简单密码降低数据库被破解的风险
- 遵循最小权限原则,仅给用户分配业务必需的权限,不要随意分配ALL PRIVILEGES权限
MySQLUser_MySQL权限分配创建新用户修改时间:2026-06-17 21:27:33