在 MySQL 数据库的日常管理中,用户创建、权限分配、账号维护是最核心的基础操作,也是保障数据库安全的关键。无论是本地开发、服务器部署,还是多用户协作场景,合理管理 MySQL 用户都能避免权限滥用、数据泄露等问题。
本文将用最通俗易懂的方式,带你掌握 MySQL 用户管理的所有核心命令,包含创建用户、查看用户、修改密码、授权权限、撤销权限、删除用户六大高频操作,新手也能直接上手。
一、前置准备:登录 MySQL
所有用户管理操作,都需要先以root 管理员账号登录 MySQL(拥有最高权限),打开终端 / 命令行执行:
bash
运行
# 本地登录(默认端口3306)
mysql -u root -p
# 远程登录(指定IP和端口)
mysql -h 数据库IP -P 端口 -u root -p
输入 root 密码后,进入 MySQL 命令行交互模式,就可以开始操作了。
二、核心操作 1:创建 MySQL 用户
1. 基础创建命令
MySQL 创建用户的标准语法(5.7+ 版本通用,8.0 版本兼容):
sql
CREATE USER '用户名'@'访问主机' IDENTIFIED BY '密码';
参数说明:
用户名:自定义的账号名(如 test、admin)访问主机:限制该用户能从哪台机器登录(核心安全配置)localhost:仅允许本地登录(安全最高,推荐)%:允许所有 IP / 远程登录(开发常用,生产环境慎用)192.168.1.100:仅允许指定 IP 登录
密码:用户登录密码(建议包含字母 + 数字 + 特殊字符)
2. 常用创建示例
sql
# 1. 仅本地登录的用户(安全,推荐本地开发用)
CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'Test@123456';
# 2. 允许所有远程IP登录的用户(开发测试用)
CREATE USER 'dev_user'@'%' IDENTIFIED BY 'Dev@654321';
# 3. 仅允许指定IP(192.168.1.100)登录的用户(生产环境推荐)
CREATE USER 'prod_user'@'192.168.1.100' IDENTIFIED BY 'Prod@888888';
三、核心操作 2:查看 MySQL 用户
创建完用户后,可通过 MySQL 内置的 mysql.user 系统表,查看所有用户信息:
sql
# 查看所有用户(用户名+登录主机)
SELECT user, host FROM mysql.user;
# 查看指定用户的详细权限/配置
SELECT * FROM mysql.user WHERE user='用户名';
执行后会输出所有用户列表,清晰看到已创建的账号和登录限制。
四、核心操作 3:给用户授权(最常用!)
新创建的用户默认没有任何权限(无法查询、创建、修改数据库),必须通过 GRANT 命令分配权限。
1. 授权基础语法
sql
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'访问主机';
# 授权后必须刷新权限(必执行!)
FLUSH PRIVILEGES;
2. 常用权限说明
ALL PRIVILEGES:所有权限(增删改查、创建表、删除表等)SELECT:仅查询权限(只读)INSERT/UPDATE/DELETE:增 / 改 / 删权限CREATE/DROP:创建 / 删除数据库 / 表权限
3. 实用授权示例
sql
# 1. 给用户授予【所有数据库所有表】的全部权限(管理员权限)
GRANT ALL PRIVILEGES ON *.* TO 'dev_user'@'%';
# 2. 给用户授予【指定数据库(test_db)所有表】的全部权限(常用)
GRANT ALL PRIVILEGES ON test_db.* TO 'test_user'@'localhost';
# 3. 给用户授予【指定数据库】的只读权限(仅查询)
GRANT SELECT ON test_db.* TO 'read_user'@'%';
# 4. 给用户授予【指定表】的增删改查权限
GRANT SELECT,INSERT,UPDATE,DELETE ON test_db.user_info TO 'prod_user'@'%';
五、核心操作 4:查看用户权限
想确认某个用户拥有哪些权限,执行以下命令:
sql
# 查看当前登录用户的权限
SHOW GRANTS;
# 查看指定用户的权限
SHOW GRANTS FOR '用户名'@'访问主机';
示例:
sql
SHOW GRANTS FOR 'test_user'@'localhost';
六、核心操作 5:撤销用户权限
如果需要收回用户的部分 / 全部权限,使用 REVOKE 命令:
sql
# 撤销指定权限
REVOKE 权限列表 ON 数据库名.表名 FROM '用户名'@'访问主机';
# 撤销所有权限
REVOKE ALL PRIVILEGES ON *.* FROM 'dev_user'@'%';
# 撤销后刷新权限
FLUSH PRIVILEGES;
七、核心操作 6:修改用户密码
1. 修改自己的密码(普通用户)
sql
SET PASSWORD = PASSWORD('新密码');
2. root 修改其他用户密码(管理员)
sql
# MySQL 5.7 版本
SET PASSWORD FOR '用户名'@'访问主机' = PASSWORD('新密码');
# MySQL 8.0 版本(推荐)
ALTER USER '用户名'@'访问主机' IDENTIFIED BY '新密码';
八、核心操作 7:删除 MySQL 用户
不需要的用户,及时删除避免安全风险:
sql
DROP USER '用户名'@'访问主机';
示例:
sql
# 删除本地登录的 test_user
DROP USER 'test_user'@'localhost';
九、生产环境安全建议(必看)
- 禁止 root 远程登录:root 仅保留
localhost登录权限,避免暴力破解 - 最小权限原则:给用户分配刚好需要的权限,不要默认给全部权限
- 密码复杂度:密码必须包含大小写、数字、特殊字符,定期更换
- 限制登录主机:生产环境不用
%,指定固定 IP 登录 - 定期清理无用用户:避免闲置账号带来安全隐患
十、命令速查表(收藏备用)
表格
| 操作 | 命令示例 |
|---|---|
| 创建用户 | CREATE USER 'user'@'%' IDENTIFIED BY 'pwd'; |
| 授权全部权限 | GRANT ALL ON *.* TO 'user'@'%'; FLUSH PRIVILEGES; |
| 查看用户 | SELECT user,host FROM mysql.user; |
| 修改密码 | ALTER USER 'user'@'%' IDENTIFIED BY 'new_pwd'; |
| 删除用户 | DROP USER 'user'@'%'; |
总结
- MySQL 用户管理核心是创建、授权、查看、修改、删除五大操作,覆盖 99% 日常场景
- 授权后必须执行
FLUSH PRIVILEGES生效,这是新手最容易忽略的点 - 生产环境优先保障安全:限制登录 IP、最小权限、强密码
- 所有命令兼容 MySQL 5.7/8.0 主流版本,直接复制即可使用
正文完
可以使用微信扫码关注公众号(ID:xzluomor)