今天在恢复CMS的时候,发现CMS指定用户名及密码,都不能够连上数据库,此时主机的地址写的是localhost,我以为是当主机指定localhost时不能够访问数据库,于我就就在命令行通过命令:
mysql -uxxx -pxxx -hlocalhost
通过mysql命令是能够正常连接,那首先肯定用户名及密码是正确的,我第一个就排除了localhost有问题。
刚开始一直以为是CMS的缓存问题,怀疑有可能是服务器启动的时候,CMS就将配置文件加载到了内存中去了,于是改一下配置文件就重启一下APACHE,几次尝试下来也没有结果,反正就是数据库连不上。
后来以为是MYSQL的地方设置问题,把当前的my.cnf与原来的my.cnf文件进行了比较,发现只有bind-address这个的差别,现在配置的是127.0.0.1,原来为了远程访问配置的是服务器本身的IP地址,于是我将此处修改为当前服务器的地址,填到CMS里面也是连接不上,呵,这里忘了将用户的访问权限设置为允许远程访问,登陆mysql,将user表中指定用户的host指定为"%",再通过FLUSH PRIVILEGES刷新一个权限,此时再填上这个开了远程访问的用户名,这个时候就能够连接上了。
不过,这个时候如果允许远程访问,那么数据库就存在着风险了,别人就可以尝试破解你mysql的用户名和密码;又再尝试,将服务器IP换成127.0.0.1,居然可以连接,再换成localhost又不可以访问了,难道是没有在host将localhost绑定到127.0.0.1?此时我查看我的hosts文件,发现也是绑定了的:127.0.0.1 localhost,这就奇了怪了,难道与my.cnf中的bind-address设置为127.0.0.1有关?如果将bind-address换成localhost,就可以访问吗?这应该是唯一的解释了,不过现在我没有了环境,等有机会尝试的时候可以将bind-address设置为localhost试试。
本文出自:冯立彬的博客
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow