1分钟了解MySQL的用户权限

我们经常能在网上看见删库跑路的段子,直接使用root用户来操作数据库无疑危险的。实际生产环境中,一般由DBA掌握root用户权限,给其他人都是一个赋予只读的普通用户权限。下面就让我们来看看MySQL的用户权限的设计吧。

MySQL用户

MySQL以(用户名+主机名)来标识一个用户,有以下几种类型

类型例子含义
用户名+ip'test'@'192.168.2.100'仅该ip才能用test登录
用户名+ip段'test'@'192.168.2.%'仅该ip段才能用test登录
用户名+域名'test'@'localhost'仅该域名才能用test登录
用户名+%'test'@'%'任意主机都能通过test登录

用户授权

授权格式: 【grant 权限 on 数据库.数据表 to 用户 IDENTIFIED by 登录密码】

可以授权多次,每一次的授权都会与前一次叠加到一起。

-- 授权用户forum数据库的select权限
grant SELECT on forum.* to 'test'@'192.168.2.100' IDENTIFIED by '123456';

-- 授权用户forum数据库的update,insert权限
grant insert,UPDATE on forum.* to 'test'@'192.168.2.100';

-- 授权用户所有数据库的所有权限
grant all privileges on *.* to 'test'@'192.168.2.100';

-- 每次修改后记得重新刷新用户权限
FLUSH PRIVILEGES;

-- 查看赋予的用户权限
show grants for 'test'@'192.168.2.100';

权限具体可以参考MySQL的官方文档

删除用户授权

-- 同时删除用户与权限
drop user 'test'@'192.168.2.100';

-- 删除用户的某一权限
REVOKE INSERT on forum.* from 'test'@'192.168.2.100';

数据表字段权限控制

MySQL的权限控制粒度,可以达到用户只对数据表的某些字段拥有权限

-- 控制只对id与username字段拥有select权限,这时select *会报错。
grant select(id,username) on forum.`user` to 'dev'@'192.168.2.100' IDENTIFIED by '123456';

-- 控制只对id与username字段拥有update权限
grant UPDATE(id,username) on forum.`user` to 'dev'@'192.168.2.100' IDENTIFIED by '123456';

-- 查看字段控制权限
SELECT * from mysql.columns_priv;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值