linux下Mysql权限管理过程

    mysql在安装后(关于mysql的安装过程可以参考博客中《MySQL安装(Linux)以及Navicat(Windows)连接》一文),系统会产生几个默认用户,在系统数据库mysql中的user表中可以看到,user表是以host(主机名或ip地址,主机名和ip地址可以在/etc/hosts文件中相互映射(静态映射),或者使用动态映射,关于静态映射和动态映射的介绍请关注博客中的有关内容)和user(用户名)为联合主键的~

    以(host,user)组合来举例说明系统产生的几个默认用户,(localhost,root),(localhost.localdomain,root),(127.0.0.1,root),(::1,root),(localhost,空),(localhost.localdomain,空),其中主机名localhost,localhost.localdomain和P地址127.0.0.1,::1的映射可以在/etc/hosts文件中可以看到。这些主机名和IP都对应的是本机~~同时也看到其中有一默认用户root(具有最高权限,默认是没有密码的,需要设定密码),还有两行记录的用户名为空,用户名为空表示可以进行匿名连接(匿名连接权限肯定是受限的)~

    然后我们也可以看到在user表的后面还有很多关于权限的字段(user表中的权限是全局的,对任何数据库都适用),如Select_priv,Insert_priv,Update_priv,Delete_priv等都是对用户权限的限制,当使用某个用户来连接Mysql时,Mysql首先会检查用户表,以确定所列出的特定用户、主机名和密码的组合,如果没有,则用户被拒绝访问~~如果通过了用户验证,完成连接后,当用户执行与数据库有关的操作(如select,update等)时,Mysql将从用户表中检查相关的字段,如果所要求的操作被授予了权限,操作就会被允许~

    如果没有,Mysql就会去检查db表。Mysql查找用户正在其上执行操作的数据库,如果这个数据库不存在,则拒绝~

如果数据库存在,主机和用户匹配,则与操作有关的字段会被检查;如果所要求的操作被授予了权限,操作会成功~反之,则Mysql检查tables_priv表;如果数据库和用户的组合存在,且主机的字段为空,Mysql就会查找主机表,看看主机是否能执行所要求的操作,如果在主机表中找到了主机和数据库,则在host表和db表上都相关的字段决定操作能够成功;如果两个表都授予了许可权限,操作就会成功,如果没有,则Mysql检查tables_priv表~~可以db表和host表是并列的~

    检查tables_priv表,考虑要执行操作的表的情况。如果主机名、用户、db与表的组合不存在,操作就会失败~如果存在,就会检查相关的字段,如果权限被授予,操作则会成功~反之,则会检查column_priv表~

    检查column_priv表,考虑操作中所用的列的情况,如果所要求的操作被授予了权限,则操作成功~反之,则操作失败~

一个问题:

    有说:任何匿名用户(不提供用户名)可以从本地主机连接到默认测试的数据库,还可以连接到任何名称以test开头的数据库(有全部权限)~即所谓的“匿名危机”,参考http://blog.sina.com.cn/s/blog_5f7b8c2c0100db03.html

    但是我使用匿名用户在localhost登录时,使用showdatabases,却看不到test数据库,不能访问;直接连接test数据库时,也被拒绝访问~~不知道为何原因~

关于权限的介绍:http://www.mysqlops.com/2011/07/22/mysql-account-privileges-manager.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值