【发布时间】:2014-05-09 14:20:02
【问题描述】:
长期阅读,但这是我在这里的第一个问题。
我在数据中心有一个 MySQL 服务器,在另一个地方有处理服务器,因此我需要加密从我的 Perl 脚本到数据库的连接。在 MySQL 上进行了所有必要的设置(创建新用户、创建 ca、服务器和客户端密钥),并且通过 SSL 的 MySQL 连接工作正常。
root@server:# mysql -h _HOST_ --port 3306 -u _SSL_USER_ --ssl-cert=/etc/mysql/certs/client-cert.pem --ssl-key=/etc/mysql/certs/client-key.pem -p _DATABASE_
Enter password:
Welcome to the MySQL monitor.
Commands end with ; or \g.
Your MySQL connection id is 49694205
Server version: 5.0.96 Source distribution ...
所以,我相信设置是好的。问题是我无法让我的 Perl 脚本连接到数据库。返回的错误很简单:
在 temp.pl 第 7 行拒绝用户 '_SSL_USER_'@'HOST' 的访问(使用密码:YES)。
为简化起见,我在脚本中仅添加了以下代码:
#!/usr/bin/perl
use strict;
use DBI;
#DBI->trace(5);
my $dbh = DBI->connect(
"DBI:mysql:database=_DATABASE_;host=_HOST_;
mysql_ssl=1;
mysql_ssl_client_key=/etc/mysql/certs/client-key.pem;
mysql_ssl_client_cert=/etc/mysql/certs/client-cert.pem;
mysql_ssl_ca_file=/etc/mysql/certs/ca-cert.pem",
'_SSL_USER_',
'_SSL_USER_PWD_'
) || die DBI->errstr;
exit(0);
Perl 版本是为 i486-linux-thread-multi 构建的 v5.10.0。 DBD::mysql 模块是使用“-ssl”选项编译的。
我无法弄清楚或找到进一步调试的方法。任何帮助将不胜感激。
谢谢!
【问题讨论】: