Linux环境下 php+mysql远程连接数据库,开启3306端口
    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  重启防火墙,记得一定要重启哦,我就是因为没有重启防火墙导致一直连接不上,最后终于找到答案了