Как запустить сервер PostgreSQL в Mac OS X? - PullRequest
899 голосов
/ 02 ноября 2011

ФИНАЛЬНОЕ ОБНОВЛЕНИЕ:

Я забыл выполнить команду initdb.

</ FINAL UPDATE>

, выполнив эту команду

ps auxwww | grep postgres

Я вижу, что postgres не работает

> ps auxwww | grep postgres
remcat          1789   0.0  0.0  2434892    480 s000  R+   11:28PM   0:00.00 grep postgres

. Возникает вопрос: как запустить сервер postgresql?

update:

>pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
sh: /usr/local/var/postgres/server.log: No such file or directory

update2:

Тач не был успешным, поэтому я сделал это вместо:

> mkdir /usr/local/var/postgres
> vi /usr/local/var/postgres/server.log
> ls /usr/local/var/postgres/          
server.log

Но когда я пытаюсь запустить сервер rails, я все равно вижу это:

Is the server running on host "localhost" and accepting
TCP/IP connections on port 5432?

обновление 3:

> pg_ctl -D /usr/local/var/postgres status
pg_ctl: no server running

обновление 4:

Я обнаружил, что там не было pg_hba.conf (только pg_hba.conf.sample), поэтому я изменил образец и переименовал его (для удаления)пример).Вот содержимое:

 # IPv4 local connections:
 host    all             all             127.0.0.1/32           trust
 # IPv6 local connections:
 host    all             all             ::1/128                trust

но я не понимаю этого:

> pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start     
server starting
> pg_ctl -D /usr/local/var/postgres status                                     
pg_ctl: no server running

также:

sudo find / -name postgresql.conf
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory

обновление 5:

sudo pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Password:
pg_ctl: cannot be run as root
Please log in (using, e.g., "su") as the (unprivileged) user that will own the server process.

обновление 6:

это кажется странным:

> egrep 'listen|port' /usr/local/var/postgres/postgresql.conf
egrep: /usr/local/var/postgres/postgresql.conf: No such file or directory

хотя я сделал это:

>sudo find / -name "*postgresql.conf*"
find: /dev/fd/3: Not a directory
find: /dev/fd/4: Not a directory
/usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample
/usr/share/postgresql/postgresql.conf.sample

, поэтому я сделал это:

egrep 'listen|port' /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample 
#listen_addresses = 'localhost'     # what IP address(es) to listen on;
#port = 5432                # (change requires restart)
                # supported by the operating system:
                #   %r = remote host and port

, поэтому я попробовал это:

> cp /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf        
> cp /usr/share/postgresql/postgresql.conf.sample /usr/share/postgresql/postgresql.conf 

все еще получая то же самое "Сервер работает?"сообщение.

Ответы [ 26 ]

7 голосов
/ 07 мая 2015

Для быстрой одноразовой тестовой базы данных вы можете запустить сервер на переднем плане.

Инициализация новой базы данных postgres в новом каталоге

mkdir db
initdb db -E utf8
createdb public

Запустить сервер на переднем плане (Ctrl-C, чтобы остановить сервер)

postgres -d db

В другом сеансе оболочки подключиться к серверу

psql -d public
7 голосов
/ 09 марта 2016

У меня та же проблема, и я выполняю все обновления из первого поста.Но после проверки файла журнала:

/usr/local/var/postgres/server.log

Я вижу истинную причину:

FATAL:  data directory "/usr/local/var/postgres" has group or world access
DETAIL:  Permissions should be u=rwx (0700).

После изменения разрешения на этот каталог

chmod 0700 /usr/local/var/postgres

запущен сервер postgres.

Файл журнала проверки каждый раз.

4 голосов
/ 18 мая 2013

PostgreSQL интегрирован в Server.app , доступный через App Store в Mountain Lion.Это означает, что он уже настроен, и вам нужно только запустить его, а затем создать пользователей и базы данных.

Совет : не начинайте с определения $ PGDATA и т. Д., Используйте расположение файлов как есть.

У вас будет этот файл: / Library / Server/PostgreSQL/Config/org.postgresql.postgres.plist

Для запуска:

sudo serveradmin start postgres

Процесс запущен с аргументами:

/Applications/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D / Библиотека / Сервер / PostgreSQL / Данные -c listen_addresses = 127.0.0.1, :: 1 -c log_connections = on -c log_directory = / Библиотека / Журналы/ PostgreSQL -c log_filename = PostgreSQL.log -c log_line_prefix =% t -c log_lock_waits = on -c log_statement = ddl -c logging_collector = on -c unix_socket_directory = / private / var / pgsql_socket -c unix_socket_g_set_set_c_7_7

Вы можете sudo:

sudo -u _postgres psql template1

Или подключиться:

psql -h localhost -U _postgres postgres

Вы можете найти каталог данных,версия, текущее состояние и т. д. с

sudo serveradmin fullstatus postgres  
4 голосов
/ 21 октября 2013

В целях разработки одним из самых простых способов является установка Postgres.app с официального сайта .Его можно запустить / остановить из папки «Программы» или с помощью следующих команд в терминале:

# start
open -a Postgres

# stop
killall Postgres
killall postgres
4 голосов
/ 28 февраля 2015

Вариация ответа: https://stackoverflow.com/a/13103603/2394728

initdb `brew --prefix`/var/postgres/data -E utf8`
3 голосов
/ 22 января 2018
   # remove old database files (If there was any)
   $rm -rf /usr/local/var/postgres    # install the binary

    $ brew install postgresql

    # init it
    $ initdb /usr/local/var/postgres

    # start the postgres server
    $ postgres -D /usr/local/var/postgres

    # create your database
    $ createdb mydb


    # Access db.
    $ psql mydb
    psql (9.0.1)
    Type "help" for help.
1 голос
/ 15 июня 2019

Если вы установили с использованием brew, приведенной ниже команды должно быть достаточно.

brew services restart postgresql

И это иногда может не сработать, в этом случае ниже две команды обязательно должны работать

rm /usr/local/var/postgres/postmaster.pid

pg_ctl -D /usr/local/var/postgres start
1 голос
/ 04 февраля 2019
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres

https://hub.docker.com/_/postgres

1 голос
/ 17 августа 2018

Для macports просто используйте команду загрузки / выгрузки и имя порта работающего сервера:

sudo port load postgresql96-server
- or -
sudo port unload postgresql96-server

, поэтому вам не нужно помнить, где находится файл /Library/LaunchDaemons/org.macports.postgresql96.plist

1 голос
/ 04 января 2017

ни один из вышеприведенных ответов не устранил проблему для меня, несмотря на получение тех же сообщений об ошибках. Я смог восстановить и запустить свой экземпляр, удалив существующий файл postmaster.pid, который был заблокирован и не разрешал подключения.

...