Mon objectif est de pouvoir lancer une commande sans être obligé de saisir mon mot de passe. Est-il possible d’y parvenir à partir de la ligne de commande Windows? Sous Linux, j’ai l’impression que je pourrais envoyer le mot de passe en mode standard ou quelque chose du genre, mais je ne suis pas sûr de pouvoir le faire pour Windows.
Merci!
Il y a deux manières:
set PGPASSWORD=yoursecretpassword
%APPDATA%\postgresql\pgpass.conf
comme décrit dans documentationDans le fichier de mot de passe (mon emplacement est C:\Utilisateurs\Grzesiek\AppData\Roaming\postgresql\pgpass.conf), à utiliser au format doc. Par exemple, pour connecter une base de données postgres en tant que rôle postgres sur un serveur 5432 local, ajoutez:
localhost:5432:postgres:postgres:12345
J'ai vérifié cela et cela fonctionne bien (pour moi), mais n'utilisez pas 127.0.0.1).
Une autre option pratique (en particulier si votre serveur PG s'exécute sur votre propre ordinateur client et si cela ne pose aucun problème de sécurité pour vous) est d'autoriser la connexion sans mot de passe sur le serveur (mode d'authentification "confiance").
Par exemple, cette ligne dans pg_hba.conf
(dans votre répertoire DATA, un emplacement typique: C:\Program Files\PostgreSQL\9.0\data\
) autorise l'accès sans mot de passe à partir de votre ordinateur local.
Host all all 127.0.0.1/32 trust
Ensuite, connectez-vous avec
psql.exe -h 127.0.0.1 -U postgres -w [YOUR_DB_NAME]
Je sais que c’est une vieille question, mais il est difficile de trouver une solution pour Windows. collez-le dans un fichier .bat et cela fonctionnera (du moins pour moi, cela a été le cas). remplacez director par le répertoire postres, définissez la variable d'environnement PHPASSWORD
commande d'exécution en copie dans un fichier csv, puis effacez la variable d'environnement, puis revenez au répertoire racine.
cd C:\Program Files\PostgreSQL\9.5\bin\
set PGPASSWORD=yourpassword
psql -d databasename -U yourusername -w -c "\COPY (select * from yourtable) TO 'c:/Users/yourdirectory/yourcsvfilename.csv' DELIMITER '|' CSV HEADER;"
set PGPASSWORD=
cd c:\
J'ai trouvé une autre solution utile qui a fonctionné pour moi sur ce lien . Il définit fondamentalement la PGPASSWORD
au début de votre commande comme ceci:
PGPASSWORD=PASSWORD psql YOUR_CODE
Pas:
First ENvironment Var PGPASSWORD
C:\Windows\system32> set PGPASSWORD = clave
avant
psql -d basededatos -U usuario
Prêt,
Je me rends bien compte que cette question est un peu ancienne à l’heure actuelle, mais j’estime qu’il existe un meilleur moyen d’ouverture de session PostgreSQL sûre et sans mot de passe sous Windows - SSPI .
Créez un compte d'utilisateur local ou de domaine et une connexion PostgreSQL avec le même nom.
Dans pg_ident.conf
, créez un mappage:
# MAPNAME SYSTEM-USERNAME PG-USERNAME
SSPI username@AUTHORITY loginname
Remplacez nom_utilisateur par le nom d'utilisateur Windows (il s'agit de l'attribut sAMAccountName
pour les comptes de domaine) et remplacez AUTORITÉ par le nom d'ordinateur ou le nom de domaine abrégé. Si vous ne savez pas quoi utiliser pour AUTORITÉ, consultez le fichier journal PostgreSQL. Pour un compte local, il s'agira du nom de l'ordinateur. pour un compte de domaine, c'est probablement le nom de domaine court. Enfin, remplacez loginname par le nom de connexion PostgreSQL (pour éviter toute confusion, je vous recommande d'utiliser le même nom pour username et loginname).
Dans pg_hba.conf
, autorisez la connexion; par exemple.:
# TYPE DATABASE USER ADDRESS METHOD
Host all loginname 127.0.0.1/32 sspi map=SSPI
Host all loginname ::1/128 sspi map=SSPI
Si un compte de domaine, définissez un SPN pour celui-ci; par exemple.:
setspn -S POSTGRES/serverfqdn username
Vous pouvez maintenant vous connecter à Windows en utilisant le nom d'utilisateur spécifié et exécuter psql.exe
, etc. sans avoir besoin d'un mot de passe.