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