日期:2014-05-16  浏览次数:20694 次

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  重启防火墙,记得一定要重启哦,我就是因为没有重启防火墙导致一直连接不上,最后终于找到答案了