数据权限语言(DCL)
1、概念
- 数据控制语言 (Data Control Language) 在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、存储程序、用户自定义函数等数据库对象的控制权
- root是超级管理员,权限是最大的,很容易操作失误导致数据库的不安全性,所以可以通过DCL针对不同的用户,赋予不同的权利,以及管理用户
- 注意:
- 通过管理员新创建的用户是没有任何mysql的权限
- 赋予权限不能够大于用户自身的权限,root可以给任何用户分配权限
2、使用DCL对用户进行操作
-
2.1、创建用户
语法:CREATE USER
用户名
@连接到的服务器
IDENTIFIED BY ‘密码’;-- 创建一个名为test的本地新用户,密码是123456 CREATE USER `test`@`localhost` IDENTIFIED BY '123456'
-
2.2、分配权限
语法:GRANT
权限类型
ON数据库.表名
TO用户名
@连接到的服务器
[IDENTIFIED BY密码
]-- 为test用户分配权限,权限类型是全部,权限位置是school数据库的全部表 GRANT ALL ON school.* TO test @ localhost [IDENTIFIED BY `密码`]
注意:
- 在分配权限语句后面,如果是存在的用户,可以不用写密码,如果不存在的用户则需要密码
- 对于不存在的用户,是先创建,然后再分配权限,所以分配权限语句实现创建用户同时授权或者为已有用户分配权限
-
2.3、修改用户密码
语法:SET PASSWORD [FOR
用户名
@连接到的服务器
]= ‘新密码
’;-- 修改test用户的密码为19981104 SET PASSWORD FOR `test`@`localhost` = '19981104'; -- 修改当前用户的密码,如果是root则修改root的密码 SET PASSWORD = '19960407';
注意:[FOR
用户名
@连接到的服务器
]可以不写,如果没写的话就是为当前操作的用户修改密码 -
2.4、撤销用户的权限
语法:REVOKE
权限类型
ON数据库.表名
FROM用户名
@连接到的服务器
-- 撤销test用户对呀school数据库所有表的所有权限 REVOKE ALL ON school.* FROM `test`@`localhost`
-
2.5、删除用户
语法:DROP USER
用户名
@连接到的服务器
-- 删除test用户 DROP USER `test`@`localhost`
3、常见的权限类型
获得全部的权限,权限类型就是all
对表操作的权限类型
create 创建---------此权限类型可以赋予用户对表进行创建的权限 drop 删除---------此权限类型可以赋予用户对表进行删除的权限 对数据操作的权限类型
insert 插入--------此权限类型可以赋予用户对数据进行插入的权限 delete 删除--------此权限类型可以赋予用户对数据进行删除的权限 update 修改--------此权限类型可以赋予用户对数据进行修改的权限 select 查询--------此权限类型可以赋予用户对数据进行查询的权限