DCL:Data Control Language,用于管理数据库中数据访问权限的语言
GRANT
GRANT允许特定用户或角色执行某些操作,如查询、插入、更新或删除数据等。
GRANT 权限类型 ON 对象 TO 用户
权限类型:SELECT。INSERT、UPDATE、DELETE
对象:通常是数据库名.*
,表示数据库中的所有表
用户:指定要赋予权限的用户,可以包含用户名和主机名,格式为user@'host'
## 授予用户common_user在testdb数据库上的所有表进行查询的权限 GRANT SELECT ON testdb.* TO common_user@'%' ## 授予用户common_user插入数据的权限 GRANT INSERT ON testdb.* TO common_user@'%' ## 查看用户权限 SHOW GRANTS FOR 用户
例:添加一个用户为为newuser,密码为password123,允许从任何主机连接,并且拥有对名为example数据库的所有权限
## GRANT ALL PRIVILEGES:授予用户所有权限 ## ON exampledb.*:将权限限制在exampledb数据库中的所有表上 ## TO 'newuser'@'%':创建了一个名为newuser,可以从任何主机连接的用户 ## IDENTIFIED BY 'password123':设置了用户的密码为password123 GRANT ALL PRIVILEGES ON exampledb.* TO 'newuser'@'%' INDENTIFIED BY 'password123'; ## 最后还要执行FLUSH PRIVILEGES来刷新权限 FLUSH PRIVILEGES
注意:
- 新创建的用户默认没有任何权限,除了登录mysql服务器的权限。需要使用GRANT语句来赋予他们额外的权限。
- 在授权时,可以使用通配符
*
来指代所有数据库和所有表,也可以指定具体的数据库和表来赋予更精细的权限。
REVOKE
移除之前授予的权限。如果某个用户不再需要对某数据的访问权,可以通过REVOKE命令来回收其权限。
REVOKE 权限类型 ON 对象 FROM 用户
权限类型:SELECT、DELETE、INSERT、UPDATE
对象:数据库名.*
用户:指定要赋予权限的用户,可以包含用户名和主机名,格式为user@'host'
## 回收用户的所有权限,ALL PRIVILEGES表示所有权限,GRANT OPTION表示收回授权其他用户权限的能力 REVOKE ALL PRIVILEGES, GRANT OPTION FROM 用户 ## 回收SELECT,INSERT权限 REVOKE SELECT, INSERT ON testdb.* FROM common_user@'%'
- 执行REVOKE语句,执行者必须拥有响应的权限。如果要撤销的是代理用户,需要使用
REVOKE PROXY
命令。
CREATE USER
创建新的用户账户,并为其设置密码,以便于后续权限的管理
## 'username'是你想要创建的用户名 ## @'hostname'指定了用户可以从哪个主机连接,可以用%表示允许从任何主机连接 ## IDENTIFIED BY 'password'设置了用户的密码 CREATE USER 'username'@'hostname' IDENTIFIED BY 'password'; CREATE USER 'user1'@'%' IDENTIFIED BY 'password1';
- 执行CREATE USER语句需要具有创建用户权限的账号,通常是数据库管理员账户。
- 创建新用户后,通常还需要使用GRANT语句为用户分配具体的数据库权限。