MySQL:DCL(数据控制语言)
<1> 简介
MySql默认使用的都是 root 用户,超级管理员,拥有全部的权限。除了root用户以外,我们还可以通 过DCL语言来定义一些权限较小的用户, 分配不同的权限来管理和维护数据库。
<2> 创建用户
语法格式
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
参数 | 说明 |
用户名 | 创建的新用户,登录名称 |
主机名 | 指定该用户在哪个主机上可以登陆,本地用户可用 localhost 如果想让该用户可以 从任意远程主机登陆,可以使用通配符 % |
密码 | 登录密码 |
1) 创建 admin1 用户,只能在 localhost 这个服务器登录 mysql 服务器,密码为 123456
CREATE USER 'admin1'@'localhost' IDENTIFIED BY '123456';
创建的用户在名字为 mysql的 数据库中的 user表中
2) 创建 admin2 用户可以在任何电脑上登录 mysql 服务器,密码为 123456
CREATE USER 'admin2'@'%' IDENTIFIED BY '123456';
% 表示 用户可以在任意电脑登录 mysql服务器.
<3> 用户授权
创建好的用户,需要进行授权
语法格式
GRANT 权限 1, 权限 2... ON 数据库名.表名 TO '用户名'@'主机名';
参数 | 说明 |
权限 | 授予用户的权限,如 CREATE、ALTER、SELECT、INSERT、UPDATE 等。 如果要授 予所有的权限则使用 ALL |
ON | 用来指定权限针对哪些库和表 |
TO | 表示将权限赋予某个用户 |
1) 给 admin1 用户分配对 db4 数据库中 products 表的 操作权限:查询
GRANT SELECT ON db4.products TO 'admin1'@'localhost';
2) 给 admin2 用户分配所有权限,对所有数据库的所有表
GRANT ALL ON *.* TO 'admin2'@'%';
3) 使用admin1用户登录数据库 测试权限
4) 发现数据库列表中 只有db4, 表只有 product
5) 执行查询操作
-- 查询account表 SELECT * FROM products;
6) 执行插入操作,发现不允许执行,没有权限
-- 向 products 表中插入数据 -- 不允许执行 INSERT INTO products VALUES('p010','小鸟伏特加',1000,1,NULL)
<4>查看权限
语法格式
SHOW GRANTS FOR '用户名'@'主机名';
查看root用户权限
-- 查看root用户的权限 SHOW GRANTS FOR 'root'@'localhost';
GRANT ALL PRIVILEGES 是表示所有权限
<5>删除用户
语法格式
DROP USER '用户名'@'主机名';
删除 admin1 用户
-- 删除 admin1 用户 DROP USER 'admin1'@'localhost';
<6>查询用户
选择名为 mysql的数据库, 直接查询 user表即可
-- 查询用户 SELECT * FROM USER;