Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PostgreSQL multiple authentication methods

How can I set up multiple authentication methods for the same host/database/user rule? I want to be able to log in to my postgres user using both sudo -u postgres psql -U postgres (without having to enter a PostgreSQL password) and psql -U postgres --password. Something like the following in pg_hba.conf:

local   all             postgres                        md5 local   all             postgres                        peer 

I can only get one method or the other working at the same time.

Thanks.

(I am using PostgreSQL 9.1).

like image 295
Waz Avatar asked Jul 11 '12 23:07

Waz


People also ask

Which of the following methods of authentication are used by the PostgreSQL database?

PostgreSQL supports GSSAPI with Kerberos authentication according to RFC 1964. GSSAPI provides automatic authentication (single sign-on) for systems that support it. The authentication itself is secure, but the data sent over the database connection will be sent unencrypted unless SSL is used.

Is the strongest password authentication method in PostgreSQL?

SCRAM-SHA-256: The strongest authentication method, introduced in PostgreSQL 10. This method prevents password sniffing on untrusted connections.

What is MD5 authentication in PostgreSQL?

The password-based authentication methods are md5 and password. These methods operate similarly except for the way that the password is sent across the connection, namely MD5-hashed and clear-text respectively. If you are at all concerned about password "sniffing" attacks then md5 is preferred.

How do I authenticate a user in PostgreSQL?

The peer authentication method works by obtaining the client's operating system user name from the kernel and using it as the allowed database user name (with optional user name mapping). This method is only supported on local connections. The following configuration options are supported for peer: map.


1 Answers

Nope. Only one auth method is supported for any given configuration.

I'd love it if Pg could support fall-back authentication, where if an ident check fails it allows md5 auth instead. It doesn't support this at the moment, though, and I suspect (I haven't verified) that a protocol change would be required to support it.

What you can do is store the password in a $HOME/.pgpass file for the postgres system user. Give it mode 0600 so it's only readable by the postgres user and by root, both of whom can get direct access to the database files and configuration anyway. That way you get easy admin and md5 auth. On some systems you may have to set and create a home directory for the postgres user before you can do this. See getent passwd postgres to see if if the postgres user has a homedir and if so, where it is.

(UPDATE: used to read $HOME/.psqlrc - which is useful, but .pgpass is suitable for password storage)

like image 182
Craig Ringer Avatar answered Sep 30 '22 07:09

Craig Ringer