魅族16内放音质pro7与pro6哪款音质好

在本文中,我们将向读者详细介绍MySQL的授权表,并通过一些实例来讲解MySQL是如何提高这些授权表来实现用户访问控制的。我们首先介绍MySQL访问控制过程,然后说明tables_priv和columns_priv授权表,我们会给出与MySQL的tables_priv表有关的解释和范例。最后,我们介绍columns_priv授权表及其范例。
  一、MySQL授权表概述
  MySQL服务器的特点之一是,它在控制每个用户行为方面提供了极大的灵活性。例如,我们既可以限制用户访问整个数据库,也可以限制用户访问数据库中特定的表,或者禁止访问特定表中的特定列。由此看出MySQL服务器在用户授权方面的灵活性。本文将向大家详细介绍MySQL服务器是如何处理用户权限的授与/撤回的,尤其是MySQL的授权表tables_priv和columns_priv。
  MySQL的授权系统通常是通过MySQL数据库中的五个表来实现的,这些表有user、db、host、tables_priv和columns_priv。这些表的用途各有不同,但是有一点是一致的,那就是都能够检验用户要做的事情是否为被允许的。每个表的字段都可分解为两类,一类为作用域字段,一类为权限字段。作用域字段用来标识主机、用户或者数据库;而权限字段则用来确定对于给定主机、用户或者数据库来说,哪些动作是允许的。下面,我们对这些表的作用做简单介绍:
  user表——该表决定是否允许用户连接到服务器。如果允许连接,权限字段则为该用户的全局权限。
  db表——用于决定哪些用户可以从哪些主机访问哪些数据库。包含在db表中的权限适用于这个表标识的数据库。
  host表——当您想在db表的范围之内扩展一个条目时,就会用到这个表。举例来说,如果某个db允许通过多个主机访问的话,那么超级用户就可以让db表内将host列为空,然后用必要的主机名填充host表。
  tables_priv表——该表与db表相似,不同之处是它用于表而不是数据库。这个表还包含一个其他字段类型,包括timestamp和grantor两个字段,用于存储时间戳和授权方。在本文后面我们会对这个表做进一步的讲解。
  columns_priv——该表作用几乎与db和tables_priv表一样,不同之处是它提供的是针对某些表的特定列的权限。这个表也多出了一个字段类型,即其他字段,包括了一个timestamp列,用于存放时间戳。 在本文后面部分,我们还会对columns_priv表做进一步的说明。
  下面,我们通过如下几个方面对MySQL用户授权过程加以介绍:首先介绍MySQL访问控制过程,解答MySQL授权表是如何工作的;然后,我们介绍tables_priv和columns_priv授权表,我们会给出与MySQL的tables_priv表有关的解释和范例。最后,我们介绍与columns_priv授权表有关的解释和若干范例。
  二、MySQL服务器的访问控制
  现在让我们来看看MySQL服务器是如何通过用户特权来控制用户访问的。虽然这乍听起来好像挺吓人的,但是通过一个例子的演示,您就会发现其实事情没有我们想象的那么难以理解。
  首先,对用户的访问进行控制的时候,系统需要查看作为过滤器的一些授权表,这些表的使用过程是从一般到特殊,这些表包括:
  User表
  Host表
  Tables_priv 表
  Columns_priv 表
  此外,一旦连接到了服务器,一个用户可以使用两种类型的请求:
  管理请求(shutdown,reload,等)
  数据库相关的请求(insert,delete,等)
  当用户提交管理请求时,服务器只需查看user表,这是因为user表是唯一包含与管理工作有关的权限的一个表。然而,当用户提交数据库请求时,要查看的表就要更多了。
  您可能已经注意到了,这些授权表的内容好像有些重复,例如user表中有select权限,同时host和user表中也有同样的权限。但是,这样做自有其道理。我们可以考虑一下user表中全局性的与数据库相关的权限,也就是说,在这个表中授予用户的权限对服务器上的所有数据库都有效。这些权限可以被认为是超级用户权限。相反,包含在host和db表之内的与数据库相关的权限则是特定于主机或者数据库的。因此,让这个表内所有的权限保持为“N”不失为一个明智的选择。
  让我们假定我们的user和db表如下所示:
  情景1:失败的连接尝试
  用户“alessia”连接服务器时将被拒绝。因为,主机、用户和/或密码与保持在user表中的不匹配, 所以会拒绝用户的请求。
  情景2:user表中数据库权限为N,db表中数据库权限为Y
  1. 用户wj尝试连接时将会成功。
  2. 用户wj试图在数据库oats上执行Select命令。
  3. 服务器查看user表,对应于Select命令的条目的值为N,即表示拒绝。
  4. 服务器然后查看db表,对应于Select命令的表项的值为Y,即表示允许。
  5. 该请求将成功执行,因为该用户的db表中的SELECT字段的值为Y。
  情景3:user表中数据库权限为Y,db表中数据库权限为N
  1. 用户wj尝试连接时将会成功。
  2. 用户wj试图在数据库oats上执行Select命令。
  3. 服务器查看user表,对应于Select命令的表项的值为Y,即表示允许。 因为在user表之内授与的权限是全局性的,所以该请求会成功执行。
  情景4:user表中数据库权限为N,db表中数据库权限为N
  1. 用户wj尝试连接时将会成功。
  2. 用户wj试图在数据库oats上执行Select命令。
  3. 服务器查看user表,对应于Select命令的表项的值为N,即表示拒绝。
  4. 服务器现在会查看db表,对应于Select命令的表项的值为N,即表示拒绝。
  5. 服务器现在将查找tables_priv和columns_priv表。如果用户的请求符合表中赋予的权限,则准予访问。 否则,访问就会被拒绝。
  对于tables_priv和columns_priv表,后面会进一步加以详述。
  情景5:让我们假定下列情况为真:
  user表中用户wj的host字段的值为%。
  db表中用户wj对应的host字段的值为空。
  这时会发生什么情况呢?
  1. 用户wj尝试通过一个给定主机进行连接。
  2. 假设密码是正确的,那么就会连接成功,因为user表指出只要是通过用户名wj和有关密码进行连接的话,任何(字符%所代表的含义)主机都是允许的。
  3. MySQL服务器将查找db表,不过,这里没有指定主机。
  4. MySQL服务器现在将查看host表。如果该用户要连接的数据库以及用户建立连接时所在主机的名称都位于host表中,那么该用户就能够按照host表中所列出的权限来执行命令。 否则的话,用户将无法执行命令,实际上更本就无法连接。
  通过了解上述情形,读者就应该对授权系统有一定了解了。下面,我们再来仔细聊聊tables_priv表和columns_priv表。
  三、Tables_priv表与columns_priv表
  在上面介绍的五种授权表中,tables_priv和columns_priv是后来加入进来的,它们的主要目的是提供细粒度的用户控制。这两个表与授权表db非常类似,但是其控制的范围更加细致,即特定数据库中的特定的表。前面说过,超级用户可以通过授权表db来限制用户在一个数据库中的行为,有了这两个授权表,超级用户可以进一步控制用户针对每个表和每个字段的动作。所以,这给超级用户提供了更加灵活的控制选项。
  在深入学习对数据表的访问控制之前,首先让我们了解一下下列特性:
  通配符可以用于这两个表的host字段,但是不允许在Db、Table_name和Column_name字段使用通配符。
  权限字段被声明为SET字段。
  tables_priv和columns_priv表只应当通过GRANT/REVOKE命令进行修改。通过INSERT命令向这两个表插入数据会导致服务器不稳定!
  tables_priv表中的table_priv字段可以允许下列命令:Select、Insert、Update、Delete、Create、Drop、Grant、References、Index和Alter。
  tables_priv表中的column_priv字段允许下列命令:Select、Insert、Update和References。
  columns_priv表中的type字段允许下列命令:Select、Insert、Update和References。
  授权表tables_priv
  下列是一个tables_priv表的示意图:
  下面简要介绍各字段的含义:
  Host——适用于那些主机?
  Db——适用于从上面的主机所连接的哪些数据库?
  User——适用于来自上述主机的哪些用户?
  Table_name——适用于上述数据库中的哪些表?
  Table_priv——为这个表赋予哪些权限?
  Column_priv——为这个表中的个字段赋予哪些权限?
  Timestamp——这个权限是何时赋予的?
  Grantor——谁授与该用户的这个权限?
  要想真正弄懂tables_priv表,最好的办法就是通过实例进行学习,下面我们就给出一些例子。
  %&GRANT SELECT ON italy TO ;
  这条命令的作用是什么?以上命令允许来自主机的用户wj在表italy上至下一个SELECT语句。请记住,只有当给定数据库/主机和用户名对应的db或者host表中的SELECT字段的值为N时,才需要访问这个表。如果给定数据库/主机和用户名对应的db或者host表中的SELECT字段中有一个值为Y的话,那么就无需控制该tables_priv表。
  %&GRANT SELECT, INSERT ON oats.italy TO ;
  这条命令的作用是什么?以上命令允许来自主机的用户wj对数据库oats中的数据表italy执行SELECT和INSERT语句。
  %&REVOKE SELECT on oats.italy from
  这条命令的作用是什么?以上命令撤消来自主机的用户wj对数据库oats中的表italy的执行SELECT的权限。
  重要的是要认识到,包含在tables_priv中的信息仅当host/db表不允许用户执行要求的功能所需的权限时才生效。如果给定的权限在host/db表中为Y,那么就无需考察tables_priv表。
  %&GRANT SELECT(id,name,address,phone),update(address,phone) ON
  company.customers TO ;
  这条命令的作用是什么?以上命令将授予对company数据库中customers表内id、name、address和phone字段执行SELECT的权限,以及对address和phone字段执行UPDATE的权限。
  这将带来哪些影响?这条命令会修改tables_priv表和columns_priv表,这是因为它引用这两个表和表内特定的字段。
  %&REVOKE UPDATE(address,phone) ON company.customers FROM ;
  这条命令的作用是什么?这个命令将撤消对company数据库中customers表内的address和phone字段执行UPDATE操作的权限。
  这将带来哪些影响?因为该命令直接涉及给定表中的某些字段,所以columns_priv表以及tables_priv表也会更新。
  前面说过,只有在必须的情况下才会使用授权表,举例来说,如果高优先级的表提供了适当的权限的话,那么就无需查阅优先级较低的授权表了。如果高优先级的表中对应命令的值为N,那么就需要进一步查看低优先级的授权表。
  四、小结
  在本文中,我们为读者详细介绍了MySQL的授权表,并通过一些实例来讲解MySQL是如何提高这些授权表来实现用户访问控制的。我们首先介绍了MySQL访问控制过程,解答了MySQL授权表是如何工作的;然后,我们介绍了tables_priv和columns_priv授权表,并提供了与MySQL的tables_priv表有关的解释和范例。最后,我们介绍了columns_priv授权表并给出了若干范例。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:11726次
排名:千里之外
转载:14篇
(1)(2)(1)(1)(3)(1)(1)(4)(1)(1)(4)(2)比特客户端
您的位置:
详解大数据
详解大数据
详解大数据
详解大数据
三种方法设置MySQL密码
  直接修改授权表
  另一种修改,密码的方法是直接修改授权表user。只有具备存取的用户可以这样做。
  例如,如果你有一个条目其User和Host字段是'bob'和'%.loc.gov',你将写成:
mysql& UPDATE mysql.user SET password=PASSWORD("newpass") where user="bob' AND host="%.loc.gov";
mysql&FLUSH PRIVILEGES;
  重新设置一个遗忘的root口令
  如果你遗忘了root用户的口令,那么将会是一件非常麻烦的事。除非你有其它有特权的用户,否则很多操作都无法完成,例如,关闭数据库等等。
  你应当选用--without-grant-tables选项启动mysqld服务,你可以在这时更改授权表的相关内容,也可以用mysqlaccess检查你的授权是否到位。
  例如,如果你忘记了你的MYSQL的root口令的话,你可以通过下面的过程恢复。
  1、关闭MySQL服务器
  向mysqld server 发送kill命令关掉mysqld server(不是 kill -9),存放进程ID的文件通常在MYSQL的数据库所在的目录中。
  kill `cat /mysql-data-directory/hostname.pid`
  你必须是的root用户或者是你所运行的SERVER上的同等用户,才能执行这个操作。
  如果在windows平台上,也可以停止进程。如果是NT还可以用net stop mysql命令关闭数据库。
  2、使用'--skip-grant-tables' 参数来启动 mysqld。
  Unix平台:
  $su mysql
  $safe_mysqld --skip-grant-tables &
  Windows平台:
  C:\mysql\bin&mysqld --skip-grant-tables
  以上语句,假定都位于正确的目录。
[ 责任编辑:刘军 ]
去年,手机江湖里的竞争格局还是…
甲骨文的云战略已经完成第一阶段…
软件信息化周刊
比特软件信息化周刊提供以数据库、操作系统和管理软件为重点的全面软件信息化产业热点、应用方案推荐、实用技巧分享等。以最新的软件资讯,最新的软件技巧,最新的软件与服务业内动态来为IT用户找到软捷径。
商务办公周刊
比特商务周刊是一个及行业资讯、深度分析、企业导购等为一体的综合性周刊。其中,与中国计量科学研究院合力打造的比特实验室可以为商业用户提供最权威的采购指南。是企业用户不可缺少的智选周刊!
比特网络周刊向企业网管员以及网络技术和产品使用者提供关于网络产业动态、技术热点、组网、建网、网络管理、网络运维等最新技术和实用技巧,帮助网管答疑解惑,成为网管好帮手。
服务器周刊
比特服务器周刊作为比特网的重点频道之一,主要关注x86服务器,RISC架构服务器以及高性能计算机行业的产品及发展动态。通过最独到的编辑观点和业界动态分析,让您第一时间了解服务器行业的趋势。
比特存储周刊长期以来,为读者提供企业存储领域高质量的原创内容,及时、全面的资讯、技术、方案以及案例文章,力求成为业界领先的存储媒体。比特存储周刊始终致力于用户的企业信息化建设、存储业务、数据保护与容灾构建以及数据管理部署等方面服务。
比特安全周刊通过专业的信息安全内容建设,为企业级用户打造最具商业价值的信息沟通平台,并为安全厂商提供多层面、多维度的媒体宣传手段。与其他同类网站信息安全内容相比,比特安全周刊运作模式更加独立,对信息安全界的动态新闻更新更快。
新闻中心热点推荐
新闻中心以独特视角精选一周内最具影响力的行业重大事件或圈内精彩故事,为企业级用户打造重点突出,可读性强,商业价值高的信息共享平台;同时为互联网、IT业界及通信厂商提供一条精准快捷,渗透力强,覆盖面广的媒体传播途径。
云计算周刊
比特云计算周刊关注云计算产业热点技术应用与趋势发展,全方位报道云计算领域最新动态。为用户与企业架设起沟通交流平台。包括IaaS、PaaS、SaaS各种不同的服务类型以及相关的安全与管理内容介绍。
CIO俱乐部周刊
比特CIO俱乐部周刊以大量高端CIO沙龙或专题研讨会以及对明星CIO的深入采访为依托,汇聚中国500强CIO的集体智慧。旨为中国杰出的CIO提供一个良好的互融互通 、促进交流的平台,并持续提供丰富的资讯和服务,探讨信息化建设,推动中国信息化发展引领CIO未来职业发展。
IT专家新闻邮件长期以来,以定向、分众、整合的商业模式,为企业IT专业人士以及IT系统采购决策者提供高质量的原创内容,包括IT新闻、评论、专家答疑、技巧和白皮书。此外,IT专家网还为读者提供包括咨询、社区、论坛、线下会议、读者沙龙等多种服务。
X周刊是一份IT人的技术娱乐周刊,给用户实时传递I最新T资讯、IT段子、技术技巧、畅销书籍,同时用户还能参与我们推荐的互动游戏,给广大的IT技术人士忙碌工作之余带来轻松休闲一刻。
微信扫一扫
关注Chinabyte解决MySQL无法远程连接的方法
作者:崔庆才
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了解决MySQL无法远程连接的方法,文中给出的解决方案主要针对IP限制时出现的该种情况,需要的朋友可以参考下
MySql远程连接无法打开解决办法
1、改表法。
请使用mysql管理工具,如:SQLyog Enterprise、navicate mysql
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑使用mysql管理工具登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
2、 授权法。
A:你想mysql账户myuser使用密码mypassword从任何主机连接到mysql服务器的话,那就在mySQL命令行下输入:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
若上面那条命令还没有奏效,那就使用下面的命令,一定成功!
如果你想允许想mysql账户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码,那就在mySQL命令行下输入:
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
以下是其它网友的补充:
在远程主机上,我开启了mysql 服务,用 phpmyadmin 可以打开,比如说用户名为 root,密码为 123456。不过用 Mysql 客户端远程连接时却报了错误,比如 Mysql-Front 报了如下错误。
Access denied for user ‘root'@'121.42.8.33′(using password:YES)
比较奇怪,phpmyadmin 可以正常访问,而 Mysql-Front 为什么无法连接呢?可能的原因,应该就是 IP 限制了,phpmyadmin在连接时使用的是localhost,而我们访问页面才使用的远程主机的 IP,而 Mysql-Front 连接的是远程主机。
解决方法如下,我们需要新建一个用户,然后授予所有 IP 可以访问的权限就好啦。
在下面的 sql 语句中,username 即为用户名,password 为你要设置的密码:
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;
通过执行以上语句,便创建了一个用户名为 username,密码为 password 的新账户,再用新账号登录,就可以连接成功啦。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具2010年 总版技术专家分年内排行榜第二
2009年 总版技术专家分年内排行榜第三
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 魅族16内放音质 的文章

 

随机推荐