Php 如何通过SSL访问远程数据库?
我需要通过SSL访问远程DB服务器,但在执行mysql命令时无法连接到DB服务器。任何帮助都将不胜感激 我所做的:Php 如何通过SSL访问远程数据库?,php,mysql,ssl,ssh,Php,Mysql,Ssl,Ssh,我需要通过SSL访问远程DB服务器,但在执行mysql命令时无法连接到DB服务器。任何帮助都将不胜感激 我所做的: 创建了.pem文件 [AP Server] --> [DB Server] (over SSL) 更改了我的.cnf /tmp/ca-cert.pem /tmp/server-cert.pem /tmp/server-no-password-key.pem 重新启动mysql并检查设置 [mysqld] ssl-ca=/tmp/ca-cert.pem ssl-cert
[AP Server] --> [DB Server] (over SSL)
/tmp/ca-cert.pem
/tmp/server-cert.pem
/tmp/server-no-password-key.pem
[mysqld]
ssl-ca=/tmp/ca-cert.pem
ssl-cert=/tmp/server-cert.pem
ssl-key=/tmp/server-no-password-key.pem
$mysql -u user1 -p --ssl-ca=/tmp/ca-cert.pem
mysql> show variables like '%ssl%';
+---------------+---------------------------------+
| Variable_name | Value |
+---------------+---------------------------------+
| have_openssl | YES |
| have_ssl | YES |
| ssl_ca | /tmp/ca-cert.pem |
| ssl_capath | |
| ssl_cert | /tmp/server-cert.pem |
| ssl_cipher | |
| ssl_crl | |
| ssl_crlpath | |
| ssl_key | /tmp/server-no-password-key.pem |
+---------------+---------------------------------+
mysql> SHOW STATUS LIKE 'Ssl_cipher';
+---------------+--------------------+
| Variable_name | Value |
+---------------+--------------------+
| Ssl_cipher | DHE-RSA-AES256-SHA |
+---------------+--------------------+
ssh dbserver // pubkey login is ok.
更新 我的第一个目标是从AP服务器运行这个PHP脚本。这个脚本在DB服务器中工作
$ mysql -u user1 -p -h dbserver --ssl-ca=/tmp/ca-cert.pem
Enter password:
ERROR 2003 (HY000): Can't connect to MySQL server on 'dbserver' (110)
关于防火墙,端口3306已关闭。我想我使用SSL时不需要打开。事实上,即使3306关闭,sequel pro(sql客户端应用程序)也可以连接到DB。SSH私钥设置可能是导致
更新3 一些网站显示SSH端口转发。那要容易得多。。。创建.pem文件和设置只是浪费我的时间。。。。?我会检查的
更新4 成功了
mysql> SHOW GRANTS FOR user1;
------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'user1'@'%' IDENTIFIED BY PASSWORD '*******************' WITH GRANT OPTION |
+---------------------------------------------------------------------------------------------------------------------------------+
我仍然不确定的是,pem设置是否必要。当我删除mysqli_ssl_集时,我可以通过tcpdump查看原始数据。我认为ssh转发会在整个公共网络中加密数据。。。这没有道理
ssh user1@dbserver -p 22 -g -N -f -L 12345:localhost:3306
mysql -uuser1 -p -h 127.0.0.1 –port=12345
还是有问题还是你自己解决了?如果是,请将答案发布为答案,而不是编辑。关于防火墙,端口3306已关闭。我想我使用SSL时不需要打开。嗯,是的,你知道。这里的整个问题似乎在SSL和SSH之间发生了变化,这两个东西是不相关的。
ssh user1@dbserver -p 22 -g -N -f -L 12345:localhost:3306
mysql -uuser1 -p -h 127.0.0.1 –port=12345
sudo tcpdump -nxX -s 2000 port 3306 -ilo