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