-- 注意用户所有的具有权限的信息,都是存放在系统数据库mysql的user表中,我们创建的所有用户都会自动在这个表

-- mysql的user表中的第一列是Host,也就是主机,一般值为localhost,localhost表示本机的意思。其他列表示各种权限,N表示没有,Y表示有 -- 主机的作用: 当前用户只能在哪一个主机上访问当前mysql服务器。例如Host如果是localhost,那就不支持远程访问,只能本机访问

 

 

DCL-管理用户

 

-- 创建用户,用户名为itcast,设置该用户只能在主机localhost访问,密码123456

 

-- 创建用户,用户名为heima,设置该用户可以在任意主机访问该数据库,密码123456

 

-- 修改用户heima的访问密码为123

 

-- 删除itcast用户和heima用户

 

 

如何验证我们创建的用户是否成功

 

按住电脑键盘的win+R,输入:mysql -u itcast -p。然后输入密码123456。输入show databases

验证任意主机: 去找另一台电脑,输入:mysql -h 你原本电脑ip -P 3306 -u itcast -p。然后输入密码123456

 

 

为什么登录到其他用户只能看到一两个数据库

 

原因:我们平时登录一般都是root用户,有最高权限,可以查看所有root用户的所有已存在的数据库

其他用户没有查看其他数据库的权限,只有一两个数据库可以show databases查看到

我们在创建一个用户后,往往会给这个用户分配相关权限,我们下面会讲到权限控制

 

 

注意事项

 

1、主机名可以使用 % 通配符

2、需要使用这节课知识的这类SQL开发人员较少,主要是DBA(数据库管理员)使用

3、退出当前用户:exit

 

 

DCL-权限控制

 

-- MySQL中定义了很多种权限,但是常用的就以下几种

权限描述
all,all privileges所有权限
select查询数据的权限
insert插入数据的权限
update修改数据的权限
delete删除数据的权限
alter修改表的权限
drop删除数据库/表/视图的权限
create创建数据库/表的权限

 

 

以查询权限为例,演示一下如何操作

 

查询权限

 

授予权限。如果是给所有数据库的所有表赋予权限就可以使用.

 

撤销权限

 

-- 创建数据库,数据库名为itcast

 

-- 创建用户,用户名为heima,设置该用户可以在任意主机访问该数据库,密码123456

 

-- 查询权限。GRANT USAGE ON . TO heima@% : 表示没有任何权限

 

-- 授予权限。all表示所有权限。表示所有,下面的是itcast数据库的所有表。

 

 

最直观的看heima用户有没有拿到在itcast数据库的权限的方式就是如下

 

win+R,cmd,输入:mysql -h 169.254.152.247 -P 3306 -u heima -p。然后输入密码123456

输入: show databases; 查看heima用户能访问哪些数据库,发现不能输出itcast,即还不能访问itcast数据库

执行上面的授予权限的代码

输入: show databases; 查看heima用户能访问哪些数据库,发现可以输出itcast,即能访问itcast数据库

输入: use itcast;

输入: show tables; 查看itcast数据库的所有表

在授予权限之前heima用户不能访问itcast数据库,授予权限之后你就可以访问啦

 

-- 撤销权限。all表示所有权限。撤销heima用户在itcast数据库的所有权限

 

-- 注意多个权限之间,使用逗号分隔 -- 注意授权时,数据库名和表名可以使用 * 进行通配,代表所有