mysql_涂抹笔记--第五章 mysql 数据库中的权限体系

第五章  mysql 数据库中的权限体系

 

mysql 数据库服务采用的是白名单的权限策略,也就是说,明确指定了哪些用户能够做什么,但没法明确地指定某些用户不能做什么,对权限的验证主要是通过mysql库下的几个数据字典表,来实现不同粒度的权限需求。

 

1.权限授予与回收
在mysql 数据库里对于用户权限的授予和解除比较灵活,既可以通过专用命令,也可以通过直接操作字典来实现

创建用户
create user jss;

删除用户
drop user "jss"@"%";

设置密码

set password for 'root'@'localhost'=password('123456')
set password for 'root'@'%'=password('123456')

创建用户设置密码
create user jss_ip@'127.0.0.1' identified by '111111';

创建用户设置密码,并授权
grant select,drop on *.* to 'yang'@'localhost' identified by '123456';
grant all privileges on *.* to 'yang1'@'localhost' identified by '123456';
flush privileges;

查看用户 yang1@localhost 有哪些权限
show grants for 'yang1'@'localhost';

收回权限
revoke select on *.* from 'yang1'@'localhost'

查看用户 yang1@localhost 有哪些权限
show grants for 'yang1'@'localhost';

 

收回全部权限, 但是usage这个权限不行, 用户创建默认权限
revoke all privileges on *.* from 'yang1'@'localhost';

2.权限级别
权限分为5类:(全局 数据库 表 列 程序) 通过对这5大类的权限细分,可以精确的为某个用户分配从某台机器连接进来的访问某个数据库下某个表的某个列的某个记录权限

授权主要通过grant命令,对应的权限关键字

全局权限
与全局相关的权限信息记录在mysql.user表中,这张表关登录,控制用户能不能连接这样一等一的最重要的事,全局权限不一定拥有所有的权限,它具体指的是能够拥有该mysql服务器所有数据库的[所有]对象的[所有]权限 (注 []表示可选)

数据库权限 linux命令行有问题, 用navicat可以实现
创建一个用户yang_name 拥有全局的create的权限
grant create on *.* to yang_name;


数据库级别的权限, 主要用于控制账户('user'@'host')操作某个数据库的权限,在这一粒度对用户做了授权后,用户就拥有该数据库下[所有]对象的[所有]权限

数据库级别的权限信息记录在mysql.db表中。

库权限 创建一个用户yang_name1 拥有yang库中的create权限
grant create on yang.* to yang_name1;

表权限 创建一个用户yang_name3,拥有yang库中test表中的所有权限
grant all on yang.users to yang_name3;

列级权限,可以实现只允许从某个主机来的某个用户访问某库的某表,某列
grant select(username) on yang.users to yang1_1

 

原文地址:https://www.cnblogs.com/augustyang/p/7747201.html