我尝试使用Perl DBD-mysql模块连接到远程MySQL服务器。客户端在Windows下,所以在连接Perl之前,我使用Windos cmd行进行了一些测试:
mysql -h xx.xx.xx.xx -u root -p database -P 3306
它返回ERROR 1045 (28000): Access denied for user 'root'@'my-pc-name'
。我在互联网上做了一些研究,发现在服务器端运行grant all privileges on *.* to root@"%" identified by "password"
可以解决这个问题。然后我成功连接到服务器。
但是,使用Perl DBD-mysql模块连接时仍存在此类访问问题。这是我的代码:
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
my $dbh = DBI->connect('DBI:mysql:database@xx.xx.xx.xx', 'root', 'password'
) || die "Could not connect to database: $DBI::errstr";
据报道:
DBI connect('database@xx.xx.xx.xx','root',...) failed: Access denied for user 'root'@'localhost' (using password: YES)
请你提一些提示吗?
答案 0 :(得分:0)
在the DBI CPAN doc page上,我为$data_source
找到了DBI->connect
的两种替代方案。与我的第一次尝试相反,更详细的可以成功连接到MySQL服务器。它说:
Examples of $data_source values are:
dbi:DriverName:database_name
dbi:DriverName:database_name@hostname:port
dbi:DriverName:database=database_name;host=hostname;port=port
虽然第二个似乎不适合我,但我转向第三个,即
my $dbh = DBI->connect('dbi:mysql:dbname=database;host=xx.xx.xx.xx','root', 'password'
) || die "Could not connect to database: $DBI::errstr";
就像魅力一样。