[数据库实验]自主存取控制实验

实验目的: 掌握自主存取控制权限的定义和维护方法
实验内容:定义不同用户,分配不同权限给用户,以相应的用户名登陆数据库验证权限分配是否正确

一、添加、删除用户

1.1 添加用户

众所周知,我们在刚开始安装使用mysql时,最开始都从root角色开始的,root拥有最高的权限,但我们也可以创建一些我们需要的,具备一部分权限的用户。
(1)添加新用户时使用CREATE USER命令创建,语法格式如下:

CREATE USER 用户[IDENTIFIED BY ‘password’];
用户=’用户名’@’主机名’        //主机名一般默认为Localhost

(2)实例:创建用户user_1和user_2,设置密码为123456
在这里插入图片描述
可以使用SELECT user FROM mysql.USER命令查看当前数据库的所有用户,USER表里存储了所有的用户。
在这里插入图片描述
(3) 更改用户密码
使用SET PASSWORD命令修改某用户登陆密码,语法格式如下:

SET PASSWORD FOR 用户=‘新密码’;
//mysql8之后才用此种格式,=password(‘新密码’)的格式是旧格式

(4)更改用户名

更改用户名实际上和更改普通表的数据类似,我们需指定mysql数据库,然后在user表中修改我们要修改的用户名。

格式:

UPDATE USER SET USER='新名'@'Localhost' WHERE USER='原名';

1.2 删除用户

命令格式:
DROP USER 用户;
注:只有拥有当前数据库全局权限的用户才能使用DROP命令
例:DROP USER ALEX@LOCALHOST;

例子:

SET PASSWORD FOR ‘ALEX’@’LOCALHOST’=‘123’;

二、权限控制

(1)授予权限

可授予用户列权限、表权限、数据库权限、用户权限等,语法格式如下:

GRANT priv_typeON [object_type] {表名|数据库名}TO 用户
[IDENTIFIED BY ‘密码’][WITH grant option];
object_type=TABLE|FUNCTION|PROCEDURE

注:若指定密码,则原密码将会被覆盖,如果权限授予一个不存在的用户,则MySQL会自动创建这个用户,但必须为该用户指定密码。

priv_type

列权限、表权限、数据库权限、用户权限参考“权限一览表”,如果要授权所有权限,则用ALL或者ALL PRIVILEGES表示。

授予user_1访问、更新、创建、删除employee表的权限:
在这里插入图片描述
授予全局访问权限:

GRANT ALL ON DBST.* TO ALEX@LOCALHOST;

(2) 收回权限

收回权限使用REVOKE命令,这有一个小窍门,授予权限顾名思义用TO,收回权限则用FROM

REVOKE+要收回对***的权限 + FROM +用户
REVOKE priv_type ON {表名|数据库名} FROM 用户;

比如,现在收回user_1对table表的访问权限

revoke select on table from user_1;

注:只有拥有当前数据库全局CREATE或者UPDATE权限的用户才能使用REVOKE命令。

flush privileges

这个是用于刷新权限表的命令,通常在我们更新用户名或密码后需要使用,不然系统会拒绝访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值