【发布时间】:2014-10-12 08:36:24
【问题描述】:
我是 PERL 脚本的新手,我想使用 PERL 脚本从 Linux 服务器中的 PHP/MySQL 收集数据。
我已经尝试了一些示例 PERL 代码,它适用于本地环境。
但我需要从另一台 Linux 服务器获取数据:
#!/usr/bin/perl
use DBI;
# connect to MySQL...
$driver= "mysql";
$dsn = "DBI:$driver:database=mms;host=localhost";
$dbh = DBI->connect($dsn, "root", "");
# prepare and execute the SQL statement
$sth = $dbh->prepare("SELECT * FROM dailyproductions");
$sth->execute;
# retrieve the results
while( my $ref = $sth->fetchrow_hashref() ) {
print $ref->{'id'};
}
exit;
这段代码在本地工作(localhost),但是当我切换到不同的主机时:
$dsn = "DBI:$driver:database=mms;host=192.168.0.1";
我收到此错误:
DBI connect('database=mms;host=192.168.0.1,'root',...) 失败:主机'admin-
lap' 不允许在 D:\Confidential\Report\mysql.pl 第 7 行连接到此 MySQL 服务器 无法对 D:\Confidential\Report\mysql.pl 第 10 行的未定义值调用方法“prepare”。
我该如何克服这个问题?
【问题讨论】:
-
您需要更新 MySQL 中的权限以允许
'admin-lap'@'192.168.0.1'连接。见here -
你能告诉这个语句如何使用 "$dsn = "DBI:$driver:database=mms;host=192.168.0.1";"
-
不要混淆 PHPMySQL(一个 MySQL 客户端)和 MySQL(一个数据库服务器)。