2013-04-24 96 views
0

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

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

那么我该如何解决这个问题?

这里是我如何连接:一般数据库连接字符串,密码字符串和SQL查询

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

回答

0

使用单引号,因为用于插这些可能会给你用双quotes.As双引号错误。

所以请尝试用单引号。

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

我假设你必须通过命令行(手动)访问MySQL用root用户,密码为您说明。

+0

我曾尝试单引号如你所说,但它并没有为我工作。我只对本地安装的mysql有root权限。 – Wei 2013-04-24 11:51:59

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