Perl脚本使用DBI模块访问不同安装的MySQL

时间:2013-04-24 01:50:37

标签: mysql perl dbi

所以我使用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;

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

所以请尝试使用单引号。

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

我假设您可以通过命令行(手动)使用root用户访问mysql,如您所述。