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