MySQL 用户管理全攻略:创建、授权、修改、删除一文搞定

13次阅读
没有评论

在 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';

九、生产环境安全建议(必看)

  1. 禁止 root 远程登录:root 仅保留 localhost 登录权限,避免暴力破解
  2. 最小权限原则:给用户分配刚好需要的权限,不要默认给全部权限
  3. 密码复杂度:密码必须包含大小写、数字、特殊字符,定期更换
  4. 限制登录主机:生产环境不用 %,指定固定 IP 登录
  5. 定期清理无用用户:避免闲置账号带来安全隐患

十、命令速查表(收藏备用)

表格

操作 命令示例
创建用户 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'@'%';

总结

  1. MySQL 用户管理核心是创建、授权、查看、修改、删除五大操作,覆盖 99% 日常场景
  2. 授权后必须执行 FLUSH PRIVILEGES 生效,这是新手最容易忽略的点
  3. 生产环境优先保障安全:限制登录 IP、最小权限、强密码
  4. 所有命令兼容 MySQL 5.7/8.0 主流版本,直接复制即可使用
正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)
验证码