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;

 

posted @ 2021-07-17 20:41  Jasper2003  阅读(235)  评论(0编辑  收藏  举报