Mysql权限管理

什么是Mysql权限

对于正式库只给一个增删改查的权限,或者只给一个查询权限。
使用Root用户,执行
grant SELECT on mysqldemo.* TO ‘dev’@‘115.199.113.%’ IDENTIFIED BY ‘123’ WITH GRANT OPTION;
表示创建了一个dev用户,密码是123,仅仅运行在网段为1115.199.113.*的网段进行查询操作。
在这里插入图片描述
在这里插入图片描述
显示只有查询权限,没有修改权限。

深入理解Mysql权限

用户标识是什么

在mysql中的权限不是单纯的赋予给用户的,而是赋予给“用户+ip的”
比如dev用户是否能登录,用什么密码登录,并且能够访问什么数据库都要加上ip,这样才算一个完整的用户标识,换句话说,‘dev’’@’115.204.68.%’和‘dev’@‘localhost’这3个完全不同的用户标识。

用户权限涉及的物理表

查看权限涉及的表:
Mysql.user,mysql.db,mysql.table_priv,mysql_column_priv等
1)User的一行记录代表一个用户标识
在这里插入图片描述
2)db的一行记录代表对数据库的权限
在这里插入图片描述
3)tables_priv的一行记录代表着对表的权限
在这里插入图片描述
4)column_priv的一行记录代表对某一列的权限
在这里插入图片描述
5)实战:

#新建account表
DROP TABLE IF EXISTS `account`; 
CREATE TABLE `account` ( 
`id` int(11) NOT NULL,
`name` varchar(50) DEFAULT NULL, 
`balance` int(255) DEFAULT NULL, 
PRIMARY KEY (`id`), KEY `idx_balance` (`balance`)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
INSERT INTO `account` VALUES ('1', 'lilei', '900'); 
INSERT INTO `account` VALUES ('2', 'hanmei', '100'); 
INSERT INTO `account` VALUES ('3', 'lucy', '250');
INSERT INTO `account` VALUES ('5', 'tom', '0');

在这里插入图片描述
对于前面创建的dev用户,可以不让他访问balance,但是id和name列是可以访问的。
grant SELECT(id,name) on mysqldemo.account TO ‘dev’@‘115.204.68.%’ IDENTIFIED BY ‘123’ WITH GRANT OPTION;
分别查看table_priv,column_priv的表数据
在这里插入图片描述
在这里插入图片描述
REVOKE SELECT on mysqldemo.* from ‘dev’@‘115.204.68.%’;
查询所有是不允许的
在这里插入图片描述
而你查询id,name是可以的
在这里插入图片描述

Mysql的角色实战

1、准备工作
MySql 基于”用户+IP”的这种授权模式其实还是挺好用的,但如果你使用 Oracle、PostgreSQL、
SqlServer 你可能会发牢骚
这样对于每个用户都要赋权的方式是不是太麻烦了,如果我用户多呢?有没有角色或者用户
组这样的功能呢?
好吧,你搓中了 mysql 的软肋,很痛,在 mysql5.7 开始才正式支持这个功能,而且连 mysql
官方把它叫做“Role Like”(不是角色,长得比较像而已,额~~~)?
好咧,那在 5.7 中怎么玩这个不像角色的角色呢?
show variables like “%proxy%”;
在这里插入图片描述
先把check_proxy_users,mysql_native_password_proxy_users 这俩个变量设置成true才行。
set GLOBAL check_proxy_users =1;
set GLOBAL mysql_native_password_proxy_users = 1;
当然,你也可以把这两个配置设置到 my.cnf 中。
在这里插入图片描述

2、创建一个角色
在这里插入图片描述
3、创建2个开发人员账号
在这里插入图片描述
4、把俩个用户加到角色组里面
在这里插入图片描述
在这里插入图片描述
这里有个小的地方需要注意:如果你是远程链接,你可能会收获一个大大的错误,你没有权
限做这一步,这个时候你需要再服务器上执行一条
GRANT PROXY ON ‘’@’’ TO ‘root’@’%’ WITH GRANT OPTION;
在这里插入图片描述
在这里插入图片描述
5、给角色dev_role应有的权限
在这里插入图片描述
6、测试
以用户testA、testB登录查询!
1、查询所有数据
在这里插入图片描述
2、查询授权数据
在这里插入图片描述

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值