《MySQL排错指南》——1.9 许可问题

本节书摘来自异步社区出版社《MySQL排错指南》一书中的第1章,第1.9节,作者:【美】Sveta Smirnova(斯维特 斯米尔诺娃),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.9 许可问题

MySQL有复杂的权限方案,这使得你可以精确地设置哪些用户和主机可以或不可以执行这个或那个操作。从5.5版本开始,MySQL也有了可插拔式的身份验证模式。

尽管它有很多优势,但是这个方案很复杂。例如,让user1@hostA、user2@hostA和user1@hostB不同会很容易混淆它们的权限。当用户名相同而主机名变化的时候更是如此。

MySQL允许在对象和连接层面设置访问规则。可以限制某个用户对于特定的表、列等的访问权限。

用户通常会遇到两类权限问题:

应该有权限连接到服务器的用户无法连接,或者没有权限的用户可以连接;
用户可以连接到服务器,但是无法使用他们本应该可以访问的对象,或者可以访问他们无权访问的对象。
在解决这些问题之前,应该确认你是否可以连接到服务器。

当你作为解决问题的用户成功连接到服务器之后(后面的章节将讨论无法连接的情况),执行以下查询:

image

USER()函数会返回当用户连接到服务器时使用的连接参数。这些参数通常为指定的用户名和运行客户端的主机名。CURRENT_USER()函数会返回从权限表中选择的与访问权限相关的用户名和主机名对。mysqld用这些用户名和主机名对来检查数据库对象访问权限。通过比较这些函数的结果,可以找到mysqld使用的权限和预期不同的原因。一个典型的问题是对主机名使用通配符%:

image

如果此时我以sveta身份连接并尝试创建一个表,我就会获得下面的错误:

image

该问题在于,MySQL服务器认为sveta是sveta@localhost,而不是通配符:

 image

如果你不理解为什么选择一台或另一台主机,可以进行如下查询:

image

MySQL在表中按照从访问最多的主机到访问最少的主机的顺序对行进行排序,然后使用第一个找到的值。因此,它把我当作sveta@localhost用户进行连接,此时该用户没有CREATE权限。

USER()、CURRENT_USER()函数和“SELECT user, host FROM mysql.user ORDER BY host DESE”查询语句是遇到权限问题时的首选。
另一种权限问题是你无法作为指定用户进行连接。在这种情况下,通常可以从错误消息中了解问题产生的原因,错误消息一般如下所示:
image

在看到这条消息以后,你了解了用户凭证。作为root超级用户进行连接,然后检查该用户是否存在以及是否拥有所需权限:
image

在这个输出信息中,你可以看到用户'sveta'@'localhost'仅仅对book数据库有权限,而对books数据库没有权限。现在,可以修复这个错误:赋予sveta@localhost用户必要的权限。

前面的示例讨论用户缺失必要权限的情况。对于用户被授予过多权限的情况也可以同样处理;仅需要移除不必要的权限。

警告 警告

MySQL的权限与其管控对象是分离的:这意味着当你赋予某用户权限时mysqld 不会检查其是否存在,同时当授权对象被删除时也不会移除相应权限。这样做的好处是允许我们预先授予必要的权限,但同时也有可能在不经意的使用中带来潜在的问题。
作为最佳实践,我推荐你仔细学习MySQL的权限工作机制。尤其是在你想要在用户对象级别授予权限的时候,因为你需要理解在一个级别授权是如何影响其他授权的。同样,对于撤消权限情形也一样重要,甚至更重要,因为如果你以为已经撤消了某个权限但它依然存在,这就会造成意外的访问。

[1] 版本5.6.3开始,也可以在UPDATE和DELETE上使用EXPLAIN方法,不过把语句转换成SELECT查询仍然有效,因为你可以方便地检查和操作实际的结果集,而不是仅使用EXPLAIN命令。这尤其适用于复杂的JOIN操作,尤其是当EXPLAIN输出的检查的行比实际更新的行还要多的时候。

[2] 你可以在http://dev.mysql.com/doc/refman/5.5/en/c.html找到关于C API的详细描述。

[3] 第5章将详细介绍如何解决复制失败的问题,因此这里不再详细解释。

[4] MySQL企业级备份(MEB)以前也称作InnoDB热备份,是InnoDB表进行在线热备份和其他存储引擎的表进行在线备份的一个工具。第7章将讨论备份的方法。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/456654.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

毕业半年,码过5个城市

时间飞逝,半年前我还在想我的毕业设计要怎么做,还在担心自己的答辩能够拿多少分,而此刻我正在成都写我喜欢的代码,过着我想过的生活。毕业半年,码过5个城市,从厦门->太原-》合肥-》北京-》成都。2016是我…

《Pro/ENGINEER野火版5.0从入门到精通》——2.5 设置零件单位

本节书摘来自异步社区《Pro/ENGINEER野火版5.0从入门到精通》一书中的第2章,第2.5节,作者 暴风创新科技,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.5 设置零件单位 由于不同国家单位制的不相同,在企业间合作或沟通…

机器学习之必知开源数据集

之前看到的不错的文章,玩机器学习数据是关键,有了这些东西,你就不必再为没有数据而苦恼。 转自:https://www.toutiao.com/i6432197108580745730/ 目录UCIGoogleTrendsKaggleAWS公用数据集ImagenetMINIST/r/数据集其他数据集 目录…

《计算机科学概论》—第3章3.3节文本表示法

本节书摘来自华章出版社《计算机科学概论》一书中的第3章,第3.3节文本表示法,作者[美]内尔黛尔(Nell Dale)约翰路易斯(John Lewis),更多章节内容可以访问云栖社区“华章计算机”公众…

经典技术面试指南

目录计算机基础知识数据结构算法操作系统计算机网络数据库海量数据处理C语言基础Java基础Java高级Java Web设计模式知识的综合能力工具使用项目相关技术热情表达能力思考方式其他推荐阅读 目录 最近看到一份不错的面试总结,也是每位程序猿都应该掌握的基础&#x…

Linux 共享内存详解一

共享内存段被多个进程附加的时候,如果不是所有进程都已经调用shmdt,那么删除该共享内存段时,会出现一个临时的不完整的共享内存段(key值是0),无法彻底删除。只有当所有进程都调用shmdt,这个临时…

Storm编程模型总结

目录前言:1、Storm编程模型2、对应的的WordCount案例总结: 目录 前言: 对于Storm的编程模型有必要做一个详细的介绍(配合WC案例来介绍) 1、Storm编程模型 上图中组件的解释: DataSource:外…

13_观察者模式

【观察者模式】 也叫作发布/订阅模式,使用较为频繁。 定义了对象间一种一对多的依赖关系,当一个对象改变状态时,则所有依赖于它的对象都会得到通知并被自动更新。 观察者模式由以下几个角色组成: * Subject 被观察者 定义被观察者…

《黑客秘笈——渗透测试实用指南》—第2章2.3节 外部或内部的主动式信息收集...

本节书摘来自异步社区《黑客秘笈——渗透测试实用指南》一书中的第2章2.3节 外部或内部的主动式信息收集,作者【美】Peter Kim(彼得 基姆),更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.3 外部或内部的主动式信息收集黑客秘笈——…

Storm集群的安装及简单使用

目录前言:1、集群部署的基本流程2、Storm常用操作命令(了解)3、Storm集群的进程及日志熟悉(知道对应的日志的位置出了问题知道去哪找原因)4、Storm源码目录分析(重要)总结: 目录 前…

Storm的通信机制

目录前言:1、Worker进程间通信原理2、Worker进程间技术(Netty、ZeroMQ)3、Worker 内部通信技术(Disruptor)总结: 目录 前言: 这篇文章,博客主要介绍下Storm中Worker进程间和进程内部通信的原理和技术。整篇内容仅供了解&#x…

Storm程序的并发机制原理总结

文章目录目录前言:1、概念2、配置并行度总结:目录 前言: 为了在以后的实践中提高Storm程序执行的效率,我们还是有必要了解下对应的Storm程序的并发机制。(哈哈,虽然以博主小菜鸟的水平还没有接触到这种提…

★数学上最大的数是多少?

数学上最大的数是多少? 怪罗科普 收藏(282)| 阅读(117678)人类已经使用数长达千年之久。普遍认为,数的概念最先源于史前人类开始使用手指进行计数。这最终演变成符号语言,然后在沙子、墙壁和木头等物体上作标记。 我们已经向前发展了一大步&…

Storm任务提交过程及目录树介绍

目录前言:1、Storm 任务提交的过程2、Storm相关的目录树总结: 目录 前言: 对于任何一个组件来说,了解它相关的任务提交的过程是非常有必要的(毕竟生产中遇到一些Bug时,你如果知道内部执行的过程&#xf…

《Adobe InDesign CS6中文版经典教程》—第1课1.5节修改文档的缩放比例

本节书摘来自异步社区《Adobe InDesign CS6中文版经典教程》一书中的第1课1.5节修改文档的缩放比例,作者【美】Adobe公司,更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.5 修改文档的缩放比例Adobe InDesign CS6中文版经典教程InDesign中的控件让用户能…

大数据之Kafka入门简介

目录前言:1、Kafka是什么2、JMS是什么3、Kafka核心组件(重点)总结: 目录 前言: 作为流式计算中的一个组件,对于它的组成以及运行的原理,学习者也需要相关的了解。以下主要简单介绍了kafka是什…

oracle的安装与plsql的环境配置

1,首先得有oracle的安装包和plsql的安装包,安装包地址可见百度云 http://pan.baidu.com/s/1miTqhmg 2.解压下来进入0817账套,找到set.exe文件,双击安装即可 注意的是安装的时候有两个目录是要自己创建的,否则安装不成功…

如何在Docker容器中运行GUI程序

如何在Docker容器中运行GUI程序 各位,今天我们将学习如何在Docker之中运行GUI程序。我们可以轻易地在Docker容器中运行大多数GUI程序且不出错。Docker是一个开源项目,提供了一个打包、分发和运行任意程序的轻量级容器的开放平台。它没有语言支持、框架或…

【python】Get与Post的区别?(面试官最想听到的答案)

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。 你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出…

大数据之Kafka内部原理详细介绍

目录前言:1、Kafka整体结构2、Consumer与topic关系3、Kafka消息的分发4、Consumer的负载均衡5、kafka文件存储机制总结: 目录 前言: 本篇文章所介绍的内容还是以了解为主,主要目的还是为了对Kafka有一个更深入的理解。主要介绍…