博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于 mysql.test 数据库
阅读量:4310 次
发布时间:2019-06-06

本文共 1070 字,大约阅读时间需要 3 分钟。

       

国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:
内部邀请码:
C8E245J (不写邀请码,没有现金送)
国内私募机构九鼎控股打造,九鼎投资是在全国股份转让系统挂牌的公众公司,股票代码为430719,为“中国PE第一股”,市值超1000亿元。 

 

------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

 

在一个项目的预商用环境下,我搭建的数据库都是以“test_”开头的,昨天应开发要求给创建了一个只有select权限的用户以供查看数据排错,但是奇怪的事情就发生了,开发过一会儿跟我说用这个账户可以修改数据!

       我自己试了一下尼玛果然可以,于是各种排查,最后锁定在数据库名称上,因为只要新建了用户,在不赋予任意权限之前都可以操作这项目所属的几个数据库,而对于其它数据库则规规矩矩来。然后请教别人,在官方的操作手册里指出grant命令创建权限时注意数据库名称里的通配符“_”和“%”要及时转义,但是经排查测试发现并不是匹配问题,于是继续疯狂搜索,终于找着一篇帖子:

  • 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”开头了。

转载于:https://www.cnblogs.com/AloneSword/p/3457243.html

你可能感兴趣的文章
规范性附录 属性值代码
查看>>
提取面狭长角
查看>>
Arcsde表空间自动增长
查看>>
Arcsde报ora-29861: 域索引标记为loading/failed/unusable错误
查看>>
记一次断电恢复ORA-01033错误
查看>>
C#修改JPG图片EXIF信息中的GPS信息
查看>>
从零开始的Docker ELK+Filebeat 6.4.0日志管理
查看>>
How it works(1) winston3源码阅读(A)
查看>>
How it works(2) autocannon源码阅读(A)
查看>>
How it works(3) Tilestrata源码阅读(A)
查看>>
How it works(12) Tileserver-GL源码阅读(A) 服务的初始化
查看>>
uni-app 全局变量的几种实现方式
查看>>
echarts 为例讲解 uni-app 如何引用 npm 第三方库
查看>>
uni-app跨页面、跨组件通讯
查看>>
springmvc-helloworld(idea)
查看>>
JDK下载(百度网盘)
查看>>
idea用得溜,代码才能码得快
查看>>
一篇掌握python魔法方法详解
查看>>
数据结构和算法5-非线性-树
查看>>
数据结构和算法6-非线性-图
查看>>