最近在使用mysql命令時,遇到了通過隧道連接被拒的情況,我在這里與大家分享一下解決方案。
在使用mysql命令時,我們有時候需要通過隧道方式連接遠程mysql數據庫,例如:
mysql -h 127.0.0.1 -P 22 -u username -p password --protocol=TCP --ssl --ssl-key=mysql-key.pem --ssl-cert=mysql-cert.pem -e "show databases;"
但是,當我們執(zhí)行以上命令時,有時候會出現“Connection refused”的錯誤提示:
ERROR 2026 (HY000): SSL connection error: Connection refused
這是由于mysql服務端沒有啟動SSL/TLS協議導致的,我們需要在mysql服務端配置文件中啟用SSL/TLS協議。
打開mysql服務端配置文件my.cnf,找到以下配置:
[mysqld] #ssl-ca=mysql-ca.pem #ssl-cert=mysql-cert.pem #ssl-key=mysql-key.pem
去掉前面的注釋符號,并保存文件。
重啟mysql服務并驗證是否成功配置SSL/TLS協議:
mysql -h localhost -u root -p --ssl-ca=mysql-ca.pem --ssl-cert=mysql-cert.pem --ssl-key=mysql-key.pem
如果沒有任何錯誤提示,則配置成功。
最后,再次執(zhí)行mysql命令通過隧道連接遠程mysql數據庫:
mysql -h 127.0.0.1 -P 22 -u username -p password --protocol=TCP --ssl --ssl-key=mysql-key.pem --ssl-cert=mysql-cert.pem -e "show databases;"
這時候,你會發(fā)現連接成功了!
總結:如果mysql命令通過隧道連接被拒,可能是mysql服務端沒有啟用SSL/TLS協議導致的,我們需要在mysql服務端配置文件中啟用SSL/TLS協議,并驗證是否成功配置,最后再次執(zhí)行mysql命令通過隧道連接遠程mysql數據庫。