所以我使用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;
答案 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,如您所述。