0

所以我使用 Perl DBI 模块来访问服务器 linux 机器上的 MySQL 数据库,我没有 root 访问权限。管理员安装了 MySQL 并为我创建了一个数据库。我可以编写一个 Perl 脚本来访问数据库就好了。

然后我在本地空间中安装了 MySQL 并更改环境变量以使用本地安装的 mysql 可执行文件。我可以从命令行访问数据库。但是在我相应地更改 Perl 脚本并执行它之后,我得到了“拒绝访问”错误。而且似乎 Perl 脚本仍然尝试使用管理员安装的 mysql 来访问。

那么我该如何解决呢?

这是我的连接方式:

my $conn = DBI->connect("dbi:mysql:dbname:localhost:3366", "root", "root")
    or die DBI::errstr;
4

2 回答 2

1

我找到了解决方案,所以我会回答我自己的问题。

我所做的是重新编译和安装 perl DBD-mysql 模块,并给它本地安装的 mysql 的路径。

perl Makefile.PL PREFIX=/path/to/perl/local/lib 
             --mysql_config=/path/to/locally_installed_mysql/bin/mysql_config

参考: http ://cpansearch.perl.org/src/RUDY/DBD-mysql-2.9008/INSTALL.html

于 2013-04-24T14:45:06.283 回答
0

通常在数据库连接字符串、密码字符串和 sql 查询中使用单引号,因为这些可能会给您带来双引号错误。因为双引号用于插值。

所以请尝试使用单引号。

my $conn = DBI->connect('dbi:mysql:dbname:localhost:3366', 'root', 'root') or die "..."

正如您所说,我假设您可以通过命令行(手动)使用具有密码的 root 用户访问 mysql。

于 2013-04-24T05:25:01.650 回答