使用Perl连接到远程服务器上的MySQL数据库的问题

时间:2010-07-19 15:29:57

标签: mysql perl dbi

我有一个Perl脚本,它从一个服务器上的MySQL数据库中获取数据(让我们称之为server1),对它做一些事情并将其写入另一个服务器(server2)上的另一个数据库。两台服务器都远程运行Perl脚本的服务器。

我可以连接到server1上的数据库确定,但是当我尝试连接到server2上的数据库时,使用相同的DBI方法,我收到错误。这里,作为命令行Perl,是导致错误的位:

perl -MDBI -e 'DBI->connect("DBI:mysql:myDB:server2.whatever.co.uk","myuser","mypassword") or die DBI->errstr;'

这是错误信息:

DBI connect('myDB:server2.whatever.co.uk','myuser',...) failed: Client does not support authentication protocol requested by server; consider upgrading MySQL client at -e line 1 Client does not support authentication protocol requested by server; consider upgrading MySQL client at -e line 1.

我没有root权限,所以我无法升级MySQL而且我无法更改密码以使用旧密码哈希算法,这是许多地方建议的解决方案。

想点什么?

2 个答案:

答案 0 :(得分:0)

可以将数据库设置为仅接受来自某组地址内的连接,作为安全措施。因此,如果您尝试从家用笔记本电脑访问prod数据库(例如),即使您拥有正确的凭据,它也可能会拒绝您。尝试从已知使用其他技术工作的地方访问它 - 例如,如果您有一个已经访问它的网站,请转到运行apache / tomcat的地方,然后在那里尝试perl。如果它有效,那就是问题所在。您还可以主动检查数据库设置。

答案 1 :(得分:0)

好的,在没有替代方案的情况下,我找到了对server2具有root权限的人来执行在其他地方发布的修复:

以MySQL root用户身份连接MySQL,然后:

mysql> use mysql;
mysql> SET PASSWORD FOR 'username'@'hostname' = OLD_PASSWORD('password');
mysql> FLUSH PRIVILEGES;

用适当的值替换'username','hostname'和'password'。

所以我在这里说的是,似乎你没有root访问权来升级MySQL或更改密码以使用旧的密码哈希算法,那么唯一的解决方案就是找到一个 谁可以为你做出改变。