关于 mysql.test 数据库
2014-04-28 13:59
204 查看
关于 mysql.test 数据库
在一个项目的预商用环境下,我搭建的数据库都是以“test_”开头的,昨天应开发要求给创建了一个只有select权限的用户以供查看数据排错,但是奇怪的事情就发生了,开发过一会儿跟我说用这个账户可以修改数据!我自己试了一下尼玛果然可以,于是各种排查,最后锁定在数据库名称上,因为只要新建了用户,在不赋予任意权限之前都可以操作这项目所属的几个数据库,而对于其它数据库则规规矩矩来。然后请教别人,在官方的操作手册里指出grant命令创建权限时注意数据库名称里的通配符“_”和“%”要及时转义,但是经排查测试发现并不是匹配问题,于是继续疯狂搜索,终于找着一篇帖子:http://space.itpub.net/7607759/viewspace-676674
mysql.user表决定是否允许或拒绝到来的连接。对于允许的连接,user表授予的权限指出用户的全局(超级用户)权限。这些权限适用于服务器上的all数据库。
mysql.db表范围列决定用户能从哪个主机存取哪个数据库。权限列决定允许哪个操作。授予的数据库级别的权限适用于数据库和它的表。
看到这里,我们找到原因了!原来在mysql里默认以test开头的数据库能被任意可登陆用户访问操作!具体可以select * from mysql.db where user=''\G看一下。
“从权限上来看,host为%,user为空,这就说明了不限制的,所有能连接到MySQL的用户,几乎都拥有test库的所有权限”于是我推测出奇怪问题的服务器之前在安装Mysql后没有执行mysql_secure_installation命令,而只是单纯删除了test数据库,再对比执行过安全初始化的mysql,其中mysql.db表里已经没有了test记录。
另外,以后建立数据库不要随便以“test”开头了。
相关文章推荐
- <关于数据仓库>基于docker的Mysql与Hadoop/Hive之间的数据转移 (使用Apache Sqoop™)
- 关于mysql 删除数据后物理空间未释放(转载)
- (转)关于MYSQL数据的导出导入与版本的转换
- 关于mysql使用dbForge调试的问题:Object 'test.p_insertRoute' does not exist.
- 【mysql】关于循环插入数据 存储设计
- 关于MySql删除表中重复数据
- MySQL关于空间数据的一些入门
- 关于如何在mysql中插入一条数据后,返回这条数据的id
- 关于mysql处理百万级以上的数据时如何提高其查询速度的方法
- 关于数据表命名为mysql保留的时候的操作
- 关于mysql处理百万级以上的数据时如何提高其查询速度的方法
- mysql中关于数据的编码问题
- 关于 MySQL查询当天、本周,本月,上一个月的数据
- 关于在命令行中插入MySql数据时的乱码问题
- 关于mysql处理百万级以上的数据时如何提高其查询速度的方法
- \t\t关于数据库里cascade的用法,在MySQL和Hibernate是不同的
- 关于MySql插入数据的乱码问题
- 关于通过linux crontab+xtrabackup自动化备份mysql数据的说明
- 关于mysql处理百万级以上的数据时如何提高其查询速度的方法
- 关于MySQL的整型数据的内存溢出问题的应对方法