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

使用DBI模块访问不同安装的MySQL的Perl脚本,mysql,perl,dbi,Mysql,Perl,Dbi,所以我使用Perl DBI模块访问服务器linux机器上的MySQL数据库,我没有根访问权限。管理员安装了MySQL并为我创建了一个数据库。我可以编写一个Perl脚本来访问数据库 然后我在本地空间中安装了MySQL,并将环境变量更改为使用本地安装的MySQL可执行文件。我可以从命令行访问数据库。但是在我相应地修改Perl脚本并执行它之后,我得到了“拒绝访问”错误。而且Perl脚本似乎仍然试图使用管理员安装的mysql来访问 那么我该如何解决这个问题呢 以下是我的连接方式: my $conn =

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

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

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

以下是我的连接方式:

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

通常在数据库连接字符串、密码字符串和sql查询中使用单引号,因为它们可能会导致双引号错误。因为双引号用于插值

所以请尝试使用单引号

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

我假设您可以通过命令行(手动)使用root用户和密码访问mysql。

我找到了解决方案,因此我将回答自己的问题

我所做的是重新编译和安装perl DBD mysql模块,并为其提供本地安装的mysql的路径

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

我已经按照你的建议尝试了单引号,但它对我不起作用。我只有本地安装的mysql的root访问权限。