我无法通过本地计算机与AWS postgres远程连接。
我绝对不会在AWS服务器上连接到postgres远程。
我已经关注了另一个主题,但我仍然混淆为什么不连接任何地方?
在我的远程服务器中,我遵循以下3个步骤:
1)我将远程数据库的端口更改为5434
。
2)在postgresql.conf
文件中,我将“*”设置为listen_addresses
标志。
在pg_hba.conf
文件中,我设置了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]
我没有成功访问AWS RDBMS的远程postgres。我按照以下说明操作: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
答案 0 :(得分:0)
我有同样的问题,我找到了解决方案(对于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 是结束点你的RDS数据库在aws中, 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
答案 1 :(得分:0)
@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 - Connecting to a DB Instance Running the PostgreSQL Database Engine