一.介绍
在MySQL中,DCL代表数据控制语言(Data Control Language)。数据控制语言是一组用于管理数据库对象访问权限的命令和语句。通过DCL,数据库管理员可以控制用户对数据库对象的访问权限并管理数据的安全性。
注意:在使用DCL命令时,请确保具有足够的权限。
二.主要命令
MySQL中的DCL包括以下三个主要关键词命令和一些其他命令:
2.1 GRANT(授权):
GRANT命令用于授权用户或用户组对数据库对象的访问权限。
可以指定用户在某个数据库或表上具有的权限,例如SELECT、INSERT、UPDATE、DELETE等。
授权可以基于不同的级别,可以是全局级别,数据库级别,表级别等。
2.1.1 对数据库授权
语法:GRANT privileges ON database.table TO 'username'@'host';
GRANT 权限列表 ON 数据库名.* TO ‘用户名’@‘访问主机’ IDENTIFIED BY ‘密码’;
其中用户密码可以为空,表示不需要密码即可登录。
权限列表可以是ALL PRIVILEGES,也可以是SELECT、INSERT、UPDATE、DELETE等单个权限或多个权限的组合;
数据库名.*表示对该数据库下的所有表都授予相应的权限;
用户名和密码是该用户的登录名和密码;
访问主机可以是具体的IP地址或者是通配符%。
例如,授权用户A在数据库mydb上具有SELECT和INSERT权限的命令如下:
GRANT SELECT, INSERT ON mydb.* TO 'userA'@'localhost';
这将允许用户名为’userA’的用户在数据库’mydb’的所有表上执行SELECT和INSERT操作。
2.1.2 对数据库下某表的权限:
GRANT 权限列表 ON 数据库名.表名 TO ‘用户名’@‘访问主机’ IDENTIFIED BY ‘密码’;
其中,权限列表和访问主机的含义与上面相同,数据库名和表名分别表示该表所在的数据库和表名。
例如,授予用户test对数据库mydb中的表mytable的SELECT和INSERT权限,用户名为test,密码为123456,访问主机为localhost,命令如下:
GRANT SELECT, INSERT ON mydb.mytable TO 'test'@'localhost' IDENTIFIED BY '123456';
2.2 REVOKE(撤销权限)
REVOKE命令用于撤销已经授予用户的访问权限。使用REVOKE命令,可以取消用户对数据库对象的某些或所有权限。
语法:
REVOKE privileges ON database.table FROM ‘username’@‘host’;
例如,撤销用户A在数据库mydb上的SELECT权限的命令如下:
REVOKE SELECT ON mydb.* FROM 'userA'@'localhost';
这将取消用户’userA’在数据库’mydb’上的SELECT权限。
2.3 DENY(拒绝权限)
MySQL中没有直接的DENY命令。一般情况下,如果没有明确授权给用户的权限,那么该用户将被默认拒绝。可以通过REVOKE命令来取消用户的权限。
三.其他命令
拓展
MySQL中登录名和用户名的区别:
- 登录名:登录名是用于连接到MySQL服务器的标识符。它通常与操作系统的用户名相同,但也可以是任何其他名称。
登录名是全局的,意味着它可以用于连接到任何数据库。- 用户名:用户名是用于授权和管理数据库对象的标识符。它与特定数据库相关联,并且只能在该数据库中使用。用户名可以有不同的权限级别,例如SELECT、INSERT、UPDATE和DELETE等。
- 两者的目的不同。创建登录名是为了连接到MySQL服务器,而创建用户名是为了授权和管理数据库对象。
3.1 CREATE LOGIN:创建登录名,用于用户登录数据库。
语法:
CREATE LOGIN login_name WITH PASSWORD = 'password'
3.2 ALTER LOGIN:修改登录名的属性,如密码、默认数据库等。
语法:
ALTER LOGIN login_name WITH PASSWORD = 'new_password';
3.3 DROP LOGIN 删除登录名
语法:
DROP LOGIN login_name;
3.4 CREATE USER 创建用户
创建用户,用于授权用户对数据库对象进行操作
语法:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
示例:
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password123';
表示创建用户名为testuser,密码为password123,本地登录MySQL数据库
本地用户用 localhost,使用通配符%可以使该用户可以从任意远程主机登陆
3.5 ALTER USER 修改用户属性
如密码、默认架构等。
语法:
ALTER USER user_name WITH PASSWORD = 'new_password';
3.6 DROP USER 删除用户
语法:DROP USER ‘username’@‘host’;
DROP USER user_name;
示例:
DROP USER 'testuser'@'localhost';
3.7 查看用户权限
SHOW GRANTS FOR username;
其中,将 username
替换为要查看权限的用户的用户名。
此命令将显示该用户的所有权限。如果想查看所有用户的权限,可以使用以下命令:
SELECT user, host, Grant_priv, Super_priv FROM mysql.user;
此命令将显示所有用户的用户名、主机名以及他们是否具有 Grant_priv
和 Super_priv
权限。