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版本/库 对我来说更明显的选择是在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) 显而易见的事情就是运行一个 如果我运行查询 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脚本,定期检查上传的文件并对其进行处理(确保在成功处理后移动或删除它). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |