深入学习mysql(一)

mysql权限

最简单的mysql权限

相信很多人都说过一句玩笑话,删库跑路哈哈哈~说到删库跑路,那么你是否了解过,如何给mysql设置权限来防止这样的事情发生呢

  1. 如果你使用的是root权限的账号,你需要给不同的账号来分配权限时,可以使用如下的sql语句来创建对应的账号和权限:
	grant SELECT on practice.* TO 'dev'@'%' IDENTIFIED BY '123' WITH GRANT OPTION;

这里的practice是指数据库的名称,.*表示该数据库下所有的表,dev表示连接数据库使用的账号名,%表示dev账号可以用所有IP访问,如果@后面是指定IP,则dev账号只能在指定IP上访问. 123表示dev账号对应的密码

  1. 查看dev对应的权限
	show grants for 'dev'@'%';

在这里插入图片描述

  1. 登录dev账号查看权限是否生效
    进入dev账号,当我想要删除practice数据库下的test表时,提示我们无法删除,说明权限已经生效.还想删库跑路吗,哈哈

    在这里插入图片描述

深入研究下 MySQL 权限

用户标识是什么

上面在创建dev账号的过程中,我们能看到,mysql的权限不是单纯赋予给某个用户dev的,而是赋予给"用户+IP"的.比如我们上面创建的dev账号用什么密码登陆,在哪个IP上能登陆,这样才算一个完整的用户标识.

用户权限所涉及的表

mysql中的几张表可以记一下,面试时也是加分项.在我们连接的数据库中都会有这么几张表
在这里插入图片描述
这个叫mysql的数据库里面有这么几张表
user,db,table_priv,column_priv,这些表有什么用呢?和权限有什么关系呢?

	User 的一行记录代表一个用户标识
	db 的一行记录代表对数据库的权限 
	table_priv 的一行记录代表对表的权限 
	column_priv 的一行记录代表对某一列的权限

那么接下来我们一起来看看这几张表具体是怎么个意思
新建一个表 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');

创建完成后,当我们使用root账号时可以看到表中所有的字段

在这里插入图片描述
那么,如果我不想让dev访问balance列呢

我们先删除下dev下的允许查询所有的权限

	REVOKE SELECT on practice.* from 'dev'@'%'

再执行下面这条sql

grant select(id,name) on practice.account to 'dev'@'%';

这时候可以分别看下mysql数据库下的 table_priv,column_priv 的数据

在这里插入图片描述

在这里插入图片描述

使用dev登陆查询发现查询?不好意思,不允许了

在这里插入图片描述

而只查询id和name时是可以的

在这里插入图片描述
哈哈,是不是感觉很简单,我们下期再接着盘!

喜欢就点赞收藏吧,你的点赞就是我的动力,在成为架构师的路上我们一起努力~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值