Creating user with encrypted password in PostgreSQL

后端 未结 3 822
慢半拍i
慢半拍i 2020-12-04 19:01

Is it possible to create a user in PostgreSQL without providing the plain text password (ideally, I would like to be able to create a user providing only its password crypte

3条回答
  •  既然无缘
    2020-12-04 19:38

    I'm not aware of a way to override the default md5 encryption of passwords, but if you have a ROLE (aka "USER") that has an already md5-encrypted password it appears that you can supply that. Verify this using pg_dumpall -g (to see the globals from the cluster) Eg.

    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';
    

    Docs for CREATE ROLE

提交回复
热议问题