Я хочу создать кластер базы данных в PostgSQL на CentOS.

Когда я набираю команду «initdb», результат выглядит следующим образом:

[root@cll agensgraph]# initdb

initdb: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will own the server process.
3
JdeBP 25 Фев 2018 в 15:40

2 ответа

Лучший ответ
[root@cll ~]# sudo chown jessica:jessica /usr/local/agdata/
[root@cll ~]# cd /usr/local/
[root@cll local]# ll

total 8
drwxr-xr-x.  2 jessica jessica    6 Feb 26 18:06 agdata
drwxr-xr-x.  6 root    root      56 Feb 26 03:31 agensgraph
drwxr-xr-x.  2 root    root    4096 Feb 24 21:01 bin
drwxr-xr-x.  2 root    root       6 Nov  5  2016 etc
drwxr-xr-x.  2 root    root       6 Nov  5  2016 games
drwxr-xr-x.  4 root    root     160 Feb 24 21:01 include
drwxr-xr-x.  6 root    root    4096 Feb 24 21:01 lib
drwxr-xr-x.  2 root    root       6 Nov  5  2016 lib64
drwxr-xr-x.  2 root    root       6 Nov  5  2016 libexec
drwxr-xr-x.  2 root    root       6 Nov  5  2016 sbin
drwxr-xr-x. 13 root    root     169 Feb 24 21:01 share
drwxr-xr-x.  2 root    root       6 Nov  5  2016 src

[root@cll local]# cd agdata/
[root@cll agdata]# initdb
initdb: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will
own the server process.

[root@cll agdata]# su -l jessica
Last login: Mon Feb 26 23:31:29 CST 2018 from 192.168.109.1 on pts/2
[jessica@cll ~]$ cd /usr/local/agensgraph/
[jessica@cll agensgraph]$ initdb
The files belonging to this database system will be owned by user "jessica".
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".
Data page checksums are disabled.
fixing permissions on existing directory /usr/local/agdata ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    ag_ctl -D /usr/local/agdata -l logfile start

[jessica@cll agensgraph]$ 

Объяснение

введите описание ссылки здесь

0
Jessica 26 Фев 2018 в 12:52
1
(Возможная) причина, по которой за это проголосовали, может заключаться в том, что база данных PostgreSQL обычно запускается как пользователь postgres или postgresql (или аналогичный), а не как реальный пользователь-человек. Запуск базы данных от имени системного пользователя, а не от вашего имени гарантирует, что только системный пользователь может получить доступ к хранилищу файлов базы данных (это функция безопасности). крайне необычно запускать какой-либо движок базы данных от лица пользователя. Скрипт postgresql-setup позаботится о настройке за вас и знает, какой правильный пользователь PostgreSQL находится в вашей системе.
 – 
Kusalananda
28 Фев 2018 в 21:56

База данных PostgreSQL требует, чтобы инициализация выполнялась от имени пользователя, который фактически будет запускать процесс базы данных. Этот пользователь — не вы, а системный аккаунт пользователя, такой как postgres или postgresql или аналогичный.

В CentOS, следуя инструкциям, приведенным в PostgreSQL Wiki, вы, как пользователь root, сделать либо

service postgresql-9.6 initdb

Или

/usr/pgsql-9.6/bin/postgresql96-setup initdb

(при условии, что вы настраиваете PostgreSQL 9.6).

Другой сайт предлагает

sudo postgresql-setup initdb

Если к пакету PostgreSQL на вашем компьютере прилагается документация (а она обязательно должна быть), то эта документация объясняет, как именно должна быть инициализирована версия базы данных.

3
Kusalananda 28 Фев 2018 в 21:58
Что это за исполняемый файл postgresql-setup? У меня версия 9.2, и у меня ее вроде нет
 – 
James Wierzba
13 Мар 2019 в 01:27
Какой Юникс?
 – 
Kusalananda
13 Мар 2019 в 01:31
«Amazon Linux версии 2017.03» — специальный форк Amazon Linux, используемый в различных сервисах AWS. У них есть собственный репозиторий rpm со своими собственными пакетами, кажется, что Amazon настраивает все, включая само содержимое пакетов.
 – 
James Wierzba
13 Мар 2019 в 01:50