Как подключиться к pgAdmin3 в базе данных AWS PostgreSQL?
Я не могу подключиться к AWS postgres remote на моей локальной машине.
Я определенно не подключаюсь к удаленному серверу postgres на сервере AWS.
Я уже следую за другими темами, но я все еще путаюсь, почему никуда не подключаюсь?
,
На моем удаленном сервере я выполняю следующие 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]
Мне не удалось получить доступ к postgres, удаленному к СУБД AWS. Я следую этой инструкции: http://imperialwicket.com/aws-install-postgresql-90-on-amazon-linux
,
Скриншоты:
Я слежу за всеми темами ниже:
,
Я настраиваю pgAdmin3 для доступа, как показано ниже:
MY_IP_HERE
Я установил с AWS IPv4my_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
2 ответа
@Nielson Я пытаюсь подключиться на консоли Linux с туннелем SSH.
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
У меня та же проблема, и я нахожу решение (для 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 - это публичный ip экземпляра ec2, а yourkeyfile.pem - ваш ключ для доступа к экземпляру ec2.
Когда вы запустите эту команду, вы сможете получить доступ к своей базе данных на локальном хосте и порту 1234, используя команду pgAdmin или psql (обратите внимание, что эта команда должна выполняться в терминале, чтобы туннель оставался открытым).
Для более подробного объяснения вы можете пойти сюда.
https://medium.com/@michalisantoniou6/connect-to-an-aws-rds-using-an-ssh-tunnel-22f3bd597924