How to login and authenticate to Postgresql after a fresh install?

authentication, database, passwords, postgresql, ubuntu

Solution

There are two methods you can use. Both require creating a user and a database.

By default psql connects to the database with the same name as the user. So there is a convention to make that the "user's database". And there is no reason to break that convention if your user only needs one database. We'll be using `mydatabase` as the example database name.

Using createuser and createdb, we can be explicit about the database name,

$ sudo -u postgres createuser -s $USER
$ createdb mydatabase
$ psql -d mydatabase

You should probably be omitting that entirely and letting all the commands default to the user's name instead.

$ sudo -u postgres createuser -s $USER
$ createdb
$ psql

Using the SQL administration commands, and connecting with a password over TCP

$ sudo -u postgres psql postgres

And, then in the psql shell

CREATE ROLE myuser LOGIN PASSWORD 'mypass';
CREATE DATABASE mydatabase WITH OWNER = myuser;

Then you can login,

$ psql -h localhost -d mydatabase -U myuser -p <port>

If you don't know the port, you can always get it by running the following, as the `postgres` user,

SHOW port;

Or,

$ grep "port =" /etc/postgresql/*/main/postgresql.conf

Sidenote: the `postgres` user

I suggest NOT modifying the `postgres` user.

- It's normally locked from the OS. No one is supposed to "log in" to the operating system as `postgres`. You're supposed to have root to get to authenticate as `postgres`.

- It's normally not password protected and delegates to the host operating system. This is a good thing. This normally means in order to log in as `postgres` which is the PostgreSQL equivalent of SQL Server's `SA`, you have to have write-access to the underlying data files. And, that means that you could normally wreck havoc anyway.

- By keeping this disabled, you remove the risk of a brute force attack through a named super-user. Concealing and obscuring the name of the superuser has advantages.

Problem

Did a new install of postgres 8.4 on mint ubuntu. How do I create a user for postgres and login using psql? When I type psql, it just tells me ``` psql: FATAL: Ident authentication failed for user "my-ubuntu-username" ```

Original source