PHP连接远程数据库权限问题的解决方案 2014-10-11 12:45:49

( 3人已投票,[高质量] )
分享: ╬收藏
31.3K

 PHP连接远程数据库权限问题的解决方案


最近想做一个连接数据库的结口,目前先做一个连接Mysql的接口

无奈连接时候出现权限不足情况

Host 'XXX is not allowed to connect to this MySQL server ...

当然连接本机的话,用localhost 或是127.0.0.1一点问题也没有

但是是想测试远程连接

所以把我改成这样$host = “192.168.1.1:3306”这样就当成了远程连接了

//内网IP为192.168.1.1 且3306为mysql的默认端口

解决的方法有两个(任意一个都行)

一:修改数据库表。可能是你的帐号不允许从远程登陆,只允许localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改成"%"  (shell   cmd)

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' WITH GRANT OPTION;


说明:各字母不区分大小写,且登录的名称为 name = "myuser" passwd ="mypassword" 这两个值可以自已修改

如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO'root'@'192.168.1.3'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
//例如:
GRANT ALL PRIVILEGES ON *.* TO'root'@'192.168.1.3'IDENTIFIED BY '1235' WITH GRANT OPTION;

//这句就比上面多个IP限定

mysql>flush privileges; 最后记得刷新一下权限哦


现在可以正常连接啦

$serverName   = '192.168.0.1:3306';//数据库服务器
$dbName     = 'DBNum1';//数据库名
$dbUsername   = 'myuser';//用户名
$dbPassword   = 'mypassword';//登陆密码
$result = mysql_connect($serverName,$dbUsername ,$dbPassword) or die("Lack of privilege");


怎么样,权限问题是不是解决了呢







头像

snowcoal
  • PHP
  • 连接远程数据库
  • 数据库权限

收藏到我的私密空间

标题: PHP连接远程数据库权限问题的解决方案

作者:花花世界

你暂未登录,请登录后才可收藏至您的私密空间 确认取消
雪炭网

键盘操作 更便捷 -雪炭网雪中送炭-乐趣无限