2015-03-18 3 views
1

Я следующий Perl скрипт, через который я пытаюсь подключиться к моей локальной версии сервера MySQL,Perl - DBI не может подключиться к MySQL (Access Denied ...)

#!/usr/bin/perl 

use DBI; 
use strict; 

my $driver = "mysql"; 
my $host = "localhost"; 
my $database = "test"; 
my $dsn = "DBI:$driver:database=$database,host=$host"; 
my $userid = "root"; 
my $password = "password"; 

my $dbh = DBI->connect($dsn, $userid, $password) or die $DBI::errstr; 

my $sth = $dbh->prepare("select from_date,to_date from temp"); 
$sth->execute() or die $DBI::errstr; 
print "Number of rows found :" + $sth->rows; 
while (my @row = $sth->fetchrow_array()) { 
    my ($from_date, $to_date) = @row; 
    print "From Date = $from_date, To Date = $to_date\n"; 
} 
$sth->finish(); 

Когда я запускаю этот сценарий, я получить ошибку ниже каждый раз, хотя я дал все привилегии этого пользователя MySQL,

Доступ запрещен для пользователя «корень» @ «локальный» (используя пароль: ДА)

Я новичок Perl, я думаю, некоторые ошибка осуществлен. Скажите, пожалуйста, что случилось с моим кодом.

Спасибо заранее!

P.S. Я запускаю это на машине Windows, и я получаю такую ​​же ошибку даже на моей машине Ubuntu, хотя я указываю путь сокета.

+1

Похоже, неверный пароль. Код выглядит нормально – Jens

+0

Нет .. Правильный пароль ... –

+0

Можете ли вы войти с консоли с таким же использованием/паролем? – Jens

ответ

0

В Mysql имя пользователя включает имя узла подключения.

Например, у одного и того же пользователя могут быть два разных пароля в зависимости от того, где они соединяются.

Пример:

корень @ локальный является другим пользователем, чем [email protected]

Try и сбросить пароль? В консоли mysql выполните обе следующие команды. (Изменение пароля «открытого текста» на ваш пароль)

УСТАНОВИТЬ ПАРОЛЬ ДЛЯ «root» @ '%' = PASSWORD ('cleartext password');

SET PASSWORD ДЛЯ «root» @ «localhost» = PASSWORD («пароль открытого текста»);

Это позволит обоим пользователям корневые использовать один и тот же пароль

0

я столкнулась аналогичный вопрос. Я использовал строку подключения ниже;

my $dbh = DBI->connect("DBI:mysql:database=db_name;host=db_server_ip", "db_user", "db_password", {'RaiseError' => 1});

пароль имел символ "@" в пределах, заменив двойные кавычки (") в одинарные кавычки (') решается для меня.

my $dbh = DBI->connect("DBI:mysql:database=db_name;host=db_server_ip", "db_user", 'db_password, {'RaiseError' => 1});

 Смежные вопросы

  • Нет связанных вопросов^_^