Quero criar um usuário que tenha acesso apenas a um banco de dados especificado. No entanto, deve ter toda a permissão. Eu uso o Postgresql 9.5 no Ubuntu 14.04. Então, antes de tudo, crio um novo usuário:
$createuser --interactive joe
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) n
Shall the new role be allowed to create more new roles? (y/n) n
Em seguida, crio um novo banco de dados com o proprietário Joe:
$sudo -u postgres psql
$CREATE DATABASE myDB OWNER joe;
$GRANT ALL ON DATABASE myDB TO joe;
Depois disso, tento me conectar com o usuário joe para conectar no meu banco de dados myDB:
$psql myDB -U joe
psql: FATAL: Peer authentication failed for user "joe"
O que devo fazer a seguir?
Responder1
Abrir
/etc/postgresql/9.5/main/pg_hba.conf
com acesso rootsudo nano /etc/postgresql/9.5/main/pg_hba.conf
Mude
peer
paramd5
nestas linhas.Antes de mudar
# "local" is for Unix domain socket connections only local all all peer # IPv4 local connections: host all all 127.0.0.1/32 peer # IPv6 local connections: host all all ::1/128 peer
Depois da sua mudança
# "local" is for Unix domain socket connections only local all all md5 # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5
Salve o arquivo pressionando Ctrl- O. Saia do nano com Ctrl-X
Reinicie o postgresql usando
sudo service postgresql restart