概述
DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句。这些语句定义了数据库、表、字段、用户的访问权限和安全级别。
管理用户
查询
查询用户代码如下:
USE mysql;
SELECT * FROM user;
在系统中,MySQL用户信息默认存储在mysql数据库中的user表中,所以只需要查询mysql数据库中的user表即可。
创建
创建用户语法格式如下:
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
注意:当我们希望任意主机都能访问MySQL,只需要把主机名的值写为%即可。
示例代码如下:
# 1.创建用户itcast,只能够在当前主机localhost访问,密码123456;
CREATE USER 'itcast'@'localhost' IDENTIFIED BY '1234560';
# 2.创建用户heima,可以在任意主机访问该数据库,密码123456
CREATE USER 'heima'@% IDENTIFIED BY '123456';
注意:这样创建的用户只有登录MySQL的权限,没有操作数据库的权限。
修改
修改用户密码语法格式如下:
ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码';
示例代码如下:
# 3.修改用户heima的访问密码为1234
ALTER USER 'heima'@% IDENTIFIED WITH mysql_native_password '1234';
删除
删除用户语法格式如下:
DROP USER '用户名'@'主机名';
示例代码如下:
# 4.删除itcast@localhost用户
DROP USER 'itcast'@'localhost';
权限控制关键字
GRANT
REVOKE
查看用户权限
当成功创建用户账户后,还不能执行任何操作,需要为该用户分配适当的访问权限。可以使用SHOW GRANTS FOR
语句来查询用户的权限。例如:
mysql> SHOW GRANTS FOR test;
+-------------------------------------------+
| Grants for test@% |
+-------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'test'@'%' |
+-------------------------------------------+
1 row in set (0.00 sec)
GRANT语句
对于新建的MySQL用户,必须给它授权,可以用GRANT
语句来实现对新建用户的授权。
语法格式
# 2.授予权限
GRANTS ALL ON itcast.* TO 'heima'@%;
权限类型(priv_type)
授权的权限类型一般可以分为数据库、表、列、用户。
授予数据库权限类型
授予数据库权限时,priv_type
可以指定为以下值:
SELECT
:表示授予用户可以使用 SELECT 语句访问特定数据库中所有表和视图的权限。INSERT
:表示授予用户可以使用 INSERT 语句向特定数据库中所有表添加数据行的权限。DELETE
:表示授予用户可以使用 DELETE 语句删除特定数据库中所有表的数据行的权限。UPDATE
:表示授予用户可以使用 UPDATE 语句更新特定数据库中所有数据表的值的权限。REFERENCES
:表示授予用户可以创建指向特定的数据库中的表外键的权限。CREATE
:表示授权用户可以使用 CREATE TABLE 语句在特定数据库中创建新表的权限。ALTER
:表示授予用户可以使用 ALTER TABLE 语句修改特定数据库中所有数据表的权限。SHOW VIEW
:表示授予用户可以查看特定数据库中已有视图的视图定义的权限。CREATE ROUTINE
:表示授予用户可以为特定的数据库创建存储过程和存储函数的权限。ALTER ROUTINE
:表示授予用户可以更新和删除数据库中已有的存储过程和存储函数的权限。INDEX
:表示授予用户可以在特定数据库中的所有数据表上定义和删除索引的权限。DROP
:表示授予用户可以删除特定数据库中所有表和视图的权限。CREATE TEMPORARY TABLES
:表示授予用户可以在特定数据库中创建临时表的权限。CREATE VIEW
:表示授予用户可以在特定数据库中创建新的视图的权限。EXECUTE ROUTINE
:表示授予用户可以调用特定数据库的存储过程和存储函数的权限。LOCK TABLES
:表示授予用户可以锁定特定数据库的已有数据表的权限。-
SHOW DATABASES
:表示授权可以使用SHOW DATABASES
语句查看所有已有的数据库的定义的权限。
ALL
或ALL PRIVILEGES
:表示以上所有权限。
授予表权限类型
授予表权限时,priv_type
可以指定为以下值:
SELECT
:授予用户可以使用 SELECT 语句进行访问特定表的权限。INSERT
:授予用户可以使用 INSERT 语句向一个特定表中添加数据行的权限。DELETE
:授予用户可以使用 DELETE 语句从一个特定表中删除数据行的权限。DROP
:授予用户可以删除数据表的权限。UPDATE
:授予用户可以使用 UPDATE 语句更新特定数据表的权限。ALTER
:授予用户可以使用 ALTER TABLE 语句修改数据表的权限。REFERENCES
:授予用户可以创建一个外键来参照特定数据表的权限。CREATE
:授予用户可以使用特定的名字创建一个数据表的权限。INDEX
:授予用户可以在表上定义索引的权限。ALL
或ALL PRIVILEGES
:所有的权限名。
授予列(字段)权限类型
授予列(字段)权限时,priv_type
的值只能指定为SELECT
、INSERT
和UPDATE
,同时权限的后面需要加上列名列表(column-list)
。
授予创建和删除用户的权限
授予列(字段)权限时,priv_type
的值指定为CREATE USER
权限,具备创建用户、删除用户、重命名用户和撤消所有特权,而且是全局的。
REVOKE语句
REVOKE
语句主要用于撤销权限。
语法格式
REVOKE
语法和GRANT
语句的语法格式相似,但具有相反的效果
# 3.撤销权限
REVOKE ALL ON itcast.* FROM 'heima'@%;