Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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" 
like image 522
user61734 Avatar asked Jan 31 '10 17:01

user61734


People also ask

How do I login to my postgres user?

There are two ways to login PostgreSQL: By running the "psql" command as a UNIX user which is also configured as PostgreSQL user using so-called IDENT/PEER authentication, e.g., " sudo -u postgres psql ". Via TCP/IP connection using PostgreSQL's own managed username/password (using so-called MD5 authentication).

What is the default username and password for PostgreSQL?

Login and Connect as Default User For most systems, the default Postgres user is postgres and a password is not required for authentication. Thus, to add a password, we must first login and connect as the postgres user.


2 Answers

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.

  1. 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 
  2. 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.

  1. 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.
  2. 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.
  3. 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.
like image 71
NO WAR WITH RUSSIA Avatar answered Sep 21 '22 06:09

NO WAR WITH RUSSIA


by default you would need to use the postgres user:

sudo -u postgres psql postgres 
like image 40
user262976 Avatar answered Sep 21 '22 06:09

user262976