Perl + DBI + REMOTE MySQL 服务器

Perl + DBI + REMOTE MySQL Server

我刚开始编写 Perl 代码,我需要帮助来弄清楚为什么我无法在 Perl 代码中使用 DBI 从我的 linux 桌面连接到远程 MySQL 服务器。 我已经从我的桌面连接到远程 MySQL 服务器,我已经在 DBI 连接线中使用名称或 IP 地址确定了删除 MySQL 服务器,但是,根据下面的错误消息,似乎DBI 正在尝试连接到本地数据库(不存在),而不是远程数据库:

!/usr/bin/perl -w
use DBI;
use DBD::mysql;
use MySQL;

$DBHOST = "mysqlserver.example.com";
$DBNAME = "anydb";
$DBUSER = "userdb";
$DBPASS = "userdbpwd";
$dsn = "dbi:mysql:database=$DBNAME,host=$DBHOST, port=3306";

my $dbh = DBI->connect("DBI:mysql:database=$DBNAME,host=$DBHOST, port=3306", "$DBUSER", "$DBPASS", \%attr);

运行 上面的代码我收到错误:

DBI connect failed: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock

我安装了以下 DBI 驱动程序:

DBM ExampleP File Gofer Proxy SQLite Sponge mysql

正如您在 documentation for DBD::mysql 的 connect() 方法中看到的那样,DSN 部分应该用分号 (;) 分隔,而不是逗号(,):

use DBI;

$dsn = "DBI:mysql:$database";
$dsn = "DBI:mysql:database=$database;host=$hostname";
$dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";

$dbh = DBI->connect($dsn, $user, $password);