Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用workbench通过ssh连接到远程MySQL数据库_Mysql_Ssh_Mysql Workbench_Putty - Fatal编程技术网

使用workbench通过ssh连接到远程MySQL数据库

使用workbench通过ssh连接到远程MySQL数据库,mysql,ssh,mysql-workbench,putty,Mysql,Ssh,Mysql Workbench,Putty,我正在尝试通过SSH通过MySQL Workbench连接到远程数据库。我试图连接到的远程数据库有防火墙,它是受私钥保护的(我已经将其隐藏为打开SHH)。当我尝试连接时,我总是遇到一个错误,我只是对我应该使用的数据库的信息有点困惑。我一直看到人们在不同的问题中使用localhost,而数据库在同一点上间歇性地改变。我目前的设置是,我必须连接到防火墙的服务器(检查),现在有多个虚拟机正在运行,我希望连接到,例如192.1.91.0。我还在本地主机5000上的putty上设置了一个端口(我不知道这是

我正在尝试通过SSH通过MySQL Workbench连接到远程数据库。我试图连接到的远程数据库有防火墙,它是受私钥保护的(我已经将其隐藏为打开SHH)。当我尝试连接时,我总是遇到一个错误,我只是对我应该使用的数据库的信息有点困惑。我一直看到人们在不同的问题中使用localhost,而数据库在同一点上间歇性地改变。我目前的设置是,我必须连接到防火墙的服务器(检查),现在有多个虚拟机正在运行,我希望连接到,例如192.1.91.0。我还在本地主机5000上的putty上设置了一个端口(我不知道这是否相关)。当我尝试使用192.1.91.0端口3306或本地主机5000进行连接时。我也犯了同样的错误。有人能帮忙吗。附件是我放入workbench的信息的图像

如果MySQL服务器配置为接受远程连接,您可以使用服务器IP地址,但不需要通过ssh进行连接。选择connect over ssh后,工作台将使用ssh凭据创建一个端口转发到指定的服务器。因此,您必须使用localhost作为MySQL主机名。由于端口转发,请求将转发到远程计算机。简而言之:据我所知,您必须使用localhost。

我认为这里有一些误解。防火墙不受密钥对的保护。需要SSH连接。防火墙仅使用特定规则过滤网络流量(例如,仅允许启用的网络端口通过)。使用SSH连接时,必须使用从远程SSH连接端看到的MySQL地址。这意味着,如果MySQL服务器与SSH服务器(使用SSH隧道时连接到的服务器)运行在同一台机器上,则地址为localhost(或IPv4/IPv6环回地址)。有关更多详细信息,请参阅我在Youtube上的视频。

要将workbench与私有数据库连接,您需要一个“跳转主机”,也称为“堡垒主机”,它可以是与数据库位于同一VPC中的公共子网中的任何EC2实例

请遵循以下步骤:
  • 打开附加到数据库的安全组,并添加新规则,如下所示:-
  • 类型:MYSQL/Aurora,协议:TCP,端口范围:3306,
    来源:securitygroupofEC2(您可以通过输入 “sg-”)

  • 打开连接到EC2的安全组,并使端口22打开。如果没有,请添加新规则,如下所示:-
  • 类型:SSH,协议:TCP,端口范围:22,来源:MY IP

  • 打开Workbench,单击新建连接
  • -标准TCP/IP over SSH
    -SSH主机名:#34.3.3.1
    -SSH用户名:#常见的有:ubuntu、ec2用户、管理员
    -SSH密钥文件:<附加您的EC2.pem文件>
    -MYSQL主机名:#mydb.tbgvsblc6.eu-west-1.rds.amazonaws.com
    -MYSQL端口:3306
    -用户名:
    -密码:
    

    单击“测试连接”并完成

    谢谢你的指导,你的教程很棒,但我仍然有一些理解上的困难。目前,如果我在公钥/私钥身份验证中使用putty,那么从那时起我将使用sshuser@192.134.3.21. 然后我使用mysql-user-pword连接到mysql数据库。对于SSH主机名,我假设使用86.12343.11,但是如何指定要连接的服务器(192.134.3.21)?听起来像是双跳。首先,您有一个到86.x.x.x的SSH连接,然后再有一个到192.x.x.x的SSH连接。然后从那里连接到另一台机器上的MySQL服务器?恐怕WB不直接支持这种双跳。它创建一个SSH隧道,并期望从该远程端到达MySQL服务器。您可以尝试使用putty创建一个到第一个SSH端点的隧道,然后将WB配置为在该端点上,但我从未尝试过,所以我不知道它是否可以这样工作。不,mysql服务器位于192.x.x.xMysql服务器位于192.x.x.x的VM上
    - Standard TCP/IP over SSH
     - SSH Hostname : < your EC2 Public IP >  #34.3.3.1
     - SSH Username : < your username > #common ones are : ubuntu, ec2-user, admin
     - SSH KeyFile: < attach your EC2 .pem file>
    
     - MYSQL Hostname: <database endpoint name> #mydb.tbgvsblc6.eu-west-1.rds.amazonaws.com
    
     - MYSQL Port: 3306
     - Username : <database username>
     - Password: <database password>