2013-04-24 1 views
0

Так что я использую модуль Perl DBI для доступа к базе данных MySQL на серверной Linux-машине, у которой у меня нет доступа root. Администратор установил MySQL и создал для меня базу данных. Я могу написать скрипт Perl для доступа к базе данных просто отлично.Perl-скрипт с использованием DBI-модуля для доступа по-разному установленный MySQL

Затем я установил MySQL в своем локальном пространстве и изменил переменную среды, чтобы использовать локально установленные исполняемые файлы mysql. Я могу получить доступ к базе данных из командной строки. Но после того, как я соответствующим образом изменил сценарий Perl и выполнил его, я получил ошибку «Access denied». И похоже, что Perl-скрипт по-прежнему пытается использовать установленный администратором mysql для доступа.

Так как я могу это решить?

Вот как я связываю:

my $conn = DBI->connect("dbi:mysql:dbname:localhost:3366", "root", "root") 
    or die DBI::errstr; 

ответ

0

Используйте одинарные кавычки, как правило, в строке подключения базы данных, строки пароля и запросов SQL, так как это может дать вам ошибку с двойной quotes.As двойные кавычки используется для интерполяции.

Поэтому, пожалуйста, попробуйте одинарные кавычки.

my $conn = DBI->connect('dbi:mysql:dbname:localhost:3366', 'root', 'root') or die "..." 

Я предполагаю, что у вас есть доступ к MySQL с суперпользователя с паролем через командную строку (вручную), как вы заявили.

+0

Я попытался одиночные кавычки, как Вы предложили, но он не работает для меня. У меня есть root доступ только к локально установленному mysql. – Wei

1

Я нашел решение, чтобы ответить на свой вопрос.

Что я сделал, это перекомпилировать и установить модуль DBL-mysql perl и предоставить ему путь локально установленного mysql.

perl Makefile.PL PREFIX=/path/to/perl/local/lib 
      --mysql_config=/path/to/locally_installed_mysql/bin/mysql_config 

Ссылка: http://cpansearch.perl.org/src/RUDY/DBD-mysql-2.9008/INSTALL.html