web-dev-qa-db-fra.com

Essayer d'obtenir la configuration de Postgres dans mon environnement mais ne semble pas obtenir les autorisations pour intidb

Je suis le récent RailsCast sur la configuration de PostgreSQL, mais je ne peux pas exécuter le initdb /usr/local/var/postgres commande. Chaque fois que je l'exécute, j'obtiens cette erreur:

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
28
Jimmy Odom

Cela devrait très bien fonctionner:

# 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

utilisez votre nom d'utilisateur à la place de la construction. Donc, si le nom d'utilisateur de votre ordinateur est WDurant, le code sera:

# Sudo chown wdurant /usr/local/var/postgres
55
Gaurav Swaroop

Si vous utilisez Arch Linux, utilisez comme ceci:

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
7
Bodhi94

Vous devez en fait SU à l'utilisateur postgres

  • Sudo su - postgres

alors vous pouvez exécuter la commande

  • initdb -E UTF8 (Je préfère le définir maintenant car UTF8 est assez flexible et cela créera tous les clusters en UTF8 [sauf indication contraire explicite])

alors vous devez créer votre utilisateur (s'il n'a pas déjà été créé)

  • $ createuser -s -U postgres
  • $ Enter name of role to add: {{ my login name }} (il semble que ce soit Construct)

alors vous pouvez quitter l'utilisateur postgres et vous pouvez créer votre propre base de données

  • $ createdb
5
swasheck

Sous quel utilisateur utilisez-vous initdb? Si vous n'êtes pas root, vous n'avez probablement pas l'autorisation de créer des répertoires dans/usr/local. Je suggère de créer/usr/local/var/postgres en tant que root, et de le montrer pour construire:

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

Ensuite, votre initdb (exécuté en tant que construction) devrait avoir l'autorisation.

Notez également que les noms d'utilisateur Unix sont normalement tout en minuscules (mais aussi sensibles à la casse); êtes-vous sûr que votre utilisateur Construct soit réellement capitalisé? Si c'est le cas, êtes-vous vraiment sûr que vous voulez qu'il soit capitalisé - beaucoup de choses vont se casser.

(Pour info: pour les questions Unix comme celle-ci, vous pouvez trouver nix.SE ou Ask Ubunt fournir des réponses plus rapides)

3
derobert