mysql的访问分两个阶段:
1. 检查用户是否具有建立与mysql的连接的权利,主要依靠检查:用户名、主机名和密码;
2. 建立了连接后,服务器检查客户端发出的每个请求。看是否有足够的权限实施它。例如执行select命令等。
二、 权限控制
1. mysql访问权限管理通过6个表:user、db、host、tables_priv、columns_priv和procs_priv来控制,6个表的作用如下表:
表名
|
含义
|
user
|
控制“用户名”(user)可以从哪一台“主机名”(host)访问mysql
该表包括全局权限的控制
|
Db
|
规定哪个用户可以访问哪个数据库
|
Host
|
host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限
|
Tables_priv
|
规定谁可以访问数据库的哪一个表
|
columns_priv
|
规定谁可以访问表的哪一个列
|
procs_priv
|
规定谁可以执行哪个存储过程
|
2. mysql识别的权限如下表:
Mysql权限
|
对应权限列
|
含义
|
用于数据表访问
|
Select
|
Select_priv
|
是否可以读取表的数据
|
Insert
|
Insert_priv
|
是否可以向表中插入新的记录
|
delete
|
Delete_priv
|
是否可以删除表中现有记录
|
Update
|
Update_priv
|
是否可以更新表中现有记录
|
Lock tables
|
Lock_tables_priv
|
是否可以锁定表
|
用于改变数据库、数据表和视图
|
Create
|
Create_priv
|
是否可以创建一个新的数据库和数据表
|
Create temporary table
|
Create_tmp_table_priv
|
是否可以创建临时表
|
Alter
|
Alter_priv
|
是否可以重命名并改变它的结构
|
Index
|
Index_priv
|
是否可以添加或删除表索引
|
References
|
References_priv
|
暂不用
|
Drop
|
Drop_priv
|
是否可以删除现有的数据库或表
|
Create view
|
Create_view_priv
|
是否可以创建视图
|
Show view
|
Show_view_priv
|
是否是可以检查视图定义
|
用于存储过程
|
Alter routine
|
Alter_routine_priv
|
是否改变现有的存储过程
|
Create routine
|
Create_routine_priv
|
是否可以定义新的存储过程
|
Execute
|
Execute_priv
|
是否可以执行存储过程
|
用于数据库访问
|
File
|
File_priv
|
是否可以读取和改变本地文件系统的文件
|
Create user
|
Create_user_priv
|
是否可以创建新用户
|
用于mysql管理
|
Grant option
|
Grant_priv
|
是否可以赋予其他用户个人的权限
|
Show databases
|
Show_db_priv
|
是否可以看到一份全体数据库的清单
|
Process
|
Process_priv
|
是否可以看淡到其他用户的mysql进程
|
Super
|
Super_priv
|
是否可以终止其他用户的mysql进程(kill)
|
Reload
|
Reload_priv
|
是否可以执行各种命令
|
Replication client
|
Repl_client_priv
|
是否可以决定镜像系统中参与者的信息
|
Replication slave
|
Repl_slient_priv
|
是否可以通过镜像机制读取msyql服务器数据
|
Shoutdown
|
Shutdown_priv
|
是否可以关闭mysql
|
3. 6个数据权限表的结构
user表
|
db表
|
host表
|
tables_priv表
|
columns_pirv表
|
proc_priv表
|
访问控制列
|
Host
|
Host
|
Host
|
Host
|
Host
|
Host
|
User
|
Db
|
Db
|
Db
|
Db
|
Db
|
Password
|
User
|
|
User
|
User
|
User
|
数据库/表权限控制列
|
Select_priv
|
Select_priv
|
Select_priv
|
Table_name
|
Table_name
|
Routine_name
|
Insert_priv
|
Insert_priv
|
Insert_priv
|
Grantor
|
Column_name
|
Routine_type
|
Update_priv
|
Update_priv
|
Update_priv
|
Timestamp
|
Timestamp
|
Grantor
|
Delete_priv
|
Delete_priv
|
Delete_priv
|
Table_priv
|
Column_priv
|
Proc_priv
|
Create_priv
|
Create_priv
|
Create_priv
|
Column_priv
|
|
Timestamp
|
Drop_priv
|
Drop_priv
|
Drop_priv
|
|
|
|
Reload_priv
|
Grant_priv
|
Grant_priv
|
|
|
|
Shutdown_priv
|
References_priv
|
References_priv
|
|
|
|
Process_priv
|
Index_priv
|
Index_priv
|
|
|
|
File_priv
|
Alter_priv
|
Alter_priv
|
|
|
|
Grant_priv
|
Create_tmp_table_priv
|
Create_tmp_table_priv
|
|
|
|
References_priv
|
Lock_tables_priv
|
Lock_tables_priv
|
|
|
|
Index_priv
|
Create_view_priv
|
Create_view_priv
|
|
|
|
Alter_priv
|
Show_view_priv
|
Show_view_priv
|
|
|
|
Show_db_priv
|
Create_routine_priv
|
Create_routine_priv
|
|
|
|
Super_priv
|
Alter_routine_priv
|
Alter_routine_priv
|
|
|
|
Create_tmp_table_priv
|
Execute_priv
|
Execute_priv
|
|
|
|
Lock_tables_priv
|
|
|
|
|
|
Execute_priv
|
|
|
|
|
|
Repl_slave_priv
|
|
|
|
|
|
Repl_client_priv
|
|
|
|
|
|
Create_view_priv
|
|
|
|
|
|
Show_view_priv
|
|
|
|
|
|
Create_routine_priv
|
|
|
|
|
|
Alter_routine_priv
|
|
|
|
|
|
Create_user_priv
|
|
|
|
|
|
安全控制列
|
|
|
|
|
|
ssl_type
|
|
|
|
|
|
ssl_cipher
|
|
|
|
|
|
x509_issuer
|
|
|
|
|
|
x509_subject
|
|
|
|
|
|
资源控制列:
|
max_questions :规定每个小时之内可以允许执行多少次数据查询
|
max_updates :规定每个小时之内可以允许执行多少次数据修改
|
max_connections :规定每个小时单个用户可以连接到少此
|
max_user_connections :规定单个用户同时连接多少数
|
说明:1).user表中的字段列代表的全局的权限,即一个用户如果在user表中设置允许某个操作,则该用户对所有数据库都可以操作,例如如果给一个用户授予select,则该用户对所有数据库都读的权限;
2).当user表的全局权限与其他表对象权限都有设置时,有下列关系:
User表
|
Y(select为例)
|
N(select为例)
|
Y
|
Y
|
Y
|
N
|
Y
|
N
|
3.数据访问列的内容
3.1、 Host 字段
一个Host列值可以是一个主机名或一个IP地址。可以用通配符指定Host值。可以使用SQL的模式字符“%”和“_”并具有当你在一个查询中使用LIKE算符同样的含义(不允许regex算符)。 (例如:192.168.3.%匹配任何在192.168.3 C类子网的主机。)
3.2、User 字段
用户名必须是文字的或空白。一个空白值匹配任何用户。%作为一个User值不意味着空白,而是匹配一个字面上的%名字, 当一个到来的连接通过user表被验证而匹配的记录包含一个空白的User值,客户被认为是一个匿名用户。
3.3、Password字段
口令值可以是空或非空,不允许用通配符。一个空口令不意味着匹配任何口令,它意味着用户必须不指定口令。
3.4、Db字段
在columns_priv和tables_priv表中,Db值必须是真正的数据库名(照字面上),不允许模式和空白。在db和host中,Db值可以以字面意义指定或使用SQL模式字符'%'或'_'指定一个通配符。一个'%'或空白匹配任何数据库。
3.5、Table_name,Column_name字段
这些列中的值必须是照字面意思的表或列名,不允许模式和空白。
3.6、mysql匹配连接关系如下
三、权限分配管理:
-
权限可分为以下层级:
全局层级: 全局权限适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中。GRANT ALL ON *.*和REVOKE ALL ON *.*只授予和撤销全局权限。
数据库层级 :数据库权限适用于一个给定数据库中的所有目标。这些权限存储在mysql.db和mysql.host表中。GRANT ALL ON db_name.*和REVOKE ALL ON db_name.*只授予和撤销数据库权限。
表层级:表权限适用于一个给定表中的所有列。这些权限存储在mysql.talbes_priv表中。GRANT ALL ON db_name.tbl_name和REVOKE ALL ON db_name.tbl_name只授予和撤销表权限。
列层级:列权限适用于一个给定表中的单一列。这些权限存储在mysql.columns_priv表中。当使用REVOKE时,您必须指定与被授权列相同的列。
子程序层级:CREATE ROUTINE, ALTER ROUTINE, EXECUTE和GRANT权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予为子程序层级,并存储在mysql.procs_priv表中。
-
授权管理:根据操作人员的所在职责要求具体操作如下:
2.1:数据库管理员:
权限:全局层的所有的操作权限:
操作:grant all privileges on *.* to ‘usename’@’hostnane’ IDENTIFIED
by 'password' with grant option
2.2:数据库操作者:
权限:表层级的访问和更新权限:
2.2.1授予某个用户某个表的操作权限:
操作:grant select,update on dbname.tbl_name to
‘usename’@’hostnane’ IDENTIFIED by 'password'
2.2.2授予某个用户表的某个字段操作权限:
操作:grant update(column_name) on dbname.tbl_name to
‘usename’@’hostnane’ IDENTIFIED by 'password'
2.3:数据访问者:
</s
分享到:
相关推荐
ssh+mysql权限管理自动建库 easy-ui 用户角色 菜单 功能
•一 : mysql 用户管理与恢复root 密码[1] ...•二:mysql 授权管理[11] •1 授予权限[12] •1.1 普通授权[13] •1.2 让被授权的用户可以将权限授予他人[14] •2 查看用户权限[15] •3 撤销用户权限[16]
spring boot +mybatis+mysql 权限管理系统 包含基础代码 和代码生成器 api接口 token 认证 微信支付接口 支付宝支付 微信开发相关接口 等 csdn 没法上传图片 没法做很多说明 下载看看吧 非常适合快速开发神器
实验十一mysql权限管理可用.pdf
第13章MySQL权限管理.docx
订单管理模块,数据统计echarts表,该管理系统通过Vue+node.js+Element-UI+MySql实现,其主要功能模块含有用户登陆模块,用户管理模块,权限管理模块,商品管理模块,订单管理模块。 论文应当对各个部分的设计和实现...
Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统。 Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统 Spring+SpringMVC+...
很实用的权限管理系统。运用java技术mysql数据库加上S2SH三大框架开发而成的。
保留了原来的SQL文件 增加了改动后的mysql.sql文件,方便大家在MYSQL环境下运行
spring boot+activiti+shiro+layui+Mysql权限管理系统源码,系统经多次测试,运行无误,大家放心下载
授权法,介绍远程用户连接mysql数据库,给任意远程主机授权访问mysql server的权限。
基本SSH+maven3+mysql的权限管理。 附件:mysql数据表、数据库model.权限系统war包。系统源码。 还有直接复制过来的项目。要运行需要修改一些地方。大家都会的! 可以自己创建数据库,也可以修改下hibernate配置文件...
可以通过异常:Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Acc
一套Struts+Spring+Hibernate基于角色的权限管理系统!~~ LsZamFM"F@ 由于加上JAR文件太大,所以我去除了所有JAR的文件,自己可以添加,如有需要,我可以分批把jar文件上传上来..... h9o`Mg 此源码供大家学习讨论...
jwt+springboot+mybatis+mysql 权限管理系统
刷新权限mysql> flush privileges。 操作语句查询mysql> select * from Contact。 mysql> select count(*) from Contact。 修改mysql> update Contact set RegTime=‘2008-01-01 00:00:00’ where id=1。 mysql> ...
MySQL多表查询、事务和管理用户及授权
通用权限管理系统可练手可毕设,如果项目中有权限开发要求可直接拿来基础开发。 系统设计包括前端Vue框架和后端SpringBoot框架的搭建,以及数据库和权限控制模块的设计。前端使用Vue框架进行页面开发,利用Vue ...
MYSQL用户管理和权限管理.pdfMYSQL用户管理和权限管理.pdf
MySQL基础 1 MySQL安装 1 下载安装MySQL 1 配置MySQL 1 下载安装mysql-gui-tools 2 数据库入门 3 MySQL-SQL基础 3 MySQL常用函数 6 ...MySQL授权管理 17 未解决及已解决问题 19 未解决问题 19 已解决问题 19