Quiero crear un usuario que solo tenga acceso a una base de datos específica. Sin embargo, debería tener todos los permisos. Utilizo Postgresql 9.5 en Ubuntu 14.04. Primero que nada, creo un nuevo usuario:
$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
A continuación creo una nueva base de datos con el propietario joe:
$sudo -u postgres psql
$CREATE DATABASE myDB OWNER joe;
$GRANT ALL ON DATABASE myDB TO joe;
Después de eso, intento conectarme con el usuario joe para conectarme a mi base de datos myDB:
$psql myDB -U joe
psql: FATAL: Peer authentication failed for user "joe"
¿Qué tengo que hacer a continuación?
Respuesta1
Abrir
/etc/postgresql/9.5/main/pg_hba.conf
con acceso rootsudo nano /etc/postgresql/9.5/main/pg_hba.conf
Cambiar
peer
amd5
en estas líneas.Antes de cambiar
# "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
Después de tu cambio
# "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
Guarde el archivo presionando Ctrl- O. Salga de nano con Ctrl-X
Reinicie postgresql usando
sudo service postgresql restart