我正在尝试安装DBD::mysql
,但安装失败并显示以下消息:
--------------------
t/00base.............................ok
t/10connect..........................FAILED--Further testing stopped: ERROR: Access
denied for user 'root'@'localhost' (using password: NO)
make: *** [test_dynamic] Error 9
/usr/bin/make test -- NOT OK
---------------------
问题是,我们的MySQL安装不使用套接字的默认位置,并且无法连接默认套接字。它位于其他地方,比如/dspmydata/data/ourdb/mysql.sock
。
现在,如何告诉DBD::mysql
安装程序它应该使用此套接字而不是默认套接字?
答案 0 :(得分:1)
使用选项mysql_socket
示例:
my $dbcon = DBI->connect('dbi:mysql:database=DBNAME;mysql_socket=/mysql/tmp/mysql.sock', 'username','password');
或者您也可以对其进行符号链接:
ln -s /mysql/tmp/mysql.sock /var/lib/mysql/mysql.sock
答案 1 :(得分:0)
您收到该错误是因为您的MySQL安装已配置为需要root
用户的密码,而不是因为套接字文件 * 的位置。< / p>
如果在运行安装时未指定用户,则使用当前登录用户的名称。您可以通过环境变量或命令行选项指定用户名和密码等配置详细信息,但出于安全考虑,我建议不要为root
用户执行此操作。
而是为安装创建测试数据库和测试用户。授予测试用户所有权限(当然,仅限测试数据库)。使用MySQL客户端:
GRANT ALL PRIVILEGES ON test.* TO 'test'@'localhost' IDENTIFIED BY 's3kr1t';
(假设数据库名称为test
,用户名为test
,密码为s3kr1t
)
导出适当的environment variables,以便Perl可以连接到您创建的数据库,例如
export DBD_MYSQL_TESTDB=test
export DBD_MYSQL_TESTHOST=localhost
export DBD_MYSQL_TESTPASSWORD=s3kr1+
export DBD_MYSQL_TESTPORT=3306
export DBD_MYSQL_TESTUSER=test
然后开始安装。
*如果Perl无法找到套接字文件,您将收到更多错误:
ERROR: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) 2002 Can't continue test