繁体   English   中英

如何在AWS PostgreSQL数据库中连接pgAdmin3?

[英]How to connect with pgAdmin3 in the AWS PostgreSQL database?

我无法通过本地计算机与AWS postgres远程连接。

我绝对不会在AWS服务器上连接到postgres远程。

我已经关注了另一个主题,但我仍然混淆为什么不连接任何地方?

在我的远程服务器中,我遵循以下3个步骤:

1)我将远程数据库的端口更改为5434

2)在postgresql.conf文件中,我将“*”设置为listen_addresses标志。

pg_hba.conf文件中,我设置host all all 0.0.0.0/0 md5属性的host all all 0.0.0.0/0 md5

3)我重启远程服务器的postgres服务

PgAdmin3错误输出:

05:17:44 PM: Error: SSH error: Error when starting up SSH session with error code -8 [Unable to exchange encryption keys]

我没有成功访问postgres remote到AWS RDBMS。 我按照这个说明操作: http//imperialwicket.com/aws-install-postgresql-90-on-amazon-linux

截图:

我按照以下所有主题:

在此输入图像描述

我将pgAdmin3配置为访问如下:

  • MY_IP_HERE我使用AWS ipv4设置
  • my_user_here我用我的数据库用户设置

在此输入图像描述

在此输入图像描述

然后我尝试使用HTTP隧道连接我的远程数据库

在此输入图像描述

我失败了

在此输入图像描述

有时这个弹出错误出现在pgAdmin3中:

ASSERT INFO:
/usr/include/wx-3.0/wx/strvararg.h(456): assert "(argtype & (wxFormatStringSpecifier<T>::value)) == argtype" failed in wxArgNormalizer(): format specifier doesn't match argument type

BACKTRACE:
[1] wxMBConvUTF32LE::~wxMBConvUTF32LE()
[2] char* std::string::_S_construct<char*>(char*, char*, std::allocator<char> const&, std::forward_iterator_tag)
[3] char* std::string::_S_construct<char*>(char*, char*, std::allocator<char> const&, std::forward_iterator_tag)
[4] char* std::string::_S_construct<char*>(char*, char*, std::allocator<char> const&, std::forward_iterator_tag)
[5] wxListEvent::~wxListEvent()
[6] wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const
[7] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)
[8] wxEvtHandler::SearchDynamicEventTable(wxEvent&)
[9] wxEvtHandler::TryHereOnly(wxEvent&)
[10] wxEvtHandler::DoTryChain(wxEvent&)
[11] wxEvtHandler::ProcessEvent(wxEvent&)
[12] wxWindowBase::TryAfter(wxEvent&)
[13] wxEvtHandler::SafelyProcessEvent(wxEvent&)
[14] wxToolBarBase::OnLeftClick(int, bool)
[15] g_signal_emit_valist
[16] g_signal_emit_by_name
[17] g_signal_emit_valist
[18] g_signal_emit
[19] g_closure_invoke
[20] g_signal_emit_valist
[21] g_signal_emit
[22] g_closure_invoke
[23] g_signal_emit_valist
[24] g_signal_emit
[25] gtk_propagate_event
[26] gtk_main_do_event
[27] g_main_context_dispatch
[28] g_main_loop_run
[29] gtk_main
[30] wxGUIEventLoop::DoRun()
[31] wxEventLoopBase::Run()
[32] wxAppConsoleBase::MainLoop()
[33] wxEntry(int&, wchar_t**)
[34] __libc_start_main

我有同样的问题,我找到了解决方案(对于Linux)。

使用以下命令行:

sudo ssh -N -L 1234:yourrdsendpointname.us-east-1.rds.amazonaws.com:5432 ec2-user@56.78.123.45 -i yourkeyfile.pem

在此示例中, 1234是本地端口(在本地主机中可用), yourrdsendpointname.us-east-1.rds.amazonaws.com是aws中RDS数据库的终点, ec2-user是ec2实例的默认用户有权连接到rds数据库, 56.78.123.45是ec2实例的公共ip, yourkeyfile.pem是访问ec2实例的密钥。

运行此命令时,可以使用pgAdmin或psql命令在本地主机和端口1234中访问数据库(请注意,此命令应在终端中运行以保持隧道打开)。

更多解释你可以去这里。

https://medium.com/@michalisantoniou6/connect-to-an-aws-rds-using-an-ssh-tunnel-22f3bd597924

@Nielson我尝试使用SSH隧道连接Linux控制台。

5433是我机器的postgres本地端口

$ sudo lsof -i :5433

COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME pgadmin3 1329 paneladm 15u IPv4 1534908 0t0 TCP debian:56894->ec2-[MY_IP].[ZONE].compute.amazonaws.com:5433 (SYN_SENT)

终端下面是空的。

在PgAdmin3也没有连接。

我不知道如何与RDS进行外部连接,因为默认组已经允许外部连接。

在此输入图像描述

参考文献:

AWS RDS - 连接到运行PostgreSQL数据库引擎的数据库实例

SSH隧道。 “绑定地址已在使用中”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM