【发布时间】:2019-10-10 14:07:51
【问题描述】:
我有以下 Perl 脚本,我尝试通过它连接到我的本地 MySQL 服务器,
#!/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 用户所有的权限,但我每次都会收到以下错误,
拒绝用户'root'@'localhost'访问(使用密码:YES)
我是 Perl 的新手,我猜我犯了一些错误。请告诉我我的代码有什么问题。
提前致谢!!
附注我在 Windows 机器上运行它,即使在我的 Ubuntu 机器上我也会遇到同样的错误,尽管我在那里指定了套接字的路径。
【问题讨论】:
-
您的密码好像错误。代码看起来没问题。
-
没有..密码正确...
-
你可以从控制台登录吗?使用相同的用途/密码?
-
试试:
$dsn = "dbi:mysql:$database:localhost:3306"; -
将
my $dbh = DBI->connect($dsn, $userid, $password ) or die $DBI::errstr;更改为my $dbh = DBI->connect($dsn, $userid, $password, {RaiseError=>1} ) or die $DBI::errstr;并查看是否收到任何详细的错误消息