创建MySQL权限
您需要在被监控的MySQL服务器上创建一个专用的用于远程访问的MySQL用户,这样做的好处是:
-
与您的其它MySQL用户进行有效隔离,独立管理。
-
对该用户进行受限管理,不需要给予任何MySQL权限。
-
指定特定的访问IP地址,阻止其它非法访问。
操作非常简单,在MySQL中操作如下:
CREATE USER "username"@"xxx.xxx.xxx.xxx" IDENTIFIED BY "your_password";
在以上操作中,我们创建的MySQL用户名为“username”,密码为“your_password”,建议您对其进行修改。
同时,目前指定的授权IP地址为:xxx.xxx.xxx.xxx。
此时该MySQL用户是没有足够权限读写的。
如果我们需要对该MySQL账户授予特定权限。
使用grant命令对数据库权限进行分配
格式:grant 权限 on 数据库名.表名 to 用户名@登录主机 identified by "用户密码";
example:grant select,update,insert,delete on *.* to root@192.168.1.12 identified by "password";
grant all privileges on *.* to root@"%" identified by "root";
最后要运行 flush privileges;
ok都搞定了。
防火墙安全配置
尽管以上的MySQL配置已经相当安全,您仍然可以通过防火墙来保护您的MySQL服务器,以Linux的iptables为例,您可以仅开放监控宝指定IP地址来访问MySQL服务器的端口。
iptables操作如下:
iptables -A INPUT -i eth0 -p tcp -s xxx.xxx.xxx.xxx --dport 3306 -j ACCEPT
注意:在MySQL或者防火墙中指定授权IP地址的时候,请只开放我们指定的IP地址,而不要直接开放整个C类网段,比如xxx.xxx.xxx.0/24,因为该网段中其它服务器不一定是我们可以控制的。
测试是否成功
创建一个 testmysql.php 文件,其内容如下:
<?php $mysqlHost="";//mysql的服务器地址 $mysqlUser="";//mysql的用户名 $mysqlPassword="";//mysql的用户密码 $mysqlDb="";//mysql指定访问数据库 $mysqlReShow = "show"; $mysqlRe = "MYSQL连接测试结果:"; $mysqlRe .= (false !== @mysql_connect($mysqlHost, $mysqlUser, $mysqlPassword))?"MYSQL服务器连接正常, ": "MYSQL服务器连接失败, "; $mysqlRe .= "数据库 <b>".$mysqlDb."</b> "; $mysqlRe .= (false != @mysql_select_db($mysqlDb))?"连接正常":"连接失败"; echo "$mysqlRe"; ?>
注:如果连接不上,就先查查3306端口有没有开放。telnet ip port