php – Mysql密码哈希方法旧vs新

我正在尝试从位于slicehost(两个不同的托管公司)的服务器中的PHP脚本连接到dreamhost的 mysql服务器.
我需要这样做,所以我可以在slicehost将新数据传输到dreamhost.使用转储不是一种选择,因为表结构不同,我只需要传输一小部分数据(每日100-200条记录)
问题是我在slicehost使用新的 MySQL密码哈希方法,而dreamhost使用旧的方法,所以我得到
$link = MysqL_connect($MysqLHost,$MysqLUser,$MysqLPass,FALSE); 

Warning: MysqL_connect() [function.mysql-connect]: OK packet 6 bytes shorter than expected
Warning: MysqL_connect() [function.mysql-connect]: MysqLnd cannot connect to MysqL 4.1+ using old authentication
Warning: MysqL_query() [function.MysqL-query]: Access denied for user 'nodari'@'localhost' (using password: NO)

事实:

>我需要在slicehost继续使用新方法,我不能使用较旧的PHP版本/库
>数据库太大,无法每天使用转储进行传输
>即使我这样做,表格也有不同的结构
>我需要每天只复制一小部分(仅当天的变化,100-200条记录)
>由于表格如此不同,我需要使用PHP作为规范化数据的桥梁
>已经用谷歌搜索了它
>已经与两位支持人员进行了交谈

对我来说更明显的选择是在dreamhost上开始使用新的MysqL密码哈希方法,但它们不会改变它,我不是root,所以我不能自己做.

任何疯狂的想法?

通过VolkerK消化:

MysqL> SET SESSION old_passwords=0;
Query OK,0 rows affected (0.01 sec)

MysqL> SELECT @@global.old_passwords,@@session.old_passwords,Length(PASSWORD('abc'));
+------------------------+-------------------------+-------------------------+
| @@global.old_passwords | @@session.old_passwords | Length(PASSWORD('abc')) |
+------------------------+-------------------------+-------------------------+
|                      1 |                       0 |                      41 |
+------------------------+-------------------------+-------------------------+
1 row in set (0.00 sec)

显而易见的事情就是运行一个
MysqL的> SET GLOBAL old_passwords = 0;
但我需要SUPER特权这样做,他们不会给我

如果我运行查询

SET PASSWORD FOR 'nodari'@'HOSTNAME' = PASSWORD('new password');

我收到了错误

ERROR 1044 (42000): Access denied for user 'nodari'@'67.205.0.0/255.255.192.0' to database 'MysqL'

我不是根…

dreamhost支持的人坚持说问题就在我的最后.但他说他会运行我告诉他的任何查询,因为它是私人服务器.
所以,我需要告诉这个人确切地说要运行什么.
所以,告诉他跑

SET SESSION old_passwords=0;
SET GLOBAL old_passwords=0;
SET PASSWORD FOR 'nodari'@'HOSTNAME' = PASSWORD('new password');
grant all privileges on *.* to nodari@HOSTNAME identified by 'new password';

会是一个好的开始吗?

是的,这看起来像个顽固分子.如果没有主机的合作或更改密码格式或客户端库的能力,您没有很多选择.

老实说,我的第一选择是抛弃Dreamhost.这可能是很多工作,但是如果他们要使用旧的不兼容的东西卡住,它将继续存在问题.

如果那不是一个选项,联合自动化流程怎么样?您可以将Slicehost端的数据导出为CSV文件,并将其按照Dreamhost所需的任何格式,然后将其上传到Dreamhost服务器.您可以在Dreamhost服务器上安装一个cron脚本,定期检查上传文件并对其进行处理(确保在成功处理后移动或删除它).

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...