[英]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进行外部连接,因为默认组已经允许外部连接。
参考文献:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.