web-dev-qa-db-fra.com

Comment démarrer psql.exe

Je suis nouveau sur postgresql (pg). Je comprends que pour interagir avec pg, je dois utiliser psql.exe.

Dans mon système, je ne trouve pas psql.exe une fois mais deux fois, pourquoi? (C:\Program Files (x86)\pgAdmin 4\v2\runtime\psql.exe et C:\Program Files\PostgreSQL\10\bin\psql.exe). J'ai essayé les deux, avec des résultats identiques (négatifs).

Conformément à Q/A Dans PostgreSQL, pourquoi la fenêtre de ligne de commande disparaît-elle lorsque j'appuie sur Entrée après avoir entré mon mot de passe? , au lieu d’exécuter directement psql.exe, j’ai d’abord ouvert une fenêtre de commande générique (Windows), puis exécuté psql.exe à partir de cette fenêtre de commande générique; J'ai ensuite entré le mot de passe et entrez.

Dans la fenêtre de commande générique (Windows), j'ai maintenant le message suivant:

psql: impossible de se connecter au serveur: autorisation refusée (0x0000271D/10013) 
Le serveur fonctionne-t-il sur l'hôte "localhost" (:: 1) et accepte-t-il les connexions TCP/IP sur le port 5432? FATAL: échec de l'authentification du mot de passe pour l'utilisateur "Utilisateur"

Cela correspond au problème décrit (mais non résolu) dans le Q/A cité ci-dessus. Les autres discussions sur ce forum concernant les échecs de mot de passe concernent les mots de passe Linux/obsolètes/les nouveaux mots de passe après la modification du mot de passe.

Il est dit dans d'autres discussions ici à propos de cette question que dans Windows, il existe un fichier pgpass.conf. Je trouve un fichier d'aide libpq-pgpass.html qui indique également que, même sur mon système, il n'existe aucun fichier de ce type, pgpass.conf (ou autre chose avec "pgpass", à l'exception du fichier html susmentionné).

(W10 Prof 64 bit English)

Deuxième stratégie:

Dans le menu Démarrer, il y a une entrée "PostgreSQL"; sous cela - disponible par Entrée - il y a une sous-entrée "SQL Shell (psql)"; alors j'ai essayé ça.

De là seulement, j'obtiens la fenêtre de commande Windows, avec "psql 10.1" et avec (dans [], il s'agit évidemment des valeurs par défaut):

Server [localhost]: I enter localhost; 
Database [postgres]: I enter postgres; 
Port [5432]: I enter 5432; 
Username [postgres]: I enter postgres; 
Password for user postgres: I enter the password which is "a".

De là, je reçois un avertissement concernant la page de code de la console qui diffère de la page de code de Windows, mais je reçois ensuite l’invite psql

postgres=#

et qui fonctionne.

D'autre part, avec la première stratégie ci-dessus, j'obtiens seulement "Password:" .

Lors de l'installation, j'avais créé un superutilisateur "postgres" avec le mot de passe "a" et non un utilisateur "A"; Par contre, je suis l’utilisateur "A" qui est mon compte Windows admin (!) (aucun autre utilisateur que moi sur mon PC) et l’invite cmd que j’obtiens habituellement ("C:\Utilisateurs\A>"); (mais comme prévu,) aucun résultat différent si j'entre le chemin complet vers psql.exe à partir de l'invite "C:>".

Donc, mon problème se résume maintenant à ceci: une fois déclenché dans le menu Démarrer, psql.exe fonctionne correctement car il me pose toutes les questions auxquelles je peux ensuite répondre correctement (comme indiqué ci-dessus), tandis window (les deux chemins complets essayés et compris entre "" bien sûr), il demande simplement le "mot de passe" puis me dit que pour un "utilisateur A", ce mot de passe est erroné.

De plus, le chemin complet vers psql.exe (qui fonctionne) à partir du menu Démarrer est C:\ProgramData\Microsoft\Windows\Start Menu\Programs\PostgreSQL 10\psql.exe, et si j'essaie de l'exécuter avec la fenêtre cmd, j'obtiens "(chemin) n'est pas reconnu comme commande interne ou externe, programme utilisable ou fichier de commandes. ", car il s'agit de" SQL Shell (psql) .lnk ", dont les propriétés sont les suivantes:" Cible: "C:\Programmes\PostgreSQL\10\scripts\runpsql.bat" " .

C'est donc la solution, voir ma réponse ci-dessous.

4
pgny

Vous n'exécutez pas certains fichiers psql.exe, mais le fichier C:\Program Files\PostgreSQL\10\scripts\runpsql.bat, par exemple, par programme, par exemple. de AHK:

exécuter, "C:\Program Files\PostgreSQL\10\scripts\runpsql.bat"

Ensuite, vous obtenez une fenêtre de commande Windows générique qui vous pose les bonnes questions (voir ci-dessus) et, en cas de réponse correcte, vous donne l'invite de commande psql.

5
pgny

ouvrez la commande Invite en premier (Winkey+R), puis tapez C:\Program Files\PostgreSQL\10\bin\psql.exe, puis appuyez sur entrée et tapez le mot de passe. Ceci est différent de ce que vous avez fait en ne fermant pas psql.exe après avoir reçu une erreur.

Après avoir constaté l'erreur, lisez-la attentivement et cherchez la solution dans SO ou sur Google (ou même dans la documentation manuelle). Si vous échouez encore, posez une autre question. 

0
Vao Tsun