2017-05-08 1 views
1

Je ne peux pas me connecter avec AWS postgres à distance par ma machine locale.Comment se connecter à pgAdmin3 dans la base de données AWS PostgreSQL?

Je ne me connecte définitivement pas à PostGres Remote sur le serveur AWS.

Je suis déjà d'autres sujets, mais je ne comprends toujours pas pourquoi ne pas connecter n'importe où?

.

Dans mon serveur distant je suivre ces 3 étapes:

1) Je change le port de base de données distante à 5434.

2) Dans le fichier postgresql.conf, je mets "*" au drapeau listen_addresses.

Dans pg_hba.conf fichier j'ai mis host all all 0.0.0.0/0 md5 attributs

3) Je remets en marche le service de serveur distant

sortie d'erreur pgadmin3 postgres:

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

Je n'ai pas réussi à accéder postgres à distance à le SGBDR AWS. Je suis ces instructions: http://imperialwicket.com/aws-install-postgresql-90-on-amazon-linux

.

Captures d'écran:

Je suivre tous les sujets ci-dessous:

enter image description here

.

Je configurent pgAdmin3 pour accéder comme ci-dessous:

  • MY_IP_HERE J'ai mis avec AWS ipv4
  • my_user_here Je mets ma base de données utilisateur

.

enter image description here

.

enter image description here

.

Et puis j'essaie de se connecter avec ma base de données distante avec HTTP Tunnel

.

enter image description here

.

Et j'échoue

.

enter image description here

.

Parfois, cette erreur pop-up apparaît dans 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 

Répondre

0

J'ai le même problème et je trouve une solution (pour Linux).

Utilisation de la ligne de commande suivante:

sudo ssh -N -L 1234:yourrdsendpointname.us-east-1.rds.amazonaws.com:5432 [email protected] -i yourkeyfile.pem 

Dans cet exemple est un port local (disponible dans l'hôte local), yourrdsendpointname.us-east-1.rds.amazonaws.com est le point final de votre base de données RDS dans aws, EC2 utilisateur est l'utilisateur par défaut de l'instance EC2 que ce a la permission de se connecter à la base de données rds, 56.78.123.45 est l'adresse IP publique de l'instance EC2 et yourkeyfile.pem i s votre clé pour accéder à l'instance ec2. Lorsque vous exécutez cette commande, vous pouvez accéder à votre base de données dans l'hôte local et le port 1234 à l'aide de la commande pgAdmin ou psql (notez que cette commande doit être exécutée dans le terminal pour que le tunnel reste ouvert).

Pour plus d'explications, vous pouvez aller ici.

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

+0

J'affichent plus de détails sur l'erreur avec les instances RDS aussi. –

+0

@FrancisRodrigues permet d'abord d'acheminer la base de données RDS dans votre machine locale. Premier essai: ** sudo ssh -N -L 6969: ENDPOINTNAMERDS: 5432 USER @ [PUBLIC_IP_EC2] -i KEYFILE.pem ** (5432 est le port de la base de données RDS dans AWS, 6969 est un port aléatoire disponible dans votre machine) Laissez le processus de cette commande en cours (si vous ne voyez pas les sorties). Après cela, vous devez vous connecter dans la base de données, en utilisant le nom d'hôte: ** localhost ** et le port ** 6969 ** (La commande ssh devrait fonctionner et sans sorties) –

+0

Je l'ai eu mais j'ai reçu un ' time out' réponse dans PgAdmin3 et dans la console Linux j'ai sortie vide. –

0

@Nielson Je tente de se connecter sur la console Linux avec SSH Tunnel.

5433 port local est postgres de ma machine

$ 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)

Et ci-dessous du terminal est vide.

In PgAdmin3 n'a pas non plus de connexion.

Je ne sais pas comment faire une connexion externe avec RDS car le groupe par défaut permet déjà les connexions externes.

enter image description here

Références:

AWS RDS - Connecting to a DB Instance Running the PostgreSQL Database Engine

SSH tunneling. "bind Address already in use"