MySql权限详解

mysql对用户的权限控制分为两个阶段:

  1. 有没有权限连接
  2. 有没有权限执行此操作(select,update…)

判断用户是否有权连接,根据三个参数来判断:

  1. 你从哪儿来 host
  2. 你是谁 user
  3. 你的密码是什么 password

用户的这三个信息,存储在 mysql.user 表中:

use mysql;
# 5.7 password为authentication_string
select host, user, authentication_string from user;

为什么需要host验证:当有人知道了你的用户名和密码,但是host验证不通过时,仍然不可以连接,保证了安全性。

修改host域名,让指定的ip可以连接

update user set host='你要授权的ip' where user = 'root';
# 刷新权限,否则不生效,因为权限信息在内存中
flush privileges;

# 此时,客户端ip为 localhost的用户不可以连接了,除了指定的客户端ip

% 代表任意用户
192.168.0.x 代表局域网内的用户可以登陆

注意 mysql -h 参数指定的是服务器的地址,和权限验证没有关系

修改密码:

update mysql.user set authentication_string=password('新密码') where user='root';
# 刷新权限,否则不生效,因为权限信息在内存中
flush privileges;
-- 较早的版本使用password字段

创建并授权用户

grant [权限1,权限2,权限3..] on *.* to user@'host' identified by 'password';

*.* 代表所有库的所有表

常用权限:
all 所有权限,范围很大
create
drop
insert
delete
update
select

收回用户权限

revoke [权限1,权限2,权限3..] on *.* from user@'host';
flush privileges;

库的授权

-- 针对某个库授权
grant all on 数据库名.* to 用户名@'host';
flush privileges;

表的授权

-- 针对某个表授权
grant all on 数据库名.表明 to 用户名@host;
flush privileges;

表的权限可以做什么?
在开发中,某些表的数据是原始数据,不能被删除。

mysql 的 权限控制可以控制到列

注意

user -> db -> tables_prv

  1. user 全局控制,控制用户登陆、控制select、update、..等
  2. db 判断用户有没有某个库的操作权
  3. tables_priv 判断用户有没有table的权限
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值