我试图以http://bluesql.net连接到mySQL数据库,但当我try 连接时,会出现以下错误:

Connect Error (2000) mysqlnd cannot connect to MySQL 4.1+ using old authentication

我调查过这个问题,它与MySQL4.1之前使用的一些旧密码方案有关.较新的版本可以 Select 使用旧密码,我看过可能会导致这个问题.

我正在运行PHP5.3,并且正在连接mySQLi(新的mySQLi(…).我希望我能在代码中做些什么来连接bluesql的DB.net——显然我无法控制他们数据库的设置方式.降级php版本不是一个选项.

有人有什么 idea 吗?

推荐答案

编辑:这仅适用于您控制MySQL服务器的情况.如果你不是在看Mysql password hashing method old vs new

首先判断SQL查询

SHOW VARIABLES LIKE 'old_passwords'

(在MySQL命令行客户端中,HeidiSQL或您喜欢的任何前端)服务器是否默认设置为使用旧密码模式.如果返回old_passwords,Off,那么您只是碰巧user表中有旧密码条目.MySQL服务器将对这些帐户使用旧的身份验证 routine .您只需为该帐户设置一个新密码,就会使用新的 routine .

您可以通过查看mysql.user表(具有访问该表的帐户)来判断将使用哪个 routine

SELECT `User`, `Host`, Length(`Password`) FROM mysql.user

对于使用旧密码的帐户,这将返回16,对于使用新密码的帐户,这将返回41(对于完全没有密码的帐户,这将返回0,您可能还需要处理这些问题)

SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges;

(将UserHost替换为您从上一个查询中获得的值.)然后再次判断密码的长度.现在应该是41,您的客户端(例如mysqlnd)应该能够连接到服务器.

另请参阅MySQL文档: *http://dev.mysql.com/doc/refman/5.0/en/old-client.html
*http://dev.mysql.com/doc/refman/5.0/en/password-hashing.html
*http://dev.mysql.com/doc/refman/5.0/en/set-password.html

Php相关问答推荐

如何使用查询范围在Statamic中按组过滤用户?

如何在Woocommerce中禁用机器人添加到推车?

向在添加到购物车上动态创建的WooCommerce产品添加发货类别

只收取WooCommerce中最高的运费

Symfony Validator:如何使用XML表示法验证深度嵌套的数据?

Select 本地提货时隐藏WooCommerce显示的发货成本

Regex:高级删除单行PHP注释

在具有Angular 的 Laravel 应用程序中,不显示图像

使用 wp_footer 挂钩添加一些 CSS 不起作用

WooCommerce订单支付页面上的附加支付订单按钮

在WooCommerce我的账户单个订单页面中添加订单商品部分和按钮

WooCommerce - 调用功能ID不正确.不应直接访问订单属性

Laravel auth()->id() 在生产服务器中不工作

来自 GoDaddy 的邮箱在 Gmail 中显示为via

htaccess php 文件,然后是文件夹

适当的时区处理 Laravel / Carbon

PHP for each 函数打印 td

如何在 Process facade 中转义特殊字符?

无法在 Laravel 10 中安装 jenssegers/mongodb

我正在使用 Baryryvdh/laravel-snappy 从 HTML 导出 PDF 它正在工作但缩小了 pdf 文件