Вы можете запустить PostgreSQL без привилегий root, создав новый экземпляр (который PostgreSQL вызывает «кластер») и запускает его.
Вы не можете использовать скрипты инициализации Ubuntu, инструменты обертки, такие как pg_ctlcluster
и т. Д., Если вы это сделаете. Вы должны использовать только собственные инструменты PostgreSQL.
Чтобы создать новый экземпляр PostgreSQL с суперпользователем равного имени пользователя, каталог данных в вашем домашнем каталоге, и md5 аутентификация включены по умолчанию, использование:
initdb -D $HOME/my_postgres -A md5 -U $USER
Регулировка по желанию; см. initdb --help
.
Затем вы должны отредактировать postgresql.conf
, чтобы изменить port
на нестандартный, поскольку ваша система, вероятно, запускает собственные postgres на порт по умолчанию 5432. (Если вы хотите ограничить доступ строго к вам, вы можете вместо того, чтобы установить listen_addresses = ''
и unix_socket_directories = /home/myuser/postgres_socket
или что-то Но это проще просто использовать другой порт)
чтобы запустить его:..
pg_ctl -D $HOME/my_postgres -w start
чтобы подключиться к нему, укажите порт, который вы выбрали:
psql -p 5434 ...
(Если вы изменили unix_socket_directories
вы также хотите, чтобы указать путь, который вы дали, как -h /home/myuser/postgres_socket
.)
Чтобы psql
и т.д. подключиться к Postgres по умолчанию, редактировать ~/.bashrc
добавить что-то вроде
export PGPORT=5434
, но обратите внимание, что это также повлияет на порт по умолчанию для соединений с другими хостами.
Чтобы остановить его:
pg_ctl -D $HOME/my_postgres -w stop
но вы также можете просто закрыть без остановки, он не заботится и будет восстанавливаться безопасно при запуске следующего.
Чтобы автозапуск, когда вы входите в систему, когда он настроен в вашем домашнем каталоге, вам придется использовать функции запуска на рабочем столе. Они меняются в зависимости от окружающей среды и версии, поэтому я не могу дать подробностей здесь; он отличается от GNOME 3, Unity (ubuntu), KDE, XFCE и т. д.
Обратите внимание, что этот подход по-прежнему использует системы пакеты для PostgreSQL. Это важно, потому что если вы удалите (скажем) PostgreSQL 9.4 и установите 9.6, ваша копия в домашнем каталоге перестанет работать.Если вы хотите, чтобы он полностью не зависел от системных пакетов, как вы, вероятно, делаете, если не контролируете систему, вы должны скомпилировать PostgreSQL из источника или использовать двоичный установщик для установки внутри своего домашнего каталога.
Если вы хотите запустить систему, вам понадобится root. Но вы можете запустить Postgresql локально под своей учетной записью пользователя. И 'createdb' не нужен root (либо доступ к Postgres как пользователю admin Postgres, который может выполнять любой пользователь ОС или даже удаленный пользователь) – Thilo
@Thilo Можете ли вы объяснить, как запустить Postgresql локально? – JHu