Propriétés De Connexion À La Base De Données Heroku

j'essaie d'effectuer une tâche relativement insignifiante: je veux me connecter à une base de données Heroku. J'ai créé la base de données et j'ai reçu des accréditations du site D'Heroku. Cependant, lorsque j'essaie de me connecter à cette base de données en utilisant outre le terminal 'heroku' client en ligne de commande, j'obtiens des erreurs fatales ou Je ne peux pas connecter des erreurs.

<!-Les deux outils que J'ai essayé de connecter à l'extérieur de L'application terminal Heroku sont: Navicat et IntelliJ.

l'erreur que je reçois dans Navicat en essayant de me connecter à la base de données est:

could not connect to server: Host is down Is the server running on host "ec2-107-21-112-215.compute-1.amazonaws.com" and accepting TCP/IP connections on port 5432?

Mes paramètres de connexion sont comme suit:

Nom De La Connexion Heroku Dev Test

nom de L'hôte / adresse IP ec2-107-21-112-215.compute-1.amazonaws.com

Port 5432

Navicat ne semble même pas faire une tentative de se connecter à cela hôte.

quand j'essaie de me connecter avec IntelliJ, en utilisant les informations d'identification complètes, j'obtiens l'erreur suivante:

java.sql.SQLException: FATAL: no pg_hba.conf entry for host "75.168.4.146", user "rphbqggxeokuxl", database "dc008iqk0rq4j5", SSL off

encore une fois, j'utilise les justificatifs d'identité que L'application Heroku me fournit lors de l'accès à ma base de données sur leur site web.

<!-Quelqu'un a-t-il déjà rencontré ce problème de connexion Heroku?

37
demandé sur meoww- 2013-06-29 09:46:45

7 réponses

Heroku fournit cette information pour se connecter à partir de sources externes:

https://devcenter.heroku.com/articles/heroku-postgresql#external-connections-ingress

le second message d'erreur indique que PostgreSQL n'est pas configuré pour accepter la connexion que vous essayez de faire. Étant donné les informations fournies par Heroku, une bonne supposition est que vous n'êtes pas connecté avec SSL. Essayez d'activer sur votre connexion.

Voici les instructions pour L'utilisation de SSL avec Navicat: http://mirror.navicat.com/manual/online_manual/en/navicat/rv_manual/ClientCert.html.

ceci peut être utile pour configurer Intellij pour utiliser SSL: https://devcenter.heroku.com/articles/connecting-to-relational-databases-on-heroku-with-java#connecting-to-a-database-remotely.

50
répondu jpmc26 2013-06-29 16:30:34

j'ai aussi eu le problème avec le FATAL: no pg_hba.conf entry for host message d'erreur.

j'ai résolu le problème de connexion à ma base de données Heroku Postgres en ajoutant ce qui suit à ma chaîne JDBC: &ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory.

Exemple

jdbc:postgresql://host:port/database?user=username&password=secret&ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

vous aurez besoin de L'option SSL seulement si SSL est activé pour votre base de données Postgres (qui est la valeur par défaut).

Indice

si vous voulez vérifier vos propriétés de connexion à la base de données, alors lancez la commande suivante avec le Heroku Toolbelt:heroku pg:info --app your-heroko-appname (assurez-vous que vous avez Postgres insalled pour exécuter cette commande dans votre terminal)

pg:info commande seront également vous dire que sslmode est réglé sur require.

pour tester la connexion à la base de données je recommande SQL Power Architect comme c'est l'outil que j'utilisais pour vérifier ma solution.

49
répondu Benny Neugebauer 2014-09-13 21:55:48

IntelliJ - > sources de données et pilotes

après avoir configuré l'hôte, La base de données et les détails de l'utilisateur sous le General onglet passer à l' Advanced onglet et vous assurer que vous avez ajouté le code suivant:

  • ssl = true
  • sslfactory = org.PostgreSQL.SSL.NonValidatingFactory

enter image description here

15
répondu user1607261 2016-01-10 12:43:33

voulait aider les autres qui pourraient se trouver dans cette situation. Si vous fournissez le nom D'Utilisateur et le mot de passe dans des champs séparés plutôt que sur la ligne de commande, vous devez utiliser un ? entre le nom de la base de données et ssl = true et jeter le premier &

jdbc:postgresql://host:port/database?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

C'est la ligne de commande qui m'a finalement permis de me connecter à une base de données PostgreSQL en utilisant SQL Power Architect

10
répondu Eric Harris 2015-03-17 18:42:48

pour ceux qui pourraient utiliser la botte de ressort et avoir la configuration fournie par le DATABASE_URL propriété de l'environnement (Pas propriété du système), le suffixe peut être ajouté à la propriété:

?ssl=true&sslfactory=org.postgresql.ssl.NonValidatingFactory

et passé avec une légère modification à la fève config:

@Bean
public BasicDataSource dataSource() throws URISyntaxException {

    URI dbUri = new URI(System.getenv("DATABASE_URL"));
    String username = dbUri.getUserInfo().split(":")[0];
    String password = dbUri.getUserInfo().split(":")[1];

    StringBuilder dbUrl = new StringBuilder(128);
    dbUrl.append("jdbc:postgresql://")
            .append(dbUri.getHost()).append(":")
            .append(dbUri.getPort())
            .append(dbUri.getPath());

    String query = dbUri.getQuery();
    if (null != query && !query.isEmpty()) {
        dbUrl.append("?").append(query);
    }

    BasicDataSource basicDataSource = new BasicDataSource();
    basicDataSource.setUrl(dbUrl.toString());
    basicDataSource.setUsername(username);
    basicDataSource.setPassword(password);

    return basicDataSource;
}
8
répondu Glenn 2015-12-02 04:36:15

vous pouvez définir une variable de configuration D'environnement 'PGSSLMODE 'à' require ' via L'interface web D'Heroku ou CLI.

Case: Postgres dB configuré comme un Add-on Heroku et attaché à l'application sur un Dyno Heroku.

Heroku est instructions malheureusement omettre toute mention sur la façon d'activer SSL, même si elle est nécessaire pour tout niveau dB à partir de Standard-0 par défaut.

suivre toutes les étapes pg-copy ou pg-upgrade (de préférence) l'approche dépend de votre version de Postgres) dans les instructions de Heroku; cependant, avant de déclasser l'ancienne base de données (le cas échéant) -- ajouter la variable D'environnement PGSSLMODE.

les instructions couvrent suffisamment la façon de promouvoir la nouvelle base de données (et, par conséquent, de définir la DATABASE_URL), donc pas de changements/modifications devrait être obligatoire.

4
répondu tabish89 2017-11-29 14:30:23

Ajouter ou modifier la ligne suivante dans votre postgresql.fichier conf :

listen_addresses = '*'

ajouter la ligne suivante comme première ligne de pg_hba.conf. Il permet l'accès à toutes les bases de données pour tous les utilisateurs avec un mot de passe crypté:

TYPE DATABASE USER CIDR-ADDRESS  METHOD

host  all  all 0.0.0.0/0 md5

Redémarrer postgresql service:

net stop postgresql-9.0 & net start postgresql-9.0 

(la version doit être basée sur votre installation) -- sur windows (exécuter cmd en tant qu'administrateur).

sudo service start postgresql -- On linux (or according to your linux distribution.) 
1
répondu Mayuresh Srivastava 2016-09-17 00:09:56