Попытка установить Postgres в моей среде, но, похоже, не может получить разрешения на intidb
Я слежу за недавним RailsCast при настройке PostgreSQL, но я не могу запустить команду initdb /usr/local/var/postgres
. Каждый раз, когда я запускаю его, я получаю эту ошибку:
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
Ответы
Ответ 1
Это должно работать нормально:
# 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
используйте имя пользователя вместо конструкции. Итак, если ваше имя пользователя компьютера WDurant, код будет:
# sudo chown wdurant /usr/local/var/postgres
Ответ 2
Если вы работаете на Arch Linux, используйте так:
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
Ответ 3
Вам действительно нужно SU
пользователю postgres
то вы можете запустить команду
-
initdb -E UTF8
(Я предпочитаю установить это сейчас, потому что UTF8 довольно гибкий, и это создаст все кластеры как UTF8 [если вы явно не указали иначе])
тогда вам нужно создать своего пользователя (если он еще не был создан)
-
$ createuser -s -U postgres
-
$ Enter name of role to add: {{ my login name }}
(это выглядит как Construct
)
тогда вы можете выйти из пользователя postgres, и вы можете создать свою собственную базу данных
Ответ 4
Какой пользователь вы запускаете initdb как? Если вы не root, у вас, вероятно, нет разрешения на создание каталогов в /usr/local. Я предлагаю создать /usr/local/var/postgres как root и chown'ing его для построения:
# mkdir -m 0700 -p /usr/local/var/postgres
# chown construct /usr/local/var/postgres
Тогда ваш initdb (run as construct) должен иметь разрешение.
Также обратите внимание, что имена пользователей Unix обычно являются строчными (но также чувствительными к регистру); вы уверены, что ваш пользователь Construct фактически капитализирован? Если это так, вы действительно уверены, что хотите, чтобы он был заглавным - многие вещи сломаются.
(FYI: для таких вопросов Unix вы можете найти Unix.SE или Спросить Ubuntu. более быстрые ответы)