0

我正在尝试使用 Perl DBI AND DBD::MySQL Modules 连接到远程服务器上的 MySQL 数据库,但出现以下错误

“DBI connect('database=user_rohan;host=hostname;port=3306','rohan',...) 失败:无法连接到 MySQL 服务器”

我通过命令行登录我的远程服务器,因为我没有在 Perl 脚本中找到任何登录服务器的选项。下面是我的脚本:

#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use DBD::mysql;
my $host = 'hostname';
my $user = 'rohan';
my $dbh   =DBI>connect("dbi:mysql:database=user_rohan;host=$host;port=3306","$user","password", {'RaiseError' => 1});

在安装 Perl DBD:MySQL 模块时,我遇到了很多问题,但能够成功安装模块并运行我的测试。我发现之前提出了一个类似的问题,但无法通过阅读其评论中的答案来解决。

谢谢,

罗汉

4

4 回答 4

0

我能够连接到本地 MySQL 数据库,因此问题不在 Perl 模块和脚本中。

由于端口被阻止,我无法直接连接到远程 MySQL 数据库。在这些情况下,我们需要使用端口 ssh 转发。

ssh -L 3307:localhost:3306 用户名@主机名

然后在你的 perl 脚本中设置 host = 127.0.0.1 (localhost) 和 port 为 3307。

于 2013-10-22T20:10:57.187 回答
0

罗扬测试

my $host = '10.171.30.178';

或者

my $host = '127.0.0.1';
于 2013-10-21T15:24:18.220 回答
0

请检查您的连接是否正确。主机名是否正确?用户名是否正确?密码是否正确?端口是否正确?请使用 mysql 客户端进行尝试,如果您可以使用相同的数据成功连接到 MySQL 数据库,那么这是您的代码中的错误。否则你的连接数据有问题。这是一种通用方法,这不是您最后一次遇到此问题,但如果您知道正确的方法,您将无需在编程论坛上询问有关此问题的问题。

于 2013-10-21T15:21:13.577 回答
0

我的 $dbh DBI>connect("dbi:mysql:database=user_rohan;host=$host;port=3306","$user","password", {'RaiseError' => 1});

可能打字错误?

$dbh = DBI->connect($data_source, $username, $auth, \%attr);

和 DBI::mysql 必然

于 2013-10-21T15:57:52.330 回答