php和mysql不在一台机器上_一台机器php连mysql出client版本不支持的问题

在控制台上直接执行php test.php

系统出错:

“PHP Warning: mysql_connect(): Client does not support authentication protocol requested by server”

于是就在本机控制台用命令

mysql -h 192.168.1.1 -u user -p

(这里192.168.1.1是mysql服务器ip)

再输入密码来连

这样没有问题

然后在192.168.1.1把程序拷过去

直接执行

然后又没有问题

当时就有点困惑了

这两台机器一样的php-mysql版本呀

一样的mysqlclient版本呀

可为什么一个能连一个出错呢

要说对client那台机器的权限有限制

但是在client那台机器上直接用mysql客户端程序也能连呀

于是

似乎陷入困境

mysql官网对这个错误的解释是老板本的mysql和新版本的mysql的密码格式不兼容

如果用老板本的mysql client去连新版本的mysql server

如果mysql server上的密码格式是新格式的话

就会出这个错误

显然,本例就是这样

最后问题解决后

才发现其实一开始分析问题的时候就出现了偏差

其实知道问题的原因是由于client的版本和server上存储密码的格式相关

那么就应该去确认这两台机器一台连不上一台没问题他们分别的client版本和server上的密码格式的

如果是这样

一开始就去服务器端

use mysql

select * from user where User = ‘user’;

一看就知道了

原来有条记录

Host正好是client的ip

client连过来的时候正好是匹配这条记录

但是其密码格式是新格式

而client上的mysql client版本是老板本

不出问题才怪呢!!

再看看从服务器上通过连为什么又没有问题呢

原来还有条记录

Host是’192.168.1.%’

他的密码格式是老格式的

服务器上连过来的时候正好是匹配这一条记录

自然OK

这样解决起来也就容易了

直接将写着client ip的那条记录删掉就好了

阅读(158) | 评论(0) | 转发(0) |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值