【发布时间】:2016-04-27 00:16:09
【问题描述】:
所以我需要通过 SSL 连接到 MySQL 服务器。我在服务器和客户端上都有 root 访问权限。服务器和客户端的操作系统都是 Ubuntu Linux。服务器正在运行 MySQL 5.5.46。
我按照以下说明生成了证书:
http://dev.mysql.com/doc/refman/5.5/en/creating-ssl-files-using-openssl.html
这创建了八个 .pem 文件。我成功地让服务器在启用 SSL 的情况下运行。我知道,因为如果我在服务器上得到 MySQL 提示并运行:
mysql> show global variables like 'have_%ssl';
我明白了:
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_openssl | YES |
| have_ssl | YES |
+---------------+-------+
我还为将要连接到该服务器的用户设置了正确的权限。我知道,因为如果我这样做:
show grants for <username>
我得到了一个带有“REQUIRE SSL”的 GRANT 语句。所以我真的认为服务器端很好。
从客户端连接是问题所在。如果我像这样使用“-p”选项,我可以做到这一点:
$ mysql --ssl-ca=./path/to/ca.pem -h <hostname> -u <username> -D <databasename> -p
然后我会提示我输入密码,如果我输入密码,我就可以连接。
但是我需要自动化这个连接,并且将密码附加到上面的行是一个坏主意(而且永远不会工作 - 我也想知道)。
那么,如何在不硬编码密码的情况下以自动化方式安全地连接到客户端?当我按照上面链接中的说明生成证书时,我得到了八个 .pem 文档,其中大部分我没有使用。我需要使用 client-key.pem 吗?客户证书.pem?请注意,在命令行上传递到其他证书的路径不起作用。也就是这个:
mysql --ssl-ca=./ca.pem --ssl-cert=./client-cert.pem --ssl-key=./client-key.pem -h <hostname> -u <username> -D <databasename>
与上述所有其他组合一样失败:“访问被拒绝”
非常感谢任何帮助。
【问题讨论】:
标签: mysql ssl connection certificate ssl-certificate