Linux 开启mysql远程访问

第一步:激活网络设置

你需要编辑mysql配置文件my.cnf.

通常状况,my.cnf放置于在以下目录:

/etc/mysql/my.cnf(Debianlinux)

/etc/my.cnf(RedHatLinux/FedoraLinux)

/var/db/mysql/my.cnf(FreeBSD)

然后用vi编辑my.cnf,修改内容从以下行:

[mysqld]

你所需要:

1.确保skip-networking被删除或者屏蔽,否则不支持TCP/IP访问

2.增加行bind-address=ip,替代ip为你的服务器地址

修改后,配置为:

[mysqld]

user=mysql

pid-file=/var/run/mysqld/mysqld.pid

socket=/var/run/mysqld/mysqld.sock

port=3306

basedir=/usr

datadir=/var/lib/mysql

tmpdir=/tmp

language=/usr/share/mysql/English

bind-address=65.55.55.2

#skip-networking

....

..

保存并关闭配置文件

重启mysql服务器:#/etc/init.d/mysqlrestart

第二步:授权

方法一:

例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。

GRANTALLPRIVILEGESON*.*TOmyuser@'%'IDENTIFIEDBY'mypassword'WITHGRANTOPTION;

FLUSHPRIVILEGES;

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码

GRANTALLPRIVILEGESON*.*TO'myuser'@'192.168.1.3'IDENTIFIEDBY'mypassword'WITHGRANTOPTION;

FLUSHPRIVILEGES;

#################################

开启Mysql数据库的远程连接权限:

grantallprivilegeson*.*to'root'@'%'identifiedby'wrx123';

flushprivileges;

方法二:

usemysql;

updateusersethost='%'whereuser='用户名';(如果写成host=localhost那此用户就不具有远程访问权限)

FLUSHPRIVILEGES;

第三步:配置防火墙

如果系统装有防火墙iptables,得设置下

修改防火墙配置文件:

vi/etc/sysconfig/iptables

增加下面一行:

-ARH-Firewall-1-INPUT-mstate–stateNEW-mtcp-ptcp–dport3306-jACCEPT

如果想开通21等端口,只需要将3306换成21等要开放的端口就可以了。

附:iptables

==============================================

#Firewallconfigurationwrittenbysystem-config-securitylevel

#Manualcustomizationofthisfileisnotrecommended.

*filter

:INPUTACCEPT[0:0]

:FORWARDACCEPT[0:0]

:OUTPUTACCEPT[0:0]

:RH-Firewall-1-INPUT-[0:0]

-AINPUT-jRH-Firewall-1-INPUT

-AFORWARD-jRH-Firewall-1-INPUT

-ARH-Firewall-1-INPUT-ilo-jACCEPT

-ARH-Firewall-1-INPUT-picmp–icmp-typeany-jACCEPT

-ARH-Firewall-1-INPUT-p50-jACCEPT

-ARH-Firewall-1-INPUT-p51-jACCEPT

-ARH-Firewall-1-INPUT-pudp–dport5353-d224.0.0.251-jACCEPT

-ARH-Firewall-1-INPUT-pudp-mudp–dport631-jACCEPT

-ARH-Firewall-1-INPUT-mstate–stateESTABLISHED,RELATED-jACCEPT

-ARH-Firewall-1-INPUT-mstate–stateNEW-mtcp-ptcp–dport22-jACCEPT

-ARH-Firewall-1-INPUT-mstate–stateNEW-mtcp-ptcp–dport80-jACCEPT

-ARH-Firewall-1-INPUT-mstate–stateNEW-mtcp-ptcp–dport21-jACCEPT

-ARH-Firewall-1-INPUT-mstate–stateNEW-mtcp-ptcp–dport3306-jACCEPT

-ARH-Firewall-1-INPUT-jREJECT–reject-withicmp-host-prohibited

COMMIT

================================================

配置后,重新启动iptable

serviceiptablesrestart

这时就可以从外网访问Mysql了。

第四步测试

Fromremotesystemtypecommand:

$mysql-uwebadmin–hip–p

相关推荐