今天有个以前的小伙伴找我,跟我说有台服务器他把mysql的root密码忘了,
主机上是有网站的,而且很不好,连接数据库用的就是root,
这个当时为了方便,真是后患无穷,
我就让他去找网站的配置文件,链接数据库的文件里面应该是有密码的,
他找了以后跟我说,密码是空的,我当时觉得有点不可能,
要么是网站设置有问题,要么配置文件没找对.
linux系统的root是记得的,可以在主机上直接修改用户表,修改mysql密码,
但是直接改密码网站就会出问题,不能这么做.
于是我按他说的地方去看了一下配置文件,确实是空密码,
<?php #DBConnect.php include "mysql.class.php"; $DB = new MYSQL(); $DB->dbServer="localhost"; $DB->dbUser="root"; $DB->dbPwd=""; $DB->dbDatabase="###database###"; $DB->connect(); // <C1><AC><BD><D3><CA><FD><BE><U+077F><E2> ?>
假设现在网站又能正常获取数据,至少目前看起来是这样,
我点了几个网页,都是静态html的,
但是网站是基于CMS二次开发的,静态网页说明不了问题,就先假设网站访问数据库没有问题.
链接配置文件倒数第二行那里在VIM里面是乱码的,不知道有没有影响,先不管吧,毕竟有//注释.
进到数据库看了一下,4个不同主机的root都是有密码的,
而任意用户的权限只有USAGE,授权也是否,
对于USAGE权限之前基本就忽略了,没有了解过,在phpmyadmin里面显示是无权限,
刚查了一下,貌似可以无密码链接数据库,但是只能在本地,
具体想了解清楚就要翻mysql的文档,了解权限体系,
暂时没时间,先不管了,因为这个地方之前也没出过问题.
新建了一个数据库用户,分配了一个密码,把网站链接配置文件改了,
让小伙伴再试,网站后台可以正常进入,里面文章也是看得到的,
然后我把网站配置文件里面数据库密码删了,小伙伴表示一切正常,
然后我把网站配置文件里面数据库用户名也删了,小伙伴同样表示一切正常,
这个时候我已经震惊了,
当然有可能是我孤陋寡闻,毕竟第一次处理这种问题,
这个时候有几种情况,
1,配置文件根本就不是这一个,
2,这个更离谱,我一直进的网站目录就是错的,
3,域名没有绑到这个主机,
4,使用了其他用户名连接到数据库
5,任意用户USAGE权限问题
6,缓存问题
1,这个很有可能
2,反复看了一下,也进到网站后台去看了,确实没错
3,从IP和域名进来完全一样的
4,这个也有可能
5,这个也有可能
6,清了浏览器和网站缓存还是一样
这时我注意到,数据库里面是有一个debian-sys-maint用户的,而且权限很高,
这个用户好像是系统原来就有的,不是道是不是从这个用户访问的,
我把这个用户的权限去掉,一切还是正常,
说来说去,最后要么是配置文件问题,要么是mysql权限我没理解透,
暂时先记在这里,早上还要上班.