postgresql - privilegios - quitar contraseña usuario postgres
Crear usuario con contraseña encriptada en PostgreSQL (3)
No conozco una forma de anular el cifrado md5 predeterminado de las contraseñas, pero si tiene un ROLE (también conocido como "USER") que ya tiene una contraseña en md5-encrypted, parece que puede suministrar eso. Verifique esto usando pg_dumpall -g (para ver los globales del clúster) Ej.
psql postgres
create role foo with encrypted password foobar;
/q
-- View the role from pg_dumpall -g
pg_dumpall -g | grep foo
CREATE ROLE foo;
ALTER ROLE foo WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB NOLOGIN NOREPLICATION PASSWORD ''md5c98cbfeb6a347a47eb8e96cfb4c4b890'';
Or get it from:
select * from pg_catalog.pg_shadow;
-- create the role again with the already-encrypted password
psql postgres
drop role foo;
CREATE ROLE foo;
ALTER ROLE foo WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB NOLOGIN NOREPLICATION PASSWORD ''md5c98cbfeb6a347a47eb8e96cfb4c4b890'';
/q
-- view the ROLE with the same password
pg_dumpall -g | grep foo
CREATE ROLE foo;
ALTER ROLE foo WITH NOSUPERUSER INHERIT NOCREATEROLE NOCREATEDB NOLOGIN NOREPLICATION PASSWORD ''md5c98cbfeb6a347a47eb8e96cfb4c4b890'';
Documentos para CREATE ROLE
¿Es posible crear un usuario en PostgreSQL sin proporcionar la contraseña de texto sin formato (idealmente, me gustaría poder crear un usuario que proporcione solo su contraseña cifrada con sha-256)?
Lo que me gustaría hacer es crear un usuario con algo así:
CREATE USER "martin" WITH PASSWORD ''$6$kH3l2bj8iT$KKrTAKDF4OoE7w.oy(...)BPwcTBN/V42hqE.'';
¿Hay alguna manera de hacer eso?
Gracias por tu ayuda.
Puede proporcionar la contraseña ya procesada con md5
, como se indica en el documento ( CREATE ROLE ):
CIFRADO NO ACEPTADO Estas palabras clave controlan si la contraseña se almacena encriptada en los catálogos del sistema. (Si no se especifica ninguno, el parámetro de configuración password_encryption determina el comportamiento predeterminado.) Si la cadena de contraseña presentada ya está en formato MD5-encrypted, entonces se almacena encriptada como está , independientemente de si está especificado ENCRYPTED o UNENCRYPTED (ya que el sistema no puede descifrar la cadena de contraseña cifrada especificada). Esto permite volver a cargar contraseñas encriptadas durante el volcado / restauración.
La información que falta aquí es que la cadena cifrada con MD5 debe ser la contraseña concatenada con el nombre de usuario, más md5
al comienzo.
Entonces, por ejemplo, para crear u0
con la contraseña foobar
, sabiendo que md5(''foobaru0'')
es ac4bbe016b808c3c0b816981f240dcae
:
CREATE USER u0 PASSWORD ''md5ac4bbe016b808c3c0b816981f240dcae'';
y luego podrá iniciar sesión escribiendo foobar
como contraseña.
No creo que haya una forma de usar SHA-256
lugar de md5
para las contraseñas de PostgreSQL.
Una forma mucho más fácil de esto es:
CREATE USER u0 PASSWORD ''foobar'';
select * from pg_catalog.pg_shadow;
Da passwd: md5ac4bbe016b808c3c0b816981f240dcae