windows - reconoce - iniciar sesión en postgresql
Línea de comando de Windows PSQL: ¿hay una manera de permitir el inicio de sesión sin contraseña? (6)
Mi objetivo es poder ejecutar un comando sin tener que pedir mi contraseña. ¿Hay alguna manera de lograr esto desde la línea de comandos de Windows? En Linux, siento que puedo enviar la contraseña a la versión estándar o algo así, pero no estoy seguro de poder hacerlo para Windows.
¡Gracias!
Encontré otra solución útil que me funcionó en este enlace . Básicamente, establece el PGPASSWORD
al comienzo de su comando de esta manera:
PGPASSWORD=PASSWORD psql YOUR_CODE
Hay dos maneras:
- Establezca la variable de entorno PGPASSWORD, por ejemplo,
set PGPASSWORD=yoursecretpassword
- Use el archivo de contraseña
%APPDATA%/postgresql/pgpass.conf
como se describe en la documentation
Dentro del archivo de contraseña (mi ubicación es C: / Users / Grzesiek / AppData / Roaming / postgresql / pgpass.conf) uso especificado en formato doc. Por ejemplo, para conectar la base de datos postgres como rol postgres en el servidor 5432 local agregue:
localhost:5432:postgres:postgres:12345
Lo comprobé y funciona bien (para mí), pero no uso 127.0.0.1).
Me doy cuenta de que esta pregunta es un poco vieja ahora, pero creo que hay un medio mejor para el inicio de sesión seguro y sin contraseña de PostgreSQL en Windows - SSPI .
Cree una cuenta de usuario local o de dominio e inicie sesión en PostgreSQL con el mismo nombre.
En
pg_ident.conf
, crea una asignación:# MAPNAME SYSTEM-USERNAME PG-USERNAME SSPI username@AUTHORITY loginname
Reemplace el nombre de usuario con el nombre de usuario de Windows (este es el atributo
sAMAccountName
para las cuentas de dominio), y reemplace AUTHORITY con el nombre de la computadora o el nombre de dominio corto. Si no está seguro de qué usar para AUTHORITY , verifique el archivo de registro de PostgreSQL. Para una cuenta local, este será el nombre de la computadora; para una cuenta de dominio, probablemente sea el nombre de dominio corto. Por último, reemplace loginname con el nombre de inicio de sesión de PostgreSQL (para reducir la confusión, recomendaría usar el mismo nombre tanto para el nombre de usuario como para loginname ).En
pg_hba.conf
, permitir el inicio de sesión; p.ej:# 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 es una cuenta de dominio, establezca un SPN para ello; p.ej:
setspn -S POSTGRES/serverfqdn username
Ahora puede iniciar sesión en Windows con el nombre de usuario especificado y ejecutar psql.exe
, etc. sin necesidad de una contraseña.
Otra opción útil (especialmente si su servidor PG se ejecuta en su propia máquina cliente, y si esto no plantea ningún problema de seguridad para usted) es permitir el inicio de sesión sin contraseña en el servidor (modo de autenticación "confiable").
Por ejemplo, esta línea en pg_hba.conf
(en su dir. DATOS, una ubicación típica: C:/Program Files/PostgreSQL/9.0/data/
) otorga acceso sin contraseña desde su máquina local.
host all all 127.0.0.1/32 trust
Entonces, conecta con
psql.exe -h 127.0.0.1 -U postgres -w [YOUR_DB_NAME]
Pasos:
Primer Entorno Var PGPASSWORD
C: / Windows / system32> establecer PGPASSWORD = clave
antes de
psql -d basededatos -U usuario
Listo,
Sé que es una pregunta antigua, pero para cualquiera que se vea como yo, es difícil encontrar una solución para Windows. pegue esto en un archivo .bat y funcionará (al menos para mí lo hizo). cambie el director a postres, establezca la variable de entorno PHPASSWORD
ejecute el comando de copia en un archivo csv y luego borre la variable de entorno, luego vuelva al directorio raíz.
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:/