代码改变世界

MySQL开放远程访问权限

2011-07-29 09:32  AnyKoro  阅读(3027)  评论(0编辑  收藏  举报

创建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