mysql 权限控制具体解释

时间:2022-10-01 12:02:14

概述

mysql权限控制在不同的上下文和不同的操作水平上都能够进行控制,他们包括例如以下几个

** 管理权限能够同意用户管理mysql server的操作。

这些权限控制是全局的,不是针对某个特定的数据库的

** 数据库权限相应到一个数据库和里面的对象。这些权限被用来控制特定的数据库或者全局的,他们能够应用到全部的数据库

** 数据库对象的权限相应到数据库表,索引。视图。和存储过程,能够对数据库内部的某个对象进行授权控制。

权限的存储位置

** 账号权限信息被存储在mysql数据库的user,db,tables_priv ,columns_priv ,procs_priv 表中。

** mysql启动的时候读取这些信息到内存中去。或者在权限变更生效的时候,又一次读取到内存中去

mysql 账号管理

mysql 账号名字由username和主机名组成。这样能够同意同已用户在不同主机上分别控制权限。

这一部分描写叙述怎样分配账户名字包括特定的值和模糊

匹配规则,在sql语句中,create user, grant ,set password的时候。会用到这些规则:

- ‘user_name’@’host_name’ 就是账户名字的语法规则

- 只包括username的账号等同于 ‘username’@’%’

- 假设username是合法的字符,username和主机名不必用引號引起来。

在你的username包括’-‘这种字符的时候,须要用引號引起来。或者说主机名有

通配符的时候须要引起来。

- 引號能够用单引號也能够用双引號。

- 主机和username必须分别被引號括起来。假设必须要括的话。

mysql在mysql数据库中分别用两个列去存储username和主机名:

- 用户表每一个账户一行记录,此表也表示了账号有哪些全局权限。

- 其它授权表表示了账号拥有的数据库和数据库内的对象。这些表都实username和主机列。每行的账户信息和user表的账户信息是奕扬的。

username和主机名能够包括特殊字符或者通配符,以下是这些规则:

username要么是一个非空字符串字面上必须匹配连接字符串中指名的username,或者一个空字符串就会匹配人户username。空username是一个匿名用户。

主机名也能够又好多形式。或者通配符:

- 主机名能够是一个IP地址或者一个localhost样的字符串。

- %和sql中的like的效果是一样的。比如 ’%.mysql.com’ 就会匹配 a.mysql.com.

权限控制阶段1:连接校验

当你尝试去连接到mysqlserver,server基于以下两点条件去接受或者拒绝连接:

- 你的身份标识以及正确的password

- 你的账号是否被锁定了

server先校验password是否正确,然后校验是否锁定。

不论什么一个步骤失败,server将会拒绝连接。

假设通过校验。server接受连接。然后进入第二阶段而且等候请求。

认证检查先检查user表的三个列。host,user,password。锁定状态是在user表的account_locked列中记录着的。账号锁定状态能够通过alter user语句来变更。

你的身份由两部分来组成,你连接的客户主机以及你的mysqlusername。假设username不空,则必须全字符匹配才干够,假设username是空的,则匹配不论什么用户。假设用户表匹配到一个空username,这个用户被觉得是一个匿名用户。二不是客户实际提供的。这意味着空username是用来进一步检查用的也就是阶段2.

password能够为空,这个不是一个通配符。不意味着匹配不论什么password。它的意思是用户必须无password连接。假设服务起授权一个客户都安使用一个插件。这样

该插件实现的认证体系也许没实用password列。在这种情况下,外部password也能够用来去认证mysqlserver。

非空password都是加密存储的,mysql没有存储不论什么明文password。而且用户提供的password也是被加密的。这个加密的password后来在连接过程中,来检查password是否正确。

从mysql的观点来看,加密的password才是真正的password,所以不要告诉不论什么人这个加密的password。

假设在user表中有多行被匹配,server必须决定用哪一个,它的规则是这种:

- 不论什么时候server读取用户表到内存中的时候,它会排序。

- server检查的侍奉server按行顺序去检查

- server使用第一个匹配的行

server排序的规则是无通配符的在前面,统配的在后面。

权限控制阶段2:请求校验

当通过了连接校验,你和server建立了连接后,server进入权限控制的第二个阶段。你的每一个请求,server决定出你想做什么操作,然后检查你是否有

权限去做。此时。grant 表的privilege列就该出场了。这些列能够出自 user,db,tables_priv,columns_priv,procs_priv。不再细讲这些表了。

什么时候去权限变更生效

当server启动的时候,grant表的数据被读入内存。

假设你使用账户管理语句去更新权限控制,server将会知道这些变更,然后又一次读取它们。假设你

直接用sql语句去更新这些表,你的变更不会生效,直到你又一次启动server或者你告诉server去重建缓存。

你能够通过运行一个刷新权限操作来通知server重建缓存。以下三个语句都能够达到效果:

- flush_privileges

- mysqladmin_flush-privileges

- mysqladmin_reload

假设启动參数是 –skip-grant-tables ,那么server不再校验不论什么权限,非常不安全。

$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('

    ').addClass('pre-numbering').hide();
    $(this).addClass('has-numbering').parent().append($numbering);
    for (i = 1; i ').text(i));
    };
    $numbering.fadeIn(1700);
    });
    });

    mysql 权限控制具体解释的更多相关文章

    1. mysql 权限控制

      1.mysql的权限是,从某处来的用户对某对象的权限. 2.mysql的权限采用白名单策略,指定用户能做什么,没有指定的都不能做. 3.权限校验分成两个步骤: a.能不能连接,检查从哪里来,用户名和密 ...

    2. Mysql权限控制 - 允许用户远程连接

      Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作: 一.允许root用户在任何地方进行远程登录,并具有所有库 ...

    3. Mysql权限控制 - 允许用户远程连接(转载)

      Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作: 一.允许root用户在任何地方进行远程登录,并具有所有库 ...

    4. 170424、Mysql权限控制 - 允许用户远程连接

      Mysql为了安全性,在默认情况下用户只允许在本地登录,可是在有此情况下,还是需要使用用户进行远程连接,因此为了使其可以远程需要进行如下操作: 一.允许root用户在任何地方进行远程登录,并具有所有库 ...

    5. C++成员权限控制(总结)

      1) 前言 在我学习C++的过程中,类中成员的权限控制一直是比较头疼的一个点,一会public,一会又private,还有protected,再加点继承,而且又有公有继承.私有继承,保护继承,所以感觉 ...

    6. mysq'l系列之10.mysql优化&权限控制

      网站打开慢如何排查 1.打开网页, 用谷歌浏览器F12, 查看network: 哪个加载时间长就优化哪个 2.如果是数据库问题 2.1 查看大体情况 # top # uptime  //load av ...

    7. 案例分享:Qt西门子机床人机界面以及数据看板定制(西门子通讯,mysql数据库,生产信息,参数信息,信息化看板,权限控制,播放器,二维图表,参数调试界面)

      若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/118685521 长期持续带来更多项目与技术分享 ...

    8. Mysql用户权限控制(5.7以上版本)

      1.1. 最简单的MySql权限   最简单也是最高效的,如果解决新手们删库跑路的问题其实也是很简单的,对于正式库只给一个增删改查的权限,或者只给一个查询权限(是不是就解决了删库的可能性?) 使用Ro ...

    9. spring security 3.1 实现权限控制

      spring security 3.1 实现权限控制 简单介绍:spring security 实现的权限控制,能够分别保护后台方法的管理,url连接訪问的控制,以及页面元素的权限控制等, secur ...

    随机推荐

    1. ECMAScript5之StrictMode

      ECMAScript5引入一个严格模式的概念(Strict Mode). 它的作用就是不让Javascript的容错那么高,让我们对编写代码的规范要求高一点. 比如,当我们使用严格模式编写JavaSc ...

    2. java 输入输出流1 FileInputStrem&&FileOutStream

      通过文件输入流读取问价 package unit6; import java.io.FileInputStream; import java.io.FileNotFoundException; imp ...

    3. 《第一行代码》学习笔记28-内容提供器Content Provider(1)

      1.内容提供器:用于在不同的应用程序之间实现数据共享的功能,提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问 数据的安全性.使用内容提供器是Android实现跨程序共享数据 ...

    4. 优化:代码移动code motion

      代码移动code motion-一种常见的优化-这种优化是把(一种需要执行多次但计算结果不会改变)的计算移到前面-这种优化一般需要程序员自行移动代码,不能依靠编译器(编译器担心会有副作用) 看看代码就 ...

    5. [Day03] 循环语句、list相关练习题

      用户输入两个数,求平均值. 让用户一直输入数字,如果输入的是'0',终止程序打印所有数字之和. 让用户一直输入数字(只输入数字),如果没输入任何值,终止程序打印所有输入数字的平均值. 求出这个list ...

    6. HDU5909Tree Cutting

      题目大意 给定一颗树,每个点有点权,问对于每个m,有多少个联通块的权值异或和为m. 题解 解法1:可以考虑树形dp,设dp[u][i]表示以u为根的子树中u必须选,联通块权值异或值为i的联通块个数. ...

    7. 0302思考&回答

      看完这两个网页,我们可以看出it行业始终是一门热门行业,在现在这个人潮汹涌的人才市场,面对严峻的就业形势,我们应该拿什么去参见招聘?人多而工作职位有限,这警醒我们必须拥有一技之长,否则则会被淘汰.如果 ...

    8. FineReport——JS二次开发(下拉框)

      下拉框显示多列时,输入的内容检索的内容为显示值整行数据,而不是实际值. 下拉框选择之后,控件显示的是显示值而非实际值. 对于下拉框显示队列,可以有多种方法,但是经过测试大多数方法不适用,检索效率太低, ...

    9. django-admin 登录之后显示页面,表是否显示

      如果是超级用户可以全部看到(如图),如果是普通用户,只能看到user与group 虽然实现了其功能,不过有些地方没搞懂,所以有些地方出了写的不好 ```class PermissionsMixin(m ...

    10. iOS 10 中引入了 Message 框架

      WWDC 2016 上最重磅的消息之一就是在 iOS 10 中引入了 Message 框架.开发者现在可以为苹果内置的 Messages 应用开发扩展啦.通过开发一个应用扩展,你可以让用户跟应用在 M ...