Linux上mysql开启远程连接方法

默认情况下,Mysql为了安全起见是不支持远程访问和连接的。不过有的时候,工作需要你要从家里或者网页来访问Mysql,本文就介绍下怎么在Linux系统上给Mysql创建一个远程连接的账户,支持远程访问.

0 首先登陆linux

1 编辑Mysql的配置文件:my.cnf 注释bind-address = 127.0.0.1

如果你的系统是Debian Linux 那文件位置是:/etc/mysql/my.cnf .
如果你的系统是 Red Hat Linux/Fedora/Centos Linux 那文件位置是: /etc/my..
如果你的系统是 FreeBSD 那文件位置是: /var/db/mysql/my.cnf .

ps:

  1. bind-address: 绑定的IP
  2. skip-networking : 不再监听TCP/IP 连接. 所有的Mysql交互都要通过Unix sockets. 如果你只想本地请求的话强烈建议开启,因为我们现在是开启远程连接,所以在这里我们就给注释掉,在前面加上#号就可以了

2 重启mysql服务

如果是Debian / Ubuntu Linux系统,输入下面的命令重启Mysql服务

/etc/init.d/mysql restart

如果是RHEL / CentOS / Fedora / Scientific Linux系统,输入下面的命令重启Mysql服务

/etc/init.d/mysqld restart

如果是FreeBSD系统,输入下面的命令重启Mysql服务

/usr/local/etc/rc.d/mysql-server stop
/usr/local/etc/rc.d/mysql-server start

或者

/usr/local/etc/rc.d/mysql-server restart

3 给远程IP授权

增加型

GRANT ALL ON foo.* TO bar@’202.54.10.20’ IDENTIFIED BY ‘PASSWORD’;
修改型
update user set host=’%’ where user=’root’ and host=’localhost’;

刷新权限

flush privileges;

4 防火墙开放3306端口

1、打开防火墙配置文件

vi /etc/sysconfig/iptables

2、增加下面一行

-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT

3、重启防火墙

service iptables restart

注意:增加的开放3306端口的语句一定要在icmp-host-prohibited之前
附:个人配置
`# Firewall configuration written by system-config-firewall

Manual customization of this file is not recommended.

filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth0 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
-A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT
-A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -p icmp -j ACCEPT
-A FORWARD -i lo -j ACCEPT
-A FORWARD -i eth0 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp-host-prohibited
-A FORWARD -j REJECT –reject-with icmp-host-prohibited
COMMIT