gpt4 book ai didi

php - 无法通过 SSH 从 apache 访问远程 MySQL

转载 作者:行者123 更新时间:2023-11-29 12:00:28 24 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

6年前关闭。




Improve this question




问题:
无法通过 SSH 从 apache 访问远程 MySQL

我的目标是通过 ssh 隧道使用 apache 和 tomcat 从 APP 服务器安全地访问数据库。
APP服务器(Linux)正在运行apache httpd、tomcat。
数据库服务器(Linux)正在运行 mysql 服务器(端口 3306)。
SSH 为用户设置: sshUser 在两台服务器上。数据库上的 MySQL 已启动。

SSH 连接:
在 APP 服务器上,我以 sshUser 身份运行以下命令。 (sshUser是APP和DB服务器的登录用户)

ssh -p 22 -f -N -L 3307:localhost:3306 sshUser@DB_ip_address

然后我在APP服务器上启动了httpd和tomcat。

测试用例:
1.APP服务器(httpd)(localhost: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): Unknown MySQL server host 'localhost:3307' (1) in/$site_path/test.php on line 10, Conn Error = Unknown MySQL server host 'localhost:3307 ' (1)
(使用 joomla 和 wordpress 也失败了)
  • APP server (tomcat) (localhost:3307)>(3306) DB server (MySQL) 好:
  • windows 8 (httpd) (localhost:3307)>(3307) APP server (3307)>(3306) DB server (MySQL) 好:
    在 windows 8 客户端上,putty 目标是 APP 服务器,SSH 隧道设置转发端口 3307(源端口)localhost:3307(目标)。
    如果我在 Windows 8.1 上从我的 apache 服务器运行相同的 test.php,它没有问题。 Joomla 也可以。 (配置如下)
  • windows 8 (tomcat) (localhost:3307)>(3307) APP server (3307)>(3306) DB server (MySQL) 好:

  • 配置细节:
    APP服务器上:
    Tomcat 由“tomcat”用户启动
    httpd 由“apache”用户启动
    mysqld 由“root”启动
    ssh 由“sshUser”启动
    sshd 由“root”启动

    在/etc/passwd (在 APP 服务器和 DB 服务器上相同)
    apache:x:48:48:Apache:/var/www:/sbin/nologin
    tomcat:x:501:501::/home/tomcat:/sbin/nologin

    最佳答案

    localhost:3307不是有效的主机名。

    http://php.net/manual/en/mysqli.construct.php

    mysqli::__construct ([ string $host = ini_get("mysqli.default_host")[, string $username = ini_get("mysqli.default_user") [, string $passwd= ini_get("mysqli.default_pw") [, string $dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket =ini_get("mysqli.default_socket") ]]]]]] )

    (...)

    host

    Can be either a host name or an IP address. (...)

    (...)

    port

    Specifies the port number to attempt to connect to the MySQL server.

    关于php - 无法通过 SSH 从 apache 访问远程 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32460734/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com