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 serConstruct
)
luego puede salir del usuario de Postgres y puede crear su propia base de datos
-
$ createdb