MySQL自娱—10.DCL语言

DCL(数据控制语言)
主要是数据库管理员用来管理其他用户权限时使用的语句
可以授予的权限包括以下几组:
列权限:和表中的一个具体列相关
表权限:和一个具体数据表中的所有数据相关
数据库权限:和一个具体数据库中的所有数据表相关
全局权限:和MySQL的所有数据库相关
低级权限会被高级权限覆盖

数据库管理员使用GRANT语句进行授权
语法:GRANT 权限 ON 数据库对象 TO 用户名@用户地址 IDENTIFIED BY 用户口令
注意语法中的用户名、用户地址、用户口令需要用引号括起来,并且口令不能为空
例子:
列权限:GRANT SELECT(id) ON test.test_table1 TO 'a'@'localhost' IDENTIFIED BY '123456';
表权限:GRANT SELECT ON test.test_table1 TO 'b'@'localhost' IDENTIFIED BY '123456';
数据库权限:GRANT SELECT ON test.* TO 'c'@'localhost' IDENTIFIED BY '123456';
全局权限:GRANT SELECT ON . TO 'd'@'localhost' IDENTIFIED BY '123456';
通过GRANT语句可以授予的权限
包括:SELECT、INSERT、UPDATE、DELETE、CREATE、DROP、ALTER等
如果要授予所有权限,可以使用 ALL 代表所有
例子:GRANT ALL ON . TO 'user'@'localhost' IDENTIFIED BY '123456';
查看当前用户权限:
SHOW GRANTS
SHOW GRANTS FOR CURRENT_USER()
查看指定用户权限:
SHOW GRANTS FOR 用户名@用户地址
也可以使用USE命令切换到系统数据库information_schema
SELECT * FROM user_privileges查看更为详细的用户权限
数据库管理员使用REVOKE语句取消授权
语法:REVOKE 权限 ON 数据库对象 FROM 用户名@用户地址
注意需要根据用户对应权限进行取消
例子:REVOKE ALL ON . FROM 'user'@'localhost';
在数据库管理员授予或取消授予权限时,用户地址可以使用%表示所有
例子:REVOKE ALL ON . FROM 'user'@'%';
在数据库管理员授予或取消授予权限后,需要刷新系统权限表:FLUSH PRIVILEGES
或者重新启动数据库服务:
停止服务命令 net stop mysql
启动服务命令 net start mysql
数据库管理员可以使用DDL(数据定义语句)中的CREATE来创建用户
语法:CREATE USER 用户名@用户地址 IDENTIFIED BY 用户口令
例子:CREATE USER zhangsan@'192.168.1.100' IDENTIFIED BY '123456';
如果要查看用户信息,需要使用USE命令切换到系统数据库mysql中
SELECT * FROM user;
需要注意的是,使用CREATE命令创建的用户默认没有任何权限,需要使用前面的GRANT
命令授权
数据库管理员可以使用DDL(数据定义语句)中的DROP来删除用户
语法:DROP USER 用户名@用户地址
例子:DROP USER zhangsan@'192.168.1.100';
如果需要修改用户的密码,需要到系统数据库mysql中修改表user
例子:UPDATE user SET password=password('123456') WHERE user='zhangsan';
也可以直接在表user中删除用户
例子:DELETE FROM user WHERE user='zhangsan';

DCL(Data Control Language)
数据控制语言,用来定义访问权限和安全级别。

1.创建用户
语法:
CREATE USER 用户名@地址 IDENTIFIED BY '密码';
例:
create user testuser1@localhost identified by '111';
1
2
3
4
2.给用户授权
语法:
GRANT 权限1, … , 权限n ON 数据库.* TO 用户名;
例:
grant create,alter,drop,insert,update,delete,select on test999.* to testuser1@localhost;
1
2
3
4
3.撤销授权
语法:
REVOKE权限1, … , 权限n ON 数据库.* FORM 用户名;
例:
revoke create,alter,drop on test999.* to testuser1@localhost;
1
2
3
4
4.查看用户权限
语法:
SHOW GRANTS FOR 用户名;
例:
show grants for testuser1@localhost;
1
2
3
4
5.删除用户
语法:
DROP USER 用户名;
例:
drop user testuser1@localhost;

posted @ 2022-01-08 15:56  梵高de画笔  阅读(31)  评论(0编辑  收藏  举报