Проблема с использованием Perl для подключения к базе данных MySQL на удаленном сервере - PullRequest
0 голосов
/ 19 июля 2010

У меня есть Perl-скрипт, который получает данные из базы данных MySQL на одном сервере (назовем это server1), что-то делает с ним и записывает их в другую базу данных на другом сервере (server2). Оба сервера удалены от сервера, на котором выполняется скрипт Perl.

Я могу подключиться к БД на сервере1 ОК, но когда я пытаюсь подключиться к БД на сервере2, используя тот же метод 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 голосов
/ 20 июля 2010

ОК, в отсутствие альтернативы, я получил кого-то с корневым доступом к server2, чтобы сделать исправление, опубликованное в другом месте:

Подключитесь к MySQL как пользователь root MySQL, затем:

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

Замена 'username', 'hostname' и 'password' на соответствующие значения.

Итак, я говорю, что если у вас нетroot-доступ для обновления MySQL или для изменения пароля для использования старого алгоритма хеширования паролей, тогда единственное решение - найти кого-то, кто делает , кто может внести изменения для вас.

0 голосов
/ 19 июля 2010

В качестве меры безопасности база данных может быть настроена на прием соединений только из определенного набора адресов. Так что, если вы пытаетесь получить доступ к базе данных prod с домашнего ноутбука (например), он может отклонить вас, даже если у вас есть надлежащие учетные данные. Попробуйте получить доступ к нему из места, где известно, что он работает с использованием другой технологии - например, если у вас есть веб-сайт, который уже обращается к нему, перейдите туда, где работает apache / tomcat, и попробуйте там Perl. Если это работает, это проблема. Вы также можете предварительно проверить настройки базы данных.

...