Linux环境下 php+mysql远程连接数据库,开启3306端口
作者:yahuifu 2010-12-01 21:43 星期三 晴
这个问题在php100问了好久,也没有得到答案(或许他们觉得简单,没法回答的,但是对新手来说,摸索是一个“漫长”的过程,特别像我这种在公司里边学习边用)。后来自己不断摸索终于找到了问题的所在,因为工作比较忙,今天终于有时间把这个详细解决过程写出来了,希望对你有帮忙!
有两种方法
一是:改表法(这个方法我没有试)
因为在linux环境下,默认是关闭3306端口远程连接的,需要开启,这个后面说!
可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库 里的 "user"(远程数据库的名称) 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -pvmwaremysql>use mysql;
mysql>update user set host = ’%’ where user = ’root’;
mysql>select host, user from user;
二是:授权法(我用的是这个方法)
例如,你想myuser(远程连接的用户名)使用mypassword(远程连接的密码)从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’%’IDENTIFIED BY ’mypassword’ WI
TH GRANT OPTION;
如果你想允许用户myuser(远程连接的用户名)从ip为192.168.1.6(你测试电脑上的IP)的主机连接到mysql服务器,并使用 mypassword(远程连接的密码)作为密码
GRANT ALL PRIVILEGES ON *.* TO ’myuser’@’192.168.1.6’IDENTIFIED BY
’mypassword’ WITH GRANT OPTION;
开始用的第一个方法,刚开始发现不行,在网上查了一下,少执行一个语句 mysql>FLUSH RIVILEGES使修改生效,就可以了。
方法是在安装mysql的机器上运行:
1、d:\mysql\bin\>mysql -h localhost -u root //这样应该可以进入MySQL服务器
2、mysql>GRANT ALL PRIVILEGES ON *.* TO ’root’@’%’WITH GRANT OPTION
//赋予任何主机访问数据的权限
3、mysql>FLUSH PRIVILEGES //修改生效
4、mysql>EXIT //退出MySQL服务器
这个时候还没结束呢,一般的服务器上安装的都有防火墙之类的东西,也需要我们开启3306端口才能用了
在linux下要开启防火墙 打开3306 端口,编辑这个文件vim /etc/sysconfig/iptables
输入
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
保存后在控制台输入 /etc/rc.d/init.d/iptables restart 重启防火墙,记得一定要重启哦,我就是因为没有重启防火墙导致一直连接不上,最后终于找到答案了