ver usuarios usuario privilegios postgres mostrar entrar eliminar desde crear consola como comandos database postgresql chmod chown

database - privilegios - usuarios y roles en postgresql



Intento obtener la configuración de Postgres en mi entorno pero parece que no puede obtener permisos para intidb (4)

Estoy siguiendo el reciente RailsCast al configurar PostgreSQL, pero no puedo ejecutar el initdb /usr/local/var/postgres . Cada vez que lo ejecuto, me sale este error:

The files belonging to this database system will be owned by user "Construct". This user must also own the server process. The database cluster will be initialized with locale en_US.UTF-8. The default database encoding has accordingly been set to UTF8. The default text search configuration will be set to "english". creating directory /usr/local/var/postgres ... initdb: could not create directory "/usr/local/var": Permission denied


¿Qué usuario está ejecutando initdb como? Si no es root, es probable que no tenga permiso para crear directorios en / usr / local. Sugiero crear / usr / local / var / postgres como root, y pedirle que lo construya:

# mkdir -m 0700 -p /usr/local/var/postgres # chown construct /usr/local/var/postgres

Entonces su initdb (ejecutar como construcción) debe tener permiso.

Además, tenga en cuenta que los nombres de usuario de Unix son normalmente en minúsculas (pero también distinguen entre mayúsculas y minúsculas); ¿Está seguro de que su usuario de Construct está en mayúsculas? Si es así, ¿está realmente seguro de que quiere que se capitalice? Muchas cosas se romperán.

(Para su información: Para preguntas de Unix como esta, puede encontrar que Unix.SE o Ask Ubuntu proporcionan respuestas más rápidas)


Esto debería funcionar bien:

# sudo mkdir /usr/local/var/postgres # sudo chmod 775 /usr/local/var/postgres # sudo chown construct /usr/local/var/postgres # initdb /usr/local/var/postgres

Usa tu nombre de usuario en lugar de construir. Entonces, si su nombre de usuario de computadora es WDurant, el código será:

# sudo chown wdurant /usr/local/var/postgres


Si ejecuta en arch linux , use así:

sudo mkdir /var/lib/postgres sudo chmod 775 /var/lib/postgres sudo chown postgres /var/lib/postgres sudo -i -u postgres [postgres]$ initdb --locale $LANG -E UTF8 -D ''/var/lib/postgres/data'' [postgres]$ exit sudo systemctl start postgresql.service sudo -i -u postgres


Usted realmente necesita SU para el usuario postgres

  • sudo su - postgres

entonces puedes ejecutar el comando

  • initdb -E UTF8 (prefiero configurar esto ahora porque UTF8 es bastante flexible y esto creará todos los clústeres como UTF8 [a menos que especifique lo contrario explícitamente])

entonces necesitas crear tu usuario (si aún no ha sido creado)

  • $ createuser -s -U postgres
  • $ Enter name of role to add: {{ my login name }} (esto parece ser Construct )

luego puede salir del usuario de Postgres y puede crear su propia base de datos

  • $ createdb