MySQL数据库权限体系介绍
本文主要向大家介绍了MySQL数据库权限体系,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。
一、权限体系简介:
MySQL的权限体系在实现上比较简单,相关权限信息主要存储在mysql.User、mysql.db、mysql.Host、mysql_table_priv和mysql.column_priv几个表中。由于权限信息数据量比较小,而且访问又比较频繁,所以MySQL在启动时就会将所有的权限信息都Load到内存中保存在几个特定的结构中,所以才有了我们手动修改了权限相关的表后,都需要通过执行"FLUSH PRIVILEGES" 命令重新加载MySQL的权限信息。我们也可以通过GRANT,REVOKE或者DROP USER命令所做的修改权限后也会同时更新到内存结构中的权限信息。
二、权限的赋予与去除
要为某个用户授权可以使用GRANT命令,要去除某个用户现有的权限可以使用REVKOE命令,当给用户授权不仅需要提供用户名,还可以指定通过哪个主机访问,下面提供给简单的列子:
#创建一个用户test1只能从本机登录并赋予这个用户拥有test库的查询权限
mysql> grant select on test.* to test1@'localhost' identified by 'test123';
Query OK, 0 rows affected (0.03 sec)
#创建一个用户test2可以从互联网上任何一台主机登录并赋予这个用户拥有test库的查询权限
mysql> grant select on test.* to test2@'%' identified by 'test234';
Query OK, 0 rows affected (0.02 sec)
刷新权限,并查询用户test1的权限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql> show grants for test1@'localhost';
+--------------------------------------------------------------------------------------------------------------+
| Grants for test1@localhost |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test1'@'localhost' IDENTIFIED BY PASSWORD '*676243218923905CF94CB52A3C9D3EB30CE8E20D' |
| GRANT SELECT ON `test`.* TO 'test1'@'localhost' |
+--------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
删除用户test1的权限
mysql> revoke select on test.* from 'test1'@'localhost' identified by 'test123';
Query OK, 0 rows affected (0.00 sec)
在此查看用户test1,已经没有权限了。
mysql> show grants for test1@'localhost';
+--------------------------------------------------------------------------------------------------------------+
| Grants for test1@localhost |
+--------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test1'@'localhost' IDENTIFIED BY PASSWORD '*676243218923905CF94CB52A3C9D3EB30CE8E20D' |
+--------------------------------------------------------------------------------------------------------------+
三、权限级别
mysql的权限分为5个级别,分别如下:
1、Global Lovel:
Global Lovel的权限控制又称为全局控制权限,所有权限信息u保存在mysql.User 表中,Global Lovel的所有权限都是针对整个mysqld的,对所有mysql数据库下的所有表及所有字段都有效。如果一个权限是以Global Lovel来授予的,则会覆盖其他所有级别的相同权限设置。Global Lovel主要有如下权限:
新创建用户后不授权时所用到拥有最小的权限
要授予Global Lovel权限只需要在执行GRANT命令的时候,用*.*来指定范围是Global即可,如果有多个用户,可以使用逗号分隔开,如下:
mysql> grant all on *.* to test3,test4@'localhost' identified by 'test123';
Query OK, 0 rows affected (0.00 sec)
2、Database Level
Database Level是在Global Level之下,其他三个Level之上的权限级别,其作用域即为所指定数据库中的所有对象,和Database Level比 Database Level主要少了以下几个权限,CREATE USER,FILE,PROCESS,RELOAD,REPLICATION CLIENT,REPLICATION SLAVE, SHOW DATABASES, SHUTDOWN,没有增加任何权限,
要授予Database Level权限,用如下方式实现:
1)、在执行GRANT命令的时候,通过database.* 来指定作用域为整个数据库:或者先创建一个没有权限的用户在使用过GRANT命令来授权。
mysql> grant all on test.* to test3,test4@'localhost' identified by 'test123';
Query OK, 0 rows affected (0.00 sec)
3、Table Level
Table Level权限可以被Global Level和Database Level权限覆盖,Table Level权限的作用域是授权所指定的表,可以通过如下语句来授权:
mysql> grant all on test.test1 to wolf@'%' identified by 'wolf@123';
Query OK, 0 rows affected (0.01 sec)
mysql> show grants for wolf@'%';
+-----------------------------------------------------------------------------------------------------+
| Grants for wolf@% |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'wolf'@'%' IDENTIFIED BY PASSWORD '*F693761139616215C4AC1A7C23A8B8F5B94704D1' |
| GRANT ALL PRIVILEGES ON `test`.`test1` TO 'wolf'@'%' |
+-----------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
Table Level权限由于作用域仅限于每张表,所以权限种类也比较小,只有如下8个权限,ALTER,CREATE,DELETE,DROP,INDEX,INSERT,SELECT,UODATE
4、Column Level
Column Level权限的作用域仅限于某个表的某个列,Column Level同样可以被Database Level,Database Level,Table Level同样的权限覆盖掉,由于Column Level权限和Routine Level权限作用域没有重合部分所以不会被覆盖,Column Level权限仅有SELECT,UPDATE,INSERT三种,通过如下方式赋予权限(需要赋予权限的列名用括号括起来):
mysql> grant select(id,name) on test.test to kelly@'%' identified by 'wolf123';
Query OK, 0 rows affected (0.01 sec)
mysql> show grants for kelly@'%';
+------------------------------------------------------------------------------------------------------+
| Grants for kelly@% |
+------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'kelly'@'%' IDENTIFIED BY PASSWORD '*30F17FEB599168D8F1BC498525B27B83A13F54E3' |
| GRANT SELECT (name, id) ON `test`.`test` TO 'kelly'@'%' |
+------------------------------------------------------------------------------------------------------+
5、Routine Level
Routine Level权限主要只有EXECUTE和ALTER ROUTINE两种,主要针对的对象是procedure 和function两种对象,要赋予Routine Level权限需要指定数据库和相关对象,如下:
mysql> grant execute on test.pl to kelly@'%';
Query OK, 0 rows affected (0.01 sec)
本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!
MySQL数据库权限体系介绍的更多相关文章
- mysql数据库的权限体系介绍
一.权限体系简介: MySQL的权限体系在实现上比较简单,相关权限信息主要存储在mysql.User.mysql.db.mysql.Host.mysql_table_priv和mysql.column ...
- Mysql 之权限体系
1,MySQL权限体系 MySQL 的权限体系大致分为5个层级: 全局层级: 全局权限适用于一个给定服务器中的所有数据库.这些权限存储在mysql.user表中.GRANT ALL ON .和REVO ...
- MySQL数据库权限管理
# MySQL数据库权限管理 ### 前言------------------------------ 对不同的用户赋予不同级别的访问权限是个好习惯- 杜绝一些恶意用户 ### 参考资料------- ...
- Mysql数据库的简单介绍与入门
Mysql数据库的简单介绍与入门 前言 一.下载与安装 1.下载 官网下载MYSQL5.7.21版本,链接地址https://www.mysql.com/downloads/.下载流程图如下: 找到M ...
- [转]PostgreSQL 逻辑结构 和 权限体系 介绍
摘要: 本文旨在帮助用户理解PostgreSQL的逻辑结构和权限体系,帮助用户快速的理解和管理数据库的权限. 逻辑结构 最上层是实例,实例中允许创建多个数据库,每个数据库中可以创建多个schema,每 ...
- MySQL数据库----IDE工具介绍及数据备份
一.IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 二.MySQL数据备份 # ...
- mysql数据库权限及编码
CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci; 在tigase中,发送消息 ...
- MySQL数据库权限分类
一.权限表 mysql数据库中的3个权限表:user .db. host 权限表的存取过程是: 1)先从user表中的host. user. password这3个字段中判断连接的IP.用户名.密码是 ...
- MySQL数据库安装和介绍
一.概述 1.什么是数据库 ? 答:数据的仓库,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Server等 ? 答:他们均是一种软件,都有两个主要的功 ...
随机推荐
- [HDU4635] Strongly connected
传送门:>Here< 题意:给出一张DAG,问最多添加几条边(有向)使其强连通分量个数大于1 解题思路 最少添加几条边使其强连通我们是知道的,非常简单,就是入度为0的点与出度为0的点的较大 ...
- 我的SSH框架实例(附源码)
整理一下从前写的SSH框架的例子,供新人学习,使用到了注解的方式. 源码和数据库文件在百度网盘:http://pan.baidu.com/s/1hsH3Hh6 提取码:br27 对新同学的建议:最好的 ...
- 解决 phpstorm 运行卡,自动关闭等问题
解决 phpstorm 自动关闭问题: 使用文件搜索工具(可在本博客搜索“管理工具”,或查找安装目录) 找到phpstorm.vmoptions文件,使用记事本打开. 添加以下两行代码: -Dawt. ...
- require.js基本用法
1.require.js的加载 使用require.js的第一步,是先去官方网站下载最新版本. 下载后,假定把它放在js子目录下面,就可以加载了. 1 <script src="js/ ...
- 【HDU - 4345 】Permutation(DP)
BUPT2017 wintertraining(15) #8F 题意 1到n的排列,经过几次置换(也是一个排列)回到原来的排列,就是循环了. 现在给n(<=1000),求循环周期的所有可能数. ...
- 工作机制.py
rpc_server.py# !/usr/bin/env python3.5# -*- coding:utf-8 -*-# __author__ == 'LuoTianShuai'"&quo ...
- UVA10559 Blocks(区间dp)
有n个带有颜色的方块,没消除一段长度为x的连续的相同颜色的方块可以得到x^2的分数,让你用一种最优的顺序消除所有方块使得得分最多. 输入格式 第一行包含测试的次数t(1≤t≤15) 每个案例包含两行. ...
- [Vani有约会]雨天的尾巴(树上差分+线段树合并)
首先村落里的一共有n座房屋,并形成一个树状结构.然后救济粮分m次发放,每次选择两个房屋(x,y),然后对于x到y的路径上(含x和y)每座房子里发放一袋z类型的救济粮. 然后深绘里想知道,当所有的救济粮 ...
- 2018蓝桥杯 省赛B题(明码)
标题:明码汉字的字形存在于字库中,即便在今天,16点阵的字库也仍然使用广泛.16点阵的字库把每个汉字看成是16x16个像素信息.并把这些信息记录在字节中.一个字节可以存储8位信息,用32个字节就可以存 ...
- js jquery数组去重
数组去重建议直接使用jquery的 $.unique(arr);方法,此外比较好的方法是本文中的unique3方法比较快用了一个hash表,就是所谓的空间换时间.本文还提供了很多其他写法,都是大同小异 ...