day18:用户权限管理

用户与数据库服务器交互数据,分为两个阶段:

(1)你有没有权连接上来
(2)你有没有权执行本操作

1、你有没有权连接上来

服务器如何判断用户有没有权连接上来?

依据:

1)你从哪里来?host
2)你是谁?user
3)你的密码是多少?password

用户的这三个信息,存储在mysql库中的user表中

2、你有没有权执行本操作

在mysql中,有一个库是mysql库,在这个库中有三个表,一个是user表,user表中存储了所有用户的权限信息。一个是db表,db表存储的是所有用户在数据库层的权限信息。一个是tables_priv表,tables_priv表存储的是所有用户在表层的权限信息。

用户登录,user表首先能限制用户登录,其次还保存了该用户的全局权限,如果该用户没有任何权限,那么将从db表中查找该用户是否有某个数据库的操作权限,如果都没有,将从table_priv表中查找该用户是否有某个表的操作权限,如果有,则该用户可以按照已有的权限来操作该表。

一、管理用户

1、查看用户

首先切换到MySQL数据库

use  mysql;

查看所有用户

select * from user;

2、创建用户

语法:create  user  '用户名'@'主机名'  identified  by ‘密码’;

create user 'zhangsan'@'localhost' identified by '123456';

3、修改用户密码

语法:update  user  set password=password('新密码')  where  user='用户名';

update user set password=password('123') where user='zhangsan';

修改完密码之后需要刷新以下,否则密码不会被修改,执行以下语句刷新:

flush privileges;

4、删除用户

语法:drop user  '用户名'@'主机名';

drop user 'zhangsan'@'localhost';

二、权限管理

1、查询权限

语法:show grants  for '用户名'@'主机名';

show grants for 'root'@'localhost';
show grants for 'zhangsan'@'localhost';

2、授予权限

语法:grant  权限列表  on  数据库名.表名 to  '用户名'@'主机名';

例如:给张三用户授予所有的权限,在任意数据库任意表上

grant all on *.* to 'zhangsan'@'localhost';

例如:给李四用户授予访问wgy数据库demo表查询的权限

create user 'lishi'@'localhost' identified by '123456';
grant select on wgy.demo1 to 'lishi'@'localhost';

3、撤销权限

语法:revoke  权限列表  on  数据库名.表名  from  '用户名'@'主机名';

例如:撤销张三用户的所有权限

revoke all on *.* from 'zhangsan'@'localhost';

例如:撤销李四用户访问wgy数据库demo表查询的权限

revoke select on wgy.demo1 from 'lishi'@'localhost';

常用权限:all、create、drop、select、insert、delete、update

原文地址:https://www.cnblogs.com/wuguiyu/p/11940664.html