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

你可能感兴趣的:(Linux操作系统)