18 MySQL 用户管理

AI-摘要
小米里的大麦 GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
18 MySQL 用户管理
小米里的大麦MySQL 用户管理
1. 用户
1. 查看用户信息
MySQL 8 的用户信息主要在 mysql.user 表里。常用几种方式:
- 查所有用户:
1 | mysql> SELECT user, host FROM mysql.user; |
- 查指定用户的详细信息:
1 | mysql> SELECT * FROM mysql.user\G |
- 用
SHOW GRANTS看用户权限:
1 | SHOW GRANTS FOR '用户名'@'主机'; |
2. 创建用户
1 | CREATE USER '用户名'@'主机' IDENTIFIED BY '密码'; |
'localhost'表示只能本机登录。'%'表示允许任何主机登录,通常用于 Windows,因为自己的 Windows IP 经过层层 NAT 、其他封装或公网 IP 动态变化等问题,导致无法确定一个固定的 IP 授权给 MySQL。所以通常使用'%'来解决连接问题。但请务必注意开放'%'时的密码强度和防火墙设置。- 可以加
PASSWORD EXPIRE、ACCOUNT LOCK等控制。
3. 删除用户
1 | DROP USER '用户名'@'主机'; |
- 删除用户会自动删除它的权限。
- 如果用户不存在,加上
IF EXISTS防报错
4. 修改用户密码
Root 是老大,想改谁的密码都行,只要把 '用户名'@'主机' 写对就行。
1 | ALTER USER '用户名'@'主机' IDENTIFIED BY '新密码'; |
- 也可以用
SET PASSWORD,不过ALTER USER更推荐。 - 修改密码后不需要重启 MySQL。
- 所有用户操作完成后可以执行
FLUSH PRIVILEGES;,不过 MySQL 8 里大部分命令已经自动刷新权限。
用户自己改自己的密码,有两种写法,最简单的是 不写用户名:
方法一:不写用户名(推荐,最省事)
1 | ALTER USER CURRENT_USER() IDENTIFIED BY '新密码'; |
(注:MySQL 8.0 里 SET PASSWORD 默认就是改当前登录用户的,不用加 FOR 子句)。
方法二:写死自己的账号
1 | ALTER USER '自己的用户名'@'localhost' IDENTIFIED BY '新密码'; |
必须确保现在的连接确实是用 '自己'@'localhost' 登进来的,写错了会报错说没权限。
2. 权限
1. 常用权限
| 权限名 | 作用 |
|---|---|
SELECT | 读数据(查询) |
INSERT | 插入数据 |
UPDATE | 更新数据 |
DELETE | 删除数据 |
CREATE | 创建表/数据库 |
DROP | 删除表/数据库 |
ALTER | 修改表结构 |
INDEX | 建/删索引 |
GRANT OPTION | 可以给别人授权 |
EXECUTE | 执行存储过程或函数 |
REFERENCES | 创建外键 |
SHOW DATABASES | 查看库列表 |
CREATE USER | 创建用户 |
除了这些,还有一些更细的控制,但常用就是上面这些。
2. 给用户授权
1 | GRANT 权限列表 ON 数据库.对象 TO '用户名'@'主机'; |
Compound_query.*:表示数据库Compound_query下所有表。*.*:表示所有数据库、所有表。- 授权后如果需要别人也能授权,要加
WITH GRANT OPTION:
1 | GRANT SELECT, INSERT ON testdb.* TO 'bob'@'%' WITH GRANT OPTION; |
3. 回收用户权限
1 | REVOKE 权限列表 ON 数据库.对象 FROM '用户名'@'主机'; |
REVOKE只收回明确写的权限,其他权限不受影响。- 回收后可以同样
FLUSH PRIVILEGES,MySQL 8 自动生效。
小技巧:查用户权限
1 | SHOW GRANTS FOR '用户名'@'主机'; |
- 给全库权限:
GRANT ALL PRIVILEGES ON testdb.* TO 'alice'@'localhost'; - 给全局权限:
GRANT ALL PRIVILEGES ON *.* TO 'alice'@'localhost';
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果














