První přihlášení do PostgreSQL v Ubuntu

Pokud se po instalaci PostgreSQL pokusíte přihlásit pomocí psql, dostanete pravděpodobně chybu Peer authentication failed for user „postgres“

psql -U postgres
psql: FATAL:  Peer authentication failed for user "postgres"

Oprava: Zkoušel jsem instalaci PostgreSQL verze 10 na Linux Mint a bylo možné se přihlási uživatelem postgres tímto způsobem:
sudo su – postgres (přepnutí na uživatel postgres)
psql -U postgres

V Ubuntu je ve výchozím nastavení vypnuto přihlašování pro uživatele postgres. Do psql se můžeme připojit pomocí příkazu sudo

sudo -u postgres psql postgres

Vytvoříme nového uživatele (roli) s heslem password a schopností vytvářet databáze.

create user myuser password 'password' createdb;

A pomocí příkazu \q vyskočíme z psql. Přihlášení zkusíme znovu, nyní pro uživatele myuser.

psql -U myuser 
psql: FATAL:  Peer authentication failed for user "myuser"

Peer authentication funguje dle dokumentace následovně. Z operačního systému se získá uživatelské jméno a to se považuje za povoleného databázové uživatele. V operačním systému musí existovat uživatel stejného jména jako v databázi a musíme být pod daným uživatelem přihlášeni. V tomto případě ale nemáme v systému uživatele myuser. Takže ho vytvoříme.

sudo adduser myuser
Adding user `myuser' ...
Adding new group `myuser' (1001) ...
Adding new user `myuser' (1001) with group `myuser' ...
Creating home directory `/home/myuser' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully
Changing the user information for myuser
Enter the new value, or press ENTER for the default
	Full Name []: 
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] y

Přihlásím se jako uživate myuser

su - myuser
Password: 

Nyní již přihlášení funguje (připojuji se k databázi postgres)

psql -U myuser -d postgres

Nevýhodou je, že kdokoliv se přihlásí jako myuser, bude mít rovnou přístup do databáze. Mnohem bezpečnější je mít účet jen pro přihlášení k databázi, ale bez možnosti přihlášení pod tímto účtem. Daný účet lze zamknout

sudo passwd -l myuser

Nyní se k danému účtu nelze přihlásit, ale dá se do něj přeponout pomocí

sudo su - myuser

Pokud se do něj přepnete, funguje přihlášení do databáze

psql -U myuser -d postgres

Dalším řešením je přidání hesla uživateli postgres a změna konfiguračního souboru pg_hba.conf (/etc/postgresql/9.5/main/).

Změna hesla

sudo -u postgres psql postgres
psql (9.5.12)
Type "help" for help.

postgres=# alter user postgres with encrypted password 'password';
ALTER ROLE
postgres=# \q

Změna konfiguračního souboru (peer změnit na md5)

local      all     postgres     md5

Restart postresql

sudo service postgresql

Nyní již přihlášení funguje

psql -U postgres -d postgres
Password for user postgres: 
psql (9.5.12)
Type "help" for help.

postgres=# 

Napsat komentář