标签归档:mysql

mysql用户最小权限那些事

0×00 mysql用户权限简介

mysql root 用户权限最高,下面我们执行权限查看命令,看下root的权限

show grants for root@localhost //查看root用户权限
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+

根据上面的输出看出,root 是拥有all privileges ,那么我们把全部的权限列出来
privileges
你可以指定的权限可以分为三种类型:

数据库/数据表/数据列权限:
Alter: 修改已存在的数据表(例如增加/删除列)和索引。
Create: 建立新的数据库或数据表。
Delete: 删除表的记录。
Drop: 删除数据表或数据库。
INDEX: 建立或删除索引。
Insert: 增加表的记录。
Select: 显示/搜索表的记录。
Update: 修改表中已存在的记录。

全局管理MySQL用户权限:

file: 在MySQL服务器上读写文件。
PROCESS: 显示或杀死属于其它用户的服务线程。
RELOAD: 重载访问控制表,刷新日志等。
SHUTDOWN: 关闭MySQL服务。

特别的权限:

ALL: 允许做任何事(和root一样)。
USAGE: 只允许登录–其它什么也不允许做。

0×01 权限的设置

我们从新开始,先登录root用户,创建个普通用户,用户名和密码 都为leesec

insert into mysql.user(Host,User,Password) values('localhost','leesec',password('leesec'));

接下来我们再对leesec用户设置对数据库或者表的各种控制权限
1.对数据库leesec, 表 admin 设置只允许查询、修改、插入 权限

grant select,update,insert on leesec.admin to leesec@localhost identified by 'leesec';

然后我们登录leesec用户,对表admin 执行删除记录操作
ERROR 1142 (42000): DELETE command denied to user ‘leesec’@’localhost’ for table ‘admin’
2.给mysql用户leesec对表admin有删除权限

grant delete on leesec.admin to leesec@localhost identified by 'leesec'

3.删除Mysql用户leesec 的删除权限

revoke delete on leesec.admin from leesec@localhost;

现在最小权限设置 你懂的 🙂