問題: 不能從阿帕奇通過SSH訪問遠程MySQL無法從阿帕奇通過SSH訪問遠程MySQL
我的目標是使用Apache和Tomcat通過SSH隧道安全地從應用服務器訪問數據庫。 APP服務器(Linux)運行apache httpd,tomcat。 DB服務器(Linux)正在運行mysql服務器(端口3306)。 在兩臺服務器上爲用戶設置SSH:sshUser。數據庫上的MySQL已啓動。
SSH連接: 在APP服務器上,我運行以下sshUser。 (sshUser是APP和數據庫服務器的登錄用戶)
ssh -p 22 -f -N -L 3307:localhost:3306 [email protected]_ip_address
然後我在APP服務器上啓動httpd和tomcat。
測試用例: 1. APP服務器(httpd的)(本地主機:3307)>(3306)數據庫服務器(MySQL的)失敗: APP服務器上,在Apache中,我運行test.php的是下面的PHP代碼
<?php
$db_host = "localhost:3307";
$db_name = "dbname";
$db_user = "dbuser";
$db_pass = "dbpassword";
GLOBAL $errors;
GLOBAL $successes;
$errors = array();
$successes = array();
$mysqli = new mysqli($db_host, $db_user, $db_pass, $db_name);
GLOBAL $mysqli;
if(mysqli_connect_errno()) {
echo "Conn Error = " . mysqli_connect_error(); exit();
}else{
echo "Pass"; exit();
}
?>
錯誤消息: 警告:mysqli的:: mysqli的():(HY000/2005):未知MySQL服務器主機的 'localhost:3307'(1)在/$site_path/test.php在第10行,康涅狄格州錯誤=未知MySQL服務器主機'localhost:3307'(1) (使用joomla和wordpress也失敗了)
APP服務器(Tomcat)的(本地主機:3307)>(3306)DB服務器(MySQL的)是良好的:
窗戶8(httpd的)(本地主機:3307)>(3307)APP服務器(3307)>( 3306)數據庫服務器(MySQL)很好: 在windows 8客戶端上,putty目標是APP服務器,SSH隧道設置轉發端口3307(源端口)localhost:3307(目的地)。 如果我在Windows 8.1上從我的apache服務器運行相同的test.php,它沒有問題。 Joomla也有效。 (配置是如下)
窗戶8(Tomcat)的(本地主機:3307)>(3307)APP服務器(3307)>(3306)DB服務器(MySQL的)是良好的:
配置細節: APP服務器上: Tomcat的是「雄貓」用戶 的httpd是由「阿帕奇」用戶 mysqld正在由「根」 SSH是由「sshUser」開始 sshd的是「根」開始開始開始開始
/etc/passwd(在APP服務器和數據庫服務器上相同) apache:x:48:48:Apache:/ var/www:/ sbin/nologin tomcat:x:501:501 ::/home/tomcat:/sbin/nologin
這個問題可能是最適合http://serverfault.com –
$ DB_HOST =「本地主機:3307」工作在Windows8中,不在Linux中。由於joomla沒有端口參數,我更改爲默認端口。新問題:我有一個運行在APP服務器上的Mysql。我將其更改爲3309.然後ssh -f -N -L 3306:localhost:3306 sshUser @ DB_IP。但joomla總是在本地訪問Mysql,這是3309. https://dev.mysql.com/doc/refman/5.0/en/connecting.html「對於連接到本地主機,使用Unix套接字文件的MySQL,即使一個 - 端口被賦予一個端口號。「我更改爲,ssh -p 22 -f -N -L 3306:127.0.0.1:3306 sshUser @ DB_IP_address。在PHP中,更改$ db_host =「127.0.0.1」使其工作。 – pjy
我不能自己改變這個問題。但這與編程有關。該代碼需要解決joomla和mysql功能非常微妙。 (在我以前的評論中描述) – pjy