PostgreSQL : Документация: 10: 18.3. Запуск сервера баз данных : Компания Postgres Professional
18.3. Запуск сервера баз данных
Чтобы кто-либо смог обратиться к базе данных, необходимо сначала запустить сервер баз данных. Программа сервера называется postgres
. Для работы программа postgres
должна знать, где найти данные, которые она будет использовать. Указать это местоположение позволяет параметр -D
. Таким образом, проще всего запустить сервер, выполнив команду:
$ postgres -D /usr/local/pgsql/data
в результате которой сервер продолжит работу в качестве процесса переднего плана. Запускать эту команду следует под именем учётной записи PostgreSQL. Без параметра -D
сервер попытается использовать каталог данных, указанный в переменной окружения PGDATA
. Если и эта переменная не определена, сервер не будет запущен.
Однако обычно лучше запускать postgres
в фоновом режиме. Для этого можно применить обычный синтаксис, принятый в оболочке Unix:
$postgres -D /usr/local/pgsql/data >logfile 2>&1 &
Важно где-либо сохранять информацию, которую выводит сервер в каналы stdout и stderr, как показано выше. Это полезно и для целей аудита, и для диагностики проблем. (Более глубоко работа с файлами журналов рассматривается в Разделе 24.3.)
Программа postgres
также принимает несколько других параметров командной строки. За дополнительными сведениями обратитесь к справочной странице postgres и к следующей Главе 19.
Такой вариант запуска довольно быстро может оказаться неудобным. Поэтому для упрощения подобных задач предлагается вспомогательная программа pg_ctl. Например:
pg_ctl start -l logfile
запустит сервер в фоновом режиме и направит выводимые сообщения сервера в указанный файл журнала. Параметр
для неё имеет то же значение, что и для программы postgres
. С помощью pg_ctl
также можно остановить сервер.
Обычно возникает желание, чтобы сервер баз данных сам запускался при загрузке операционной системы. Скрипты автозапуска для разных систем разные, но в составе PostgreSQL предлагается несколько типовых скриптов в каталоге contrib/start-scripts
. Для установки такого скрипта в систему требуются права root.
В различных системах приняты разные соглашения о порядке запуска служб в процессе загрузки. Во многих системах для этого используется файл
или /etc/rc.d/rc.local
. В других применяются каталоги init.d
или rc.d
. Однако при любом варианте запускаться сервер должен от имени пользователя PostgreSQL, но не root или какого-либо другого пользователя. Поэтому команду запуска обычно следует записывать в форме su postgres -c '...'
. Например:
su postgres -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog'
Ниже приведены более конкретные предложения для нескольких основных ОС. (Вместо указанных нами шаблонных значений необходимо подставить правильный путь к каталогу данных и фактическое имя пользователя.)
Для запуска во FreeBSD воспользуйтесь файлом
в дереве исходного кода PostgreSQL.В OpenBSD, добавьте в файл
/etc/rc.local
следующие строки:if [ -x /usr/local/pgsql/bin/pg_ctl -a -x /usr/local/pgsql/bin/postgres ]; then su -l postgres -c '/usr/local/pgsql/bin/pg_ctl start -s -l /var/postgresql/log -D /usr/local/pgsql/data' echo -n ' postgresql' fi
В системах Linux вы можете либо добавить
/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data
в
/etc/rc.d/rc.local
или в/etc/rc.local
, либо воспользоваться файломcontrib/start-scripts/linux
Используя systemd, вы можете применить следующий файл описания службы (например,
/etc/systemd/system/postgresql.service
):[Unit] Description=PostgreSQL database server Documentation=man:postgres(1) [Service] Type=notify User=postgres ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data ExecReload=/bin/kill -HUP $MAINPID KillMode=mixed KillSignal=SIGINT TimeoutSec=0 [Install] WantedBy=multi-user.target
Для использования
Type=notify
требуется, чтобы сервер был скомпилирован с указаниемconfigure --with-systemd
.Особого внимания заслуживает значение тайм-аута. На момент написания этой документации по умолчанию в systemd принят тайм-аут 90 секунд, так что процесс, не сообщивший о своей готовности за это время, будет уничтожен. Но серверу PostgreSQL при запуске может потребоваться выполнить восстановление после сбоя, так что переход в состояние готовности может занять гораздо больше времени. Предлагаемое значение 0 отключает логику тайм-аута.
В NetBSD можно использовать скрипт запуска для FreeBSD или для Linux, в зависимости от предпочтений.
В Solaris, создайте файл с именем
/etc/init.d/postgresql
, содержащий следующую стоку:su - postgres -c "/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data"
Затем создайте символическую ссылку на него в каталоге
/etc/rc3.d
с именемS99postgresql
.
Когда сервер работает, идентификатор его процесса (PID) сохраняется в файле postmaster.pid
в каталоге данных. Это позволяет исключить запуск нескольких экземпляров сервера с одним каталогом данных, а также может быть полезно для выключения сервера.
18.3.1. Сбои при запуске сервера
Есть несколько распространённых причин, по которым сервер может не запуститься. Чтобы понять, чем вызван сбой, просмотрите файл журнала сервера или запустите сервер вручную (не перенаправляя его потоки стандартного вывода и ошибок) и проанализируйте выводимые сообщения. Ниже мы рассмотрим некоторые из наиболее частых сообщений об ошибках более подробно.
LOG: could not bind IPv4 address "127.0.0.1": Address already in use HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry. FATAL: could not create any TCP/IP sockets
Это обычно означает именно то, что написано: вы пытаетесь запустить сервер на том же порту, на котором уже работает другой. Однако, если сообщение ядра не Address already in use
или подобное, возможна и другая проблема. Например, при попытке запустить сервер с номером зарезервированного порта будут выданы такие сообщения:
$ postgres -p 666
LOG: could not bind IPv4 address "127.0.0.1": Permission denied
HINT: Is another postmaster already running on port 666? If not, wait a few seconds and retry.
FATAL: could not create any TCP/IP sockets
Следующее сообщение:
FATAL: could not create shared memory segment: Invalid argument DETAIL: Failed system call was shmget(key=5440001, size=4011376640, 03600).
может означать, что установленный для вашего ядра предельный размер разделяемой памяти слишком мал для рабочей области, которую пытается создать PostgreSQL (в данном примере 4011376640 байт). Возможно также, что в вашем ядре вообще отсутствует поддержка разделяемой памяти в стиле System-V. В качестве временного решения можно попытаться запустить сервер с меньшим числом буферов (shared_buffers), но в итоге вам, скорее всего, придётся переконфигурировать ядро и увеличить допустимый размер разделяемой памяти. Вы также можете увидеть это сообщение при попытке запустить несколько серверов на одном компьютере, если запрошенный ими объём разделяемой памяти в сумме превышает этот предел.
Сообщение:
FATAL: could not create semaphores: No space left on device DETAIL: Failed system call was semget(5440126, 17, 03600).
не означает, что у вас закончилось место на диске. Это значит, что установленное в вашем ядре предельное число семафоров System V меньше, чем количество семафоров, которое пытается создать PostgreSQL. Как и в предыдущем случае можно попытаться обойти эту проблему, запустив сервер с меньшим числом допустимых подключений (max_connections), но в конце концов вам придётся увеличить этот предел в ядре.
Если вы получаете ошибку «illegal system call» (неверный системный вызов), то, вероятнее всего, ваше ядро вовсе не поддерживает разделяемую память или семафоры. В этом случае вам остаётся только переконфигурировать ядро и включить их поддержку.
Настройка средств IPC в стиле System V описывается в Подразделе 18.4.1.
18.3.2. Проблемы с подключениями клиентов
Хотя ошибки подключений, возможные на стороне клиента, довольно разнообразны и зависят от приложений, всё же несколько проблем могут быть связаны непосредственно с тем, как был запущен сервер. Описание ошибок, отличных от описанных ниже, следует искать в документации соответствующего клиентского приложения.
psql: could not connect to server: Connection refused Is the server running on host "server.joe.com" and accepting TCP/IP connections on port 5432?
Это общая проблема «я не могу найти сервер и начать взаимодействие с ним». Показанное выше сообщение говорит о попытке установить подключение по TCP/IP. Очень часто объясняется это тем, что сервер просто забыли настроить для работы по протоколу TCP/IP.
Кроме того, при попытке установить подключение к локальному серверу через Unix-сокет можно получить такое сообщение:
psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Путь в последней строке помогает понять, к правильному ли адресу пытается подключиться клиент. Если сервер на самом деле не принимает подключения по этому адресу, обычно выдаётся сообщение ядра Connection refused
(В соединении отказано) или No such file or directory
(Нет такого файла или каталога), приведённое выше. (Важно понимать, что Connection refused
в данном контексте не означает, что сервер получил запрос на подключение и отверг его. В этом случае были бы выданы другие сообщения, например, показанные в Разделе 20.4.) Другие сообщения об ошибках, например Connection timed out
(Тайм-аут соединения) могут сигнализировать о более фундаментальных проблемах, например, о нарушениях сетевых соединений.
Postgres Pro Enterprise : Документация: 10: 18.3. Запуск сервера баз данных : Компания Postgres Professional
18.3. Запуск сервера баз данных
Важно
При установке двоичных пакетов в системах Linux базы данных по умолчанию располагаются в каталоге /var/lib/pgpro/ent-10/data
, если явно не будет задан другой каталог. За подробностями обратитесь к Разделу 17.1.
Чтобы кто-либо смог обратиться к базе данных, необходимо сначала запустить сервер баз данных. Программа сервера называется postgres
. Для работы программа postgres
должна знать, где найти данные, которые она будет использовать. Указать это местоположение позволяет параметр -D
. Таким образом, проще всего запустить сервер, выполнив команду:
$ postgres -D /usr/local/pgsql/data
в результате которой сервер продолжит работу в качестве процесса переднего плана. Запускать эту команду следует под именем учётной записи Postgres Pro. Без параметра -D
сервер попытается использовать каталог данных, указанный в переменной окружения PGDATA
. Если и эта переменная не определена, сервер не будет запущен.
Однако обычно лучше запускать postgres
в фоновом режиме. Для этого можно применить обычный синтаксис, принятый в оболочке Unix:
$ postgres -D /usr/local/pgsql/data >logfile 2>&1 &
Важно где-либо сохранять информацию, которую выводит сервер в каналы stdout и stderr, как показано выше. Это полезно и для целей аудита, и для диагностики проблем. (Более глубоко работа с файлами журналов рассматривается в Разделе 24.3.)
Программа postgres
также принимает несколько других параметров командной строки. За дополнительными сведениями обратитесь к справочной странице postgres и к следующей Главе 19.
Такой вариант запуска довольно быстро может оказаться неудобным. Поэтому для упрощения подобных задач предлагается вспомогательная программа pg_ctl. Например:
pg_ctl start -l logfile
запустит сервер в фоновом режиме и направит выводимые сообщения сервера в указанный файл журнала. Параметр -D
для неё имеет то же значение, что и для программы postgres
. С помощью pg_ctl
также можно остановить сервер.
Обычно возникает желание, чтобы сервер баз данных сам запускался при загрузке операционной системы. Скрипты автозапуска для разных систем разные, но в составе Postgres Pro предлагается несколько типовых скриптов в каталоге contrib/start-scripts
. Для установки такого скрипта в систему требуются права root.
В различных системах приняты разные соглашения о порядке запуска служб в процессе загрузки. Во многих системах для этого используется файл /etc/rc.local
или /etc/rc.d/rc.local
. В других применяются каталоги init.d
или rc.d
. Однако при любом варианте запускаться сервер должен от имени пользователя Postgres Pro, но не root или какого-либо другого пользователя. Поэтому команду запуска обычно следует записывать в форме su postgres -c '...'
. Например:
su postgres -c 'pg_ctl start -D /usr/local/pgsql/data -l serverlog'
Ниже приведены более конкретные предложения для нескольких основных ОС. (Вместо указанных нами шаблонных значений необходимо подставить правильный путь к каталогу данных и фактическое имя пользователя.)
Для запуска во FreeBSD воспользуйтесь файлом
contrib/start-scripts/freebsd
в дереве исходного кода Postgres Pro.В OpenBSD, добавьте в файл
/etc/rc.local
следующие строки:if [ -x /usr/local/pgsql/bin/pg_ctl -a -x /usr/local/pgsql/bin/postgres ]; then su -l postgres -c '/usr/local/pgsql/bin/pg_ctl start -s -l /var/postgresql/log -D /usr/local/pgsql/data' echo -n ' postgresql' fi
В системах Linux вы можете либо добавить
/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data
в
/etc/rc.d/rc.local
или в/etc/rc.local
, либо воспользоваться файломcontrib/start-scripts/linux
в дереве исходного кода Postgres Pro.Используя systemd, вы можете применить следующий файл описания службы (например,
/etc/systemd/system/postgresql.service
):[Unit] Description=Postgres Pro database server Documentation=man:postgres(1) [Service] Type=notify User=postgres ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data ExecReload=/bin/kill -HUP $MAINPID KillMode=mixed KillSignal=SIGINT TimeoutSec=0 [Install] WantedBy=multi-user.target
Для использования
Type=notify
требуется, чтобы сервер был скомпилирован с указаниемconfigure --with-systemd
.Особого внимания заслуживает значение тайм-аута. На момент написания этой документации по умолчанию в systemd принят тайм-аут 90 секунд, так что процесс, не сообщивший о своей готовности за это время, будет уничтожен. Но серверу Postgres Pro при запуске может потребоваться выполнить восстановление после сбоя, так что переход в состояние готовности может занять гораздо больше времени. Предлагаемое значение 0 отключает логику тайм-аута.
В NetBSD можно использовать скрипт запуска для FreeBSD или для Linux, в зависимости от предпочтений.
В Solaris, создайте файл с именем
/etc/init.d/postgresql
, содержащий следующую стоку:su - postgres -c "/usr/local/pgsql/bin/pg_ctl start -l logfile -D /usr/local/pgsql/data"
Затем создайте символическую ссылку на него в каталоге
/etc/rc3.d
с именемS99postgresql
.
Когда сервер работает, идентификатор его процесса (PID) сохраняется в файле postmaster.pid
в каталоге данных. Это позволяет исключить запуск нескольких экземпляров сервера с одним каталогом данных, а также может быть полезно для выключения сервера.
18.3.1. Сбои при запуске сервера
Есть несколько распространённых причин, по которым сервер может не запуститься. Чтобы понять, чем вызван сбой, просмотрите файл журнала сервера или запустите сервер вручную (не перенаправляя его потоки стандартного вывода и ошибок) и проанализируйте выводимые сообщения. Ниже мы рассмотрим некоторые из наиболее частых сообщений об ошибках более подробно.
LOG: could not bind IPv4 address "127.0.0.1": Address already in use HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry. FATAL: could not create any TCP/IP sockets
Это обычно означает именно то, что написано: вы пытаетесь запустить сервер на том же порту, на котором уже работает другой. Однако, если сообщение ядра не Address already in use
или подобное, возможна и другая проблема. Например, при попытке запустить сервер с номером зарезервированного порта будут выданы такие сообщения:
$ postgres -p 666
LOG: could not bind IPv4 address "127.0.0.1": Permission denied
HINT: Is another postmaster already running on port 666? If not, wait a few seconds and retry.
FATAL: could not create any TCP/IP sockets
Следующее сообщение:
FATAL: could not create shared memory segment: Invalid argument DETAIL: Failed system call was shmget(key=5440001, size=4011376640, 03600).
может означать, что установленный для вашего ядра предельный размер разделяемой памяти слишком мал для рабочей области, которую пытается создать Postgres Pro (в данном примере 4011376640 байт). Возможно также, что в вашем ядре вообще отсутствует поддержка разделяемой памяти в стиле System-V. В качестве временного решения можно попытаться запустить сервер с меньшим числом буферов (shared_buffers), но в итоге вам, скорее всего, придётся переконфигурировать ядро и увеличить допустимый размер разделяемой памяти. Вы также можете увидеть это сообщение при попытке запустить несколько серверов на одном компьютере, если запрошенный ими объём разделяемой памяти в сумме превышает этот предел.
Сообщение:
FATAL: could not create semaphores: No space left on device DETAIL: Failed system call was semget(5440126, 17, 03600).
не означает, что у вас закончилось место на диске. Это значит, что установленное в вашем ядре предельное число семафоров System V меньше, чем количество семафоров, которое пытается создать Postgres Pro. Как и в предыдущем случае можно попытаться обойти эту проблему, запустив сервер с меньшим числом допустимых подключений (max_connections), но в конце концов вам придётся увеличить этот предел в ядре.
Если вы получаете ошибку «illegal system call» (неверный системный вызов), то, вероятнее всего, ваше ядро вовсе не поддерживает разделяемую память или семафоры. В этом случае вам остаётся только переконфигурировать ядро и включить их поддержку.
Настройка средств IPC в стиле System V описывается в Подразделе 18.4.1.
18.3.2. Проблемы с подключениями клиентов
Хотя ошибки подключений, возможные на стороне клиента, довольно разнообразны и зависят от приложений, всё же несколько проблем могут быть связаны непосредственно с тем, как был запущен сервер. Описание ошибок, отличных от описанных ниже, следует искать в документации соответствующего клиентского приложения.
psql: could not connect to server: Connection refused Is the server running on host "server.joe.com" and accepting TCP/IP connections on port 5432?
Это общая проблема «я не могу найти сервер и начать взаимодействие с ним». Показанное выше сообщение говорит о попытке установить подключение по TCP/IP. Очень часто объясняется это тем, что сервер просто забыли настроить для работы по протоколу TCP/IP.
Кроме того, при попытке установить подключение к локальному серверу через Unix-сокет можно получить такое сообщение:
psql: could not connect to server: No such file or directory Is the server running locally and accepting connections on Unix domain socket "/tmp/.s.PGSQL.5432"?
Путь в последней строке помогает понять, к правильному ли адресу пытается подключиться клиент. Если сервер на самом деле не принимает подключения по этому адресу, обычно выдаётся сообщение ядра Connection refused
(В соединении отказано) или No such file or directory
(Нет такого файла или каталога), приведённое выше. (Важно понимать, что Connection refused
в данном контексте не означает, что сервер получил запрос на подключение и отверг его. В этом случае были бы выданы другие сообщения, например, показанные в Разделе 20.4.) Другие сообщения об ошибках, например Connection timed out
(Тайм-аут соединения) могут сигнализировать о более фундаментальных проблемах, например, о нарушениях сетевых соединений.
PostgreSQL : Документация: 9.6: pg_ctl : Компания Postgres Professional
Описание
pg_ctl — это утилита для начальной инициализации, запуска, остановки, повторного запуска и управления кластером баз данных PostgreSQL (postgres). Сервер можно стартовать в ручном режиме, но pg_ctl реализует задачи направления вывода в журнал и отсоединения от терминала и группы процессов, а также предоставляет удобный интерфейс остановки кластера.
Для инициализации нового кластера PostgreSQL используются режимы init
или initdb
. Кластер — это коллекция баз данных под управлением единого сервера. По факту вызывается команда initdb
. За подробностями обратитесь к initdb.
Сервер запускается в режиме start
. Процесс работает в фоновом режиме, а стандартный ввод связывается с /dev/null
(или nul
под управлением Windows). По умолчанию в Unix-подобных системах вывод и ошибки сервера пишутся в устройство стандартного вывода (не ошибок) pg_ctl. Вывод pg_ctl следует перенаправить в файл или процесс, например, приложение ротации журналов rotatelogs; в ином случае postgres
будет писать вывод в управляющий терминал (в фоновом режиме) и останется в группе процессов оболочки. В Windows сообщения и ошибки сервера по умолчанию перенаправляются в терминал. Это поведение можно изменить и направить вывод сервера в файл, добавив ключ -l
. Мы рекомендуем использовать ключ -l
или перенаправлять вывод.
В режиме stop
сервер, работающий в указанном каталоге данных, останавливается. Параметр -m
позволяет выбрать три различных режима остановки. Режим «Smart» запрещает новые подключения, а затем ожидает отключения всех существующих клиентов и завершения всех текущих процессов резервного копирования. Если сервер работает в режиме горячего резерва, восстановление и потоковая репликация будут прерваны, как только отключатся все клиенты. Режим «Fast» (выбираемый по умолчанию) не ожидает отключения клиентов и завершает все текущие процессы резервного копирования. Все активные транзакции откатываются, а клиенты принудительно отключаются, после чего сервер останавливается. Режим «Immediate» незамедлительно прерывает все серверные процессы, не выполняя процедуру штатной остановки. В результате при следующем запуске будет запущено восстановление после сбоя.
В режиме restart
по сути выполняется остановка и последующий запуск сервера. Это позволяет изменить параметры командной строки postgres
. Режим restart
может не отработать, если при запуске сервера в командной строке задавались относительные пути.
Чтобы перечитать конфигурацию (postgresql.conf
, pg_hba.conf
и т. д.), используется reload
, при этом процесс postgres
получает системный сигнал SIGHUP. Это позволяет применить изменения без полного рестарта сервера.
Чтобы проверить статус кластера, используется status
. Если кластер запущен, то будет выведен PID процесса, а также команда с использованными при запуске аргументами. Если кластер остановлен, то процесс вернёт статус завершения 3. Если не указан каталог хранения данных, то процесс вернёт статус завершения 4.
Чтобы перевести резервный сервер в режим главного, используется promote
. При этом сервер прекращает работу в режиме восстановления и начинает работать в режиме чтения-записи.
Чтобы послать сигнал процессу, используется kill
. Это особенно применимо в среде Microsoft Windows, которая не имеет в оснастке команды kill. Чтобы посмотреть список доступных сигналов, обратитесь к справке --help
.
Режим register
предназначен для регистрации системной службы в Microsoft Windows. Параметр -S
позволяет выбрать тип запуска службы, «auto» (запускать службу автоматически при загрузке системы) или «demand» (запускать службу по требованию).
Чтобы удалить зарегистрированную службу в Microsoft Windows, используется unregister
. Эта операция отменяет действие команды register
.
Примеры
Запуск сервера
Для запуска сервера:
$
pg_ctl start
Для запуска сервера с ожиданием готовности к приёму подключений:
$
pg_ctl -w start
Чтобы запустить сервер с использованием порта 5433 и без fsync
, выполните:
$
pg_ctl -o "-F -p 5433" start
Остановка сервера
Для остановки сервера:
$
pg_ctl stop
Параметр -m
указывает режим остановки:
$
pg_ctl stop -m fast
Повторный запуск сервера
Повторный запуск сервера производится аналогично остановке с дальнейшим его запуском, за исключением того, что pg_ctl
использует аргументы, которые были переданы при предыдущем запуске кластера. В простейшем случае повторный запуск выглядит так:
$
pg_ctl restart
Для повторного запуска сервера с ожиданием полной остановки и последующего запуска:
$
pg_ctl -w restart
Для повторного запуска на порту 5433 с выключенным fsync
после старта:
$
pg_ctl -o "-F -p 5433" restart
Вывод состояния сервера
Ниже представлен примерный вывод pg_ctl:
$
pg_ctl status
pg_ctl: server is running (PID: 13718) /usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data" "-p" "5433" "-B" "128"
Показанная командная строка будет использоваться в режиме перезапуска.
Запуск сервера базы данных postgres из файла данных
Я работаю над этим уже около дня и не могу понять, что это такое, я действительно не знаю, где еще искать. У меня есть каталог /psql/data/, и я пытаюсь запустить postgres -D /pgsql/data
, чтобы запустить сервер базы данных. Однако я получаю
postgres cannot access the server configuration file "/psql/data/postgresql.conf": Permission denied
Вот некоторые предыстории. Там, где я работаю, у нас есть приложение, использующее фреймворк Flask, который использует базу данных Postgres. Мы запускаем это приложение на сервере Amazon. Это приложение работает! Я знаю это, потому что уже пользовался им раньше. Однако человек, написавший его, покинул компанию, и теперь я отвечаю за нее. А еще один мой коллега по неосторожности остановил сервер, так что после перезагрузки мне пришлось снова его настроить.
Вот что я попробовал: postgres -D /psql/data
, о котором я читал здесь
по этой ссылке, также говорит, что вы должны войти в учетную запись пользователя postgresql. (Я только начал использовать ubuntu около месяца назад и не очень хорошо с ним знаком, так что простите меня, если я делаю глупые заявления). Поэтому я огляделся и обнаружил, что могу войти в учетную запись postgres с помощью sudo su postgres
. И это работает! И я могу видеть файлы, на просмотр которых у меня раньше не было прав. Итак, когда я снова пытаюсь запустить postgres -D /psql/data
, я получаю:
The program 'postgres' is currently not installed. To run 'postgres' please ask your administrator to install the package 'postgres-xc'
Сначала я попытался установить postgres-xc , но у него отсутствовала зависимость, а потом, когда я пошел искать, я прочитал, что если я получаю это сообщение, то, скорее всего, это большая ошибка, и мне не нужно устанавливать postgres-xc. Поэтому я перестал пытаться.
В конечном счете, я пытаюсь запустить приложение снова. Но прежде чем он сможет работать, ему нужно запустить базу данных, потому что без запуска базы данных, когда я пытаюсь запустить приложение flask с python [myapp].py
, я получаю:
sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
Я понял, что это потому, что база данных не работает. И я не могу сделать сервер базы данных, чтобы начать. Я постарался дать как можно больше релевантной информации, и любые предложения о том, где мне следует искать дальше, будут очень оценены. Я также могу предоставить дополнительную информацию, если это необходимо.
UPDATE: Ошибка происходит здесь
engine = sqlalchemy.create_engine(conf['db'])
insp = reflection.Inspector.from_engine(engine)
движок создается из значения в конфигурационном файле, а именно,
db: postgresql://work:app@localhost:5432/work
Но как только вторая строка пытается выполнить ее, она выдает ошибку.
UPDATE:
VICTORY! Спасибо всем, кто помогал мне, все ваши ответы вместе взятые указывали мне правильные направления (но только один человек может получить награду, к сожалению).
Во-первых, всякий раз, когда я пробовал sudo -u postgres pg_ctl -D /psql/data
, он ошибался и говорил мне, что такой команды нет. Поэтому мне нужно было точно найти, где находится команда pg_ctl. Это было в /usr/lib/postgres/9.3/bin/pg_ctl . И тогда я позвонил sudo -u postgres /usr/lib/postgresql/9.3/bin/pg_ctl start -D /psql/data
. Это дало мне ошибку, что в моем конфигурационном файле была ошибка. Что было странно, так как я никогда не прикасался к нему, но я прокомментировал эту ошибку, а затем получил настоящую ошибку.
База данных была создана с использованием postgres 9.4, но я использовал postgres 9.3.
Поэтому мне пришлось установить 9.4. Инструкции можно найти здесь . Как только я это сделал, мне пришлось остановить ранее запущенные серверы postgres с помощью sudo service postgresql stop
.
Наконец я смог запустить сервер из базы данных в файле с sudo -u postgres /usr/lib/postgresql/9.4/bin/pg_ctl start -D /psql/data
.
Теперь я могу получить доступ к базе данных с помощью sudo -su postgres
, а затем psql
.
Спасибо вам всем!
python database postgresql flaskУ меня есть postgres, установленный в нескольких средах. В каждой из этих сред у меня есть 2 + базы данных. Если у меня есть права суперпользователя базы данных, есть ли способ установить расширение…
Я хотел бы создать резервную копию своей рабочей базы данных до и после запуска миграции базы данных с моего сервера развертывания (а не с сервера базы данных) У меня есть сервер Postgresql 8.4,…
Я создал несколько баз данных с помощью postgres и поместил в них некоторые данные. Проблема в том, что когда я удаляю/удаляю базу данных, а затем создаю новую базу данных, новая база данных всегда…
Я выполняю миграцию данных из базы данных oracle в базу данных postgres 9.0 поля .All успешно переносятся, за исключением случаев, когда я пытаюсь переместить столбец файла (объект Blob в Oracle) в…
У меня есть приложение Rails A с базой данных postgres. У меня также есть еще одно приложение Rails B с базой данных postgres. Теперь я хочу, чтобы повторно использовать некоторые из данных…
Мне нужно получить данные из базы данных Postgres в базу данных Accumulo. Мы надеемся использовать файлы последовательности для запуска задания map/reduce, чтобы сделать это,но не знаем, как начать….
Я использую postgres с jdbc и хотел бы удалить все данные из базы данных, не отбрасывая никаких таблиц!! Я хотел бы вставить данные в базу данных, используя это <jdbc:initialize-database…
Мне не повезло запустить сервер postgres. Я могу добавлять новые базы данных, таблицы и т. д. в postgres из terminal, но не могу добавлять вещи в таблицы через веб-страницу. На данный момент…
У меня есть база данных postgres с несколькими схемами и несколькими таблицами внутри каждой из схем, и таблицы имеют множество связей внешних ключей друг с другом. Все, что я хочу сделать, это…
На Mysql я хочу импортировать и экспортировать базу данных в одной команде, без промежуточного файла sql. я использовал эту методологию в Postgres, которая приведена ниже. Postgres Server to Server…
Пошаговая настройка СУБД PostgreSQL на Windows Server 2012 R2
Postgresql — это полностью бесплатная СУБД, обладающая высокой масштабируемостью и открытым исходным кодом. Благодаря этому она довольно распространена в использовании, ее использует например Яндекс для части своих проектов. Аренда виртуальных серверов от oblako.kz.
PostgreSQL можно также скачать с официального сайта.
1. После того как установочный файл скачан, необходимо найти его в папке с Вашими загрузками и запустить его на исполнение двойным щелчком мыши.
2. После этого запустится приветственное окно установки, жмем Next
3. На этом этапе можно выбрать каталог для установки PostgreSQL
4. На этом этапе выбираем компоненты для установки — сам сервер PostgreSQL, графическая утилита администрирования pgAdmin, инструменты командной строки и утилита stack builder для установки дополнительных компонентов. Выберем все и нажмем Next
5. Выберем каталог, где будут храниться наши базы
6. Зададим пароль Администратора СУБД (postgres)
7. Можно переопределить порт по которому будет происходить соединение с БД. По умолчанию это порт 5432. Оставим.
8. Выберем локализацию (региональные настройки) для наших баз или оставим по умолчанию
9. На этой странице нам выведут суммарную информацию о нашем выборе
10. А на этой странице сообщают, что система готова к установке
11. Система устанавливается
12. После окончания установки система предложит запустить Stack Builder — откажемся от установки сняв соответствующую галочку, и нажимаем Finish
На этом установка завершена. Проверить корректность установки можно также удостоверившись что запущена соответствующая служба. Для этого надо запустить оснастку “Службы” . Для этого нажмите комбинацию Win+R и в открывшееся окно написать services.msc
Далее необходимо найти там службу с именем начинающимся с postgresql и удостовериться что она запущена (статус службы “выполняется”)
Также вместе с сервером СУБД устанавливается клиент командной строки PostgreSQL и утилита pgAdmin, которые можно также использовать для проверки корректности установки.
Например запустим консольный клиент psql из меню “Пуск” и попробуем соединиться c сервером PostgreSQL
Psql спросит вас к какому серверу, к какой базе и каким пользователей Вы хотите подключиться. Можно просто нажать Enter чтобы принять значения по умолчанию в квадратных скобках и в конце спросит пароль администратора , который Мы задавали на шаге 6.
В случае успешного подключения вы должны попасть в командную строку PostgreSQL которая выглядит как показано на рисунке
Поделиться в соцсетях:Спасибо за Вашу оценку! К сожалению, проголосовать не получилось. Попробуйте позже
Установка PostgreSQL для Windows
Поддерживаемые операционные системы
Данная версия PostgreSQL сервера может быть установлена на компьютеры с ОС Windows XP SP3 и выше. 64-разрядная версия PosgreSQL сервера может быть установлена только на 64 разрядную версию Windows.
Параметры установки
В начале предлагается задать параметры установки сервера. Можно выбрать компоненты, которые будут установлены.
Если обнаружено, что PostgreSQL сервер уже установлен, то предлагается остановить сервер и обновить его. При этом все соединения с сервером будут отключены. Для определения существования сервера используются данные о предыдущих установках из реестра, поэтому, если Вы ранее запускали сервер нестандартно, он может остаться не обнаруженным.
При установке Вы можете задать путь для установки исполняемых файлов севера и путь к каталогу, в котором будут храниться данные. Если по указанному пути уже находятся данные, то будут использоваться они, запрос параметров сервера и инициализации базы данных проводиться не будет.
В процессе установки предлагается ввести параметры сервера — номер порта, имя супер пользователя, пароль и другие. Рекомендуем вводить имя пользователя и пароль только латинскими буквами. Пароль можно оставить и пустым.
Также предлагается провести некоторую оптимизацию параметров сервера исходя из установленной оперативной памяти (если ее больше 1Gb). Параметры сохраняются в файл postgresql.conf, который находится в папке с данными. Оптимизируются 2 параметра: shared_buffers и work_mem. Потом Вы можете самостоятельно изменять эти и другие параметры в зависимости от условий эксплуатации сервера.
После установки, сервер запускается и становится готовым к работе. Перезагрузка компьютера не требуется.
Учетная запись сервиса в Windows
Для запуска сервера используется специальная встроенная учетная запись Windows: ‘NT AUTHORITY\NetworkService’. Запуск службы Postgresql-9.4 от другого пользователя можно настроить после установки, например, через программу «Управление компьютером» в Windows.
Параметры командной строки
Программа установки может быть запущена с параметрами командной строки:
Можно задать путь для установки сервера:
/D=Path
Установка без внешнего интерфейса (silent install). Этот параметр должен быть именно заглавной буквой S:
/S
Параметры установки могут быть переданы в INI файле:
/init=Имя_файла.ini
Формат INI файла с параметрами установки
Параметры записываются в секцию [options], эта строка может быть первой в INI файле. Далее указываются параметры сервера. Если параметр отсутствует, то используются значение по умолчанию.
Могут быть указаны следующие параметры:
InstallDir = Путь для установки сервера
DataDir = Путь к данным
Port = Номер порта
SuperUser = Имя пользователя (лучше вводить латинскими буквами)
Password=Пароль (лучше вводить латинскими буквами)
noExtConnections = 1 – запрещать внешние подключения к серверу
Сoding = Кодовая страница
Locale = Локаль
Pgadmin=no — не устанавливать PgAdmin
Vcredist=no — не устанавливать Visual C++ Redistributable Package
Pgserver=no – не устанавливать сервер
odbc=no – не устанавливать ODBC драйверы
Ярлыки программ
После установки для сервера создаются ярлыки, которыми можно воспользоваться с помощью кнопки Пуск (если она есть в Вашей ОС).
SQL Shell (psql) — основное, «родное» консольное средство управления сервером и выполнения запосов.
Reload Configuration — перезагрузить конфигурацию сервера из файлов конфигурации. Следует отметить, что для некоторых параметров требуется перезагрузка сервера.
Restart Server — остановить и запустить сервер заново. Все активные соединения с сервером будут закрыты.
Stop Server — остановить сервер. Все активные соединения с сервером будут закрыты.
Start Server — запустить сервер.
Если Вы установили средство pgAdmin, то для него будут созданы свои ярлыки для запуска.
Удаление сервера
Для удаления сервера выберите ярлык Uninstall или можно использовать панель управления Windows. При удалении сервер останавливается, все активные соединения с сервером будут закрыты. Папка с данными не удаляется. Перезагрузка компьютера не требуется.
PostgreSQL 9.2 Начало! / Хабр
Мне хотелось создатьPostgreSQL является объектно-реляционной системой управления базами данных (ОРСУБД) на основе POSTGRES, версия 4.2, разработанной в Университете Калифорнии в Беркли департаменте компьютерных наук.
PostgreSQL является open source потомком оригинального кода Berkeley. Он поддерживает большую часть стандарта SQL и предлагает множество современных функций:
Кроме того, PostgreSQL может быть расширен пользователем во многих отношениях, например, путем добавления новых
- типов данных
- функций
- операторов
- агрегатных функций
- индекс методов
- процедурных языков
Сборка и установка
Как и все любители мейнстрима PostgreSQL мы будем конечно же собирать, а не скачивать готовые пакеты (в репозитариях Debian, например, нет последней версии). Вот здесь лежит множество версий, скачивать конечно же лучше всего последнюю. На момент написания поста это версия 9.2.2
wget http://ftp.postgresql.org/pub/source/v9.2.2/postgresql-9.2.2.tar.gz
tar xzf postgresql-9.2.2.tar.gz
Теперь у нас есть директория с исходниками сей прекрасной базы данных.
По умолчанию файлы базы будут установлены в директорию /usr/local/pgsql, но эту директорию можно изменить задав
--prefix=/path/to/pgsql
перед командой ./configure
Перед сборкой можно указать компилятор С++
export CC=gcc
PostgeSQL может использовать readline библиотеку, если у вас её нет и нет желания её ставить просто укажите опцию
--without-readline
Надеюсь у всех есть Autotools? Тогда вперед к сборке:
cd postgresql-9.2.2
./configure --without-readline
sudo make install clean
Все господа! Поздравляю!
Настройка
Нам необходимо указать хранилище данных наших баз данных (кластер) и запустить её.
Есть один нюанс — владельцем директории данных и пользователь, который может запускать базу должен быть не root. Это сделано в целях безопасности системы. Поэтому создадим специального пользователя
sudo useradd postgres -p postgres -U -m
И далее все понятно
sudo chown -R postgres:postgres /usr/local/pgsql
Важный процесс. Мы должны инициализировать кластер баз дынных. Сделать мы должны это от имени пользователя postgres
initdb -D /usr/local/pgsql/data
Теперь нужно добавить запуск PostgreSQL в автостарт. Для этого существует уже готовый скрипт и лежит он в postgresql-9.2.2/contrib/start-scripts/linux
Этот файл можно открыть и обратить внимание на следующие переменные:
- prefix — это место куда мы ставили PostgreSQL и задавали в ./configure
- PGDATA — это то, где хранится кластер баз данных и куда должен иметь доступ наш пользователь postgres
- PGUSER — это тот самый пользователь, от лица которого будет все работать
Если все стоит верно, то добвляем наш скрипт в init.d
sudo cp ./postgresql-9.2.2/contrib/start-scripts/linux /etc/init.d/postgres
sudo update-rc.d postgres defaults
Перезапускам систему, чтобы проверить что наш скрипт работает.
Вводим
/usr/local/pgsql/bin/psql -U postgres
И если появится окно работы с базой, то настройка прошла успешно! Поздравляю!
По умолчанию создается база данных с именем postgres
Теперь важно поговорить о методах авторизации.
В /usr/local/pgsql/data/pg_hba.conf как раз есть необходимые для этого настройка
# TYPE DATABASE USER ADDRESS METHOD
local all all trust
host all all 127.0.0.1/32 trust
host all all ::1/128 trust
Первая строка отвечает за локальное соединение, вторая — за соединение про протоколу IPv4, а третья по протоколу IPv6.
Самый последний параметр — это как раз таки метод авторизации. Его и рассмотрим (только основные)
- trust — доступ к базе может получить кто угодно под любым именем, имеющий с ней соединение.
- reject — отклонить безоговорочно! Это подходит для фильтрации определенных IP адресов
- password — требует обязательного ввода пароля. Не подходит для локальных пользователей, только пользователи созданные командой CREATE USER
- ident — позволяет только пользователем зарегистрированным в файле /usr/local/pgsql/data/pg_ident.conf устанавливать соединение с базой.
Вкратце расскажу об основных утилитах, которые пригодятся в работе.
Утилиты для работы с базой
pg_configВозвращает информацию о текущей установленной версии PostgreSQL.initdbИнициализирует новое хранилище данных (кластер баз данных). Кластер представляет собой совокупность баз данных управляемых одним экземпляром севера. initdb должен быть запущен от имени будущего владельца сервера (как указано выше от имени postgres).pg_ctlУправляет процессом работы сервера PostgreSQL. Позволяет запускать, выполнять перезапуск, останавливать работу сервера, указать лог файл и другое.psqlКлиент для работы с базой дынных. Позволяет выполнять SQL операции.createdbСоздает новую базу данных. По умолчанию, база данных создается от имени пользователя, который запускает команду. Однако, чтобы задать другого — необходимо использовать опцию -O (если у пользователя есть необходимые привилегии для этого). По сути — это обертка SQL команды CREATE DATABASE.
dropdb Удаляет базу данных. Является оберткой SQL команды DROP DATABASE.createuser Добавляет нового пользователя базы дынных. Является оберткой SQL команды CREATE ROLE.
dropuserУдаляет пользователя базы данных. Является оберткой SQL команды DROP ROLE.createlangДобавляет новый язык программирования в базу PostgreSQL. Является оберткой SQL команды CREATE LANGUAGE.
droplangУдаляет язык программирования. Является оберткой SQL команды DROP LANGUAGE.pg_dumpСоздает бэкап (дамп) базы данных в файл.
pg_restoreВосстанавливает бэкап (дамп) базы данных из файла.
pg_dumpallСоздает бэкап (дамп) всего кластера в файл.reindexdbПроизводит переиндексацию базы данных. Является оберткой SQL команды REINDEX.clusterdbПроизводит перекластеризацию таблиц в базе данных. Является оберткой SQL команды CLUSTER.vacuumdbСборщик мусора и оптимизатор базы данных. Является оберткой SQL команды VACUUM.
Менеджеры по работе с базой
Что касается менеджера по работа с базой, то есть php менеджер — это phpPgAdmin и GUI менеджер pgAdmin. Должен заметить, что они оба плохо поддерживают последнюю версию PostgreSQL.
P.S Если что-то забыл, скажите — добавлю.
PostgreSQL: Документация: 9.1: Запуск сервера базы данных
Прежде чем кто-либо сможет получить доступ к базе данных, вы должны запустить сервер базы данных. Программа сервера базы данных называется postgres. Постгрес Программа должна знать, где найти данные, которые она должна использовать. Это делается с помощью опции -D. Таким образом, Самый простой способ запустить сервер:
$ postgres -D / usr / local / pgsql / data
, что оставит сервер работающим на переднем плане.Этот необходимо выполнить при входе в учетную запись пользователя PostgreSQL. Без -D сервер попытается использовать каталог данных названный переменной окружения PGDATA. Если эта переменная также не указана, произойдет сбой.
Обычно лучше запускать postgres в фоновом режиме. Для этого используйте обычный синтаксис оболочки Unix:
$ postgres -D / usr / local / pgsql / data> файл журнала 2> & 1 &
Важно где-то хранить выходные данные сервера stdout и stderr, как показано выше.Это поможет в целях аудита и диагностики проблем. (Видеть Раздел 23.3 для более подробной информации подробное обсуждение обработки файлов журнала.)
Программа postgres также требует количество других параметров командной строки. Для получения дополнительной информации см. справочную страницу postgres и главу 18 ниже.
Этот синтаксис оболочки может быстро стать утомительным. Следовательно программа-оболочка pg_ctl предназначена для упрощения некоторых задачи. Например:
pg_ctl start -l файл журнала
запустит сервер в фоновом режиме и поместит вывод в названный файл журнала.Параметр -D имеет то же значение, что и postgres. pg_ctl также способен остановить сервер.
Обычно вам нужно запускать сервер базы данных, когда компьютер загружается. Сценарии автозапуска зависят от операционной системы. Некоторые из них распространяются с PostgreSQL в каталоге contrib / start-scripts. Установка одного потребуются права root.
Различные системы имеют разные условные обозначения для запуска демоны во время загрузки. Во многих системах есть файл / etc / rc.local или /etc/rc.d/rc.local. Другие используют init.d или rc.d каталоги. Что бы вы ни делали, сервер должен запускаться Учетная запись пользователя PostgreSQL а не рутом или каким-либо другой пользователь. Поэтому вам, вероятно, следует сформировать свои команды используя su postgres -c ‘…’. Для пример:
su postgres -c 'pg_ctl start -D / usr / local / pgsql / data -l serverlog'
Вот еще несколько предложений для конкретных операционных систем. (В в каждом случае обязательно используйте правильный каталог для установки и имя пользователя, где мы показываем общие значения.)
Для FreeBSD посмотрите на файл contrib / start-scripts / freebsd в исходнике PostgreSQL распределение.
В OpenBSD добавьте следующие строки в файл /etc/rc.local:
если [-x / usr / local / pgsql / bin / pg_ctl -a -x / usr / local / pgsql / bin / postgres]; тогда su -l postgres -c '/ usr / local / pgsql / bin / pg_ctl start -s -l / var / postgresql / log -D / usr / local / pgsql / data' эхо -n 'postgresql' фи
В системах Linux либо добавить
/ usr / local / pgsql / bin / pg_ctl start -l файл журнала -D / usr / local / pgsql / data
в / etc / rc.d / rc.local или /etc/rc.local или посмотрите файл contrib / start-scripts / linux в Исходный код PostgreSQL распределение.
В NetBSD используйте либо Скрипты запуска FreeBSD или Linux, в зависимости от предпочтение.
В Solaris создайте файл называется /etc/init.d/postgresql, который содержит следующую строку:
su - postgres -c "/ usr / local / pgsql / bin / pg_ctl start -l logfile -D / usr / local / pgsql / data"
Затем создайте на него символическую ссылку в / etc / rc3.d как S99postgresql.
Во время работы сервера его PID сохраняется в файле postmaster.pid в каталоге данных. Это используется для предотвращения запуска нескольких экземпляров сервера в тот же каталог данных, а также может использоваться для выключения сервер.
Существует несколько распространенных причин, по которым сервер может не Начало. Проверьте файл журнала сервера или запустите его вручную (без перенаправления стандартного вывода или стандартной ошибки) и см. какие сообщения об ошибках появляются.Ниже мы объясним некоторые из самых более подробно о распространенных сообщениях об ошибках.
ЖУРНАЛ: не удалось привязать сокет IPv4: адрес уже используется ПОДСКАЗКА: Другой почтмейстер уже работает на порту 5432? Если нет, подождите несколько секунд и повторите попытку. FATAL: не удалось создать прослушивающий сокет TCP / IP
Обычно это означает именно то, что он предлагает: вы пытались начать другой сервер на том же порту, где он уже запущен. Однако, если сообщение об ошибке ядра не Адрес уже используется или какой-либо вариант из этого может быть другая проблема.Например, попытка запустить сервер на зарезервированном номере порта может вызвать что-то вроде:
$ postgres -p 666 ЖУРНАЛ: не удалось привязать сокет IPv4: в разрешении отказано ПОДСКАЗКА: Другой почтмейстер уже работает на порту 666? Если нет, подождите несколько секунд и повторите попытку. FATAL: не удалось создать прослушивающий сокет TCP / IP
Сообщение типа:
FATAL: не удалось создать сегмент разделяемой памяти: недопустимый аргумент ДЕТАЛИ: сбойный системный вызов: shmget (ключ = 5440001, размер = 4011376640, 03600).
, вероятно, означает ограничение вашего ядра на размер разделяемого объем памяти меньше, чем рабочая область, которую PostgreSQL пытается создать (4011376640 байтов в этом примере). Или это может означать, что у вас нет Поддержка общей памяти в стиле System-V, настроенная в вашем ядро вообще. В качестве временного решения вы можете попробовать запустить сервер с меньшим, чем обычно, количеством буферов (общие_буферы). В конечном итоге вы захотите перенастроить ядро, чтобы увеличить разрешенный размер разделяемой памяти.Вы также можете увидеть это сообщение при попытке запустить несколько серверов на одном компьютере, если их общее запрошенное пространство превышает ограничение ядра.
Ошибка типа:
FATAL: не удалось создать семафоры: на устройстве не осталось места ДЕТАЛИ. Неудачный системный вызов: semget (5440126, 17, 03600).
не означает у вас закончилось место на диске. Это означает ограничение вашего ядра на количество Систем V семафоров меньше, чем количество, которое PostgreSQL хочет создать.Как и выше, вы может решить проблему, запустив сервер с уменьшенным количеством разрешенных подключений (max_connections), но со временем вы захотите увеличить лимит ядра.
Если вы получите «нелегальную систему вызов «ошибка, вполне вероятно, что разделяемая память или семафоры вообще не поддерживаются в вашем ядре. В этом если ваш единственный вариант — перенастроить ядро, чтобы включить эти особенности.
Подробная информация о настройке системы V Объекты IPC приведено в разделе 17.4.1.
Хотя условия ошибки возможны на стороне клиента довольно разнообразны и зависят от приложения, некоторые из них могут иметь прямое отношение к тому, как был запущен сервер. Условия кроме показанных ниже, должны быть задокументированы соответствующее клиентское приложение.
psql: не удалось подключиться к серверу: в соединении отказано Сервер работает на хосте server.joe.com и принимает TCP / IP-соединения на порту 5432?
Это общий «Я не смог найти сервер поговорить с «отказом.Это похоже на то, когда Предпринята попытка связи TCP / IP. Распространенная ошибка — забудьте настроить сервер на разрешение TCP / IP-соединений.
В качестве альтернативы вы получите это при попытке использования домена Unix. соединение сокета с локальным сервером:
psql: не удалось подключиться к серверу: нет такого файла или каталога Сервер работает локально и принимает соединения на сокете домена Unix "/tmp/.s.PGSQL.5432"?
Последняя строка полезна для проверки того, что клиент пытаюсь подключиться к нужному месту.Если на самом деле нет сервер, работающий там, сообщение об ошибке ядра обычно быть либо Connection отказано или Нет такого файла или каталог , как показано на рисунке. (Важно понимать что соединение отклонено в этот контекст не означает, что сервер получил ваш запрос на подключение и отклонил Это. В этом случае будет выдано другое сообщение, как показано на Раздел 19.4.) Другие сообщения об ошибках, такие как Connection timed out , могут указывать на более фундаментальные проблемы, такие как отсутствие сети возможность подключения.
Как запустить и остановить сервер PostgreSQL?
В этом посте мы собираемся выяснить, как запустить, остановить и перезапустить сервер PostgreSQL в macOS, Linux и Windows.
1. В macOS
Если вы установили PostgreSQL через Homebrew:
pg_ctl -D / usr / local / var / postgres start
pg_ctl -D / usr / local / var / postgres stop
- Чтобы запустить сервер PostgreSQL сейчас и перезапустить при входе в систему:
brew services start postgresql
пивоваренные службы остановить postgresql
Если вам нужен простой способ управления локальными серверами баз данных PostgreSQL, используйте DBngin .Достаточно одного щелчка мыши, чтобы начать, и другого щелчка, чтобы выключить. Никаких зависимостей, не требуется командная строка, несколько драйверов, несколько версий и несколько портов. И это бесплатно.
2. В Windows
Сначала вам нужно найти каталог базы данных PostgreSQL, это может быть что-то вроде C: \ Program Files \ PostgreSQL \ 10.4 \ data
. Затем откройте командную строку и выполните эту команду:
pg_ctl -D "C: \ Program Files \ PostgreSQL \ 9.6 \ data" начать
pg_ctl -D "C: \ Program Files \ PostgreSQL \ 9.6 \ data "стоп
pg_ctl -D "C: \ Program Files \ PostgreSQL \ 9.6 \ data" перезапуск
Другой способ:
- Открыть окно запуска с помощью
Winkey + R
- Тип
services.msc
- Поиск службы Postgres в зависимости от установленной версии.
- Нажмите «Остановить», «запустить» или перезапустить опцию обслуживания.
3. В Linux
Обновите и установите PostgreSQL 10.4
sudo apt-get update
sudo apt-get install postgresql-10.4
По умолчанию пользователь postgres не имеет пароля и, следовательно, может подключиться, только если запущен пользователем системы postgres. Следующая команда назначит его:
sudo -u postgres psql -c "ИЗМЕНИТЬ ПАРОЛЬ ПОЛЬЗОВАТЕЛЯ postgres 'postgres';"
sudo -u postgres psql -c "СОЗДАТЬ БАЗУ ДАННЫХ testdb;"
- Запустить сервер PostgreSQL
sudo service postgresql start
- Остановить сервер PostgreSQL:
sudo service postgresql stop
Нужен хороший инструмент с графическим интерфейсом для PostgreSQL в MacOS и Windows? TablePlus — это современный собственный инструмент с элегантным графическим интерфейсом, который позволяет одновременно управлять несколькими базами данных, такими как MySQL, PostgreSQL, SQLite, Microsoft SQL Server и другими.
Загрузить TablePlus для Mac . В любом случае это бесплатно!
Не на Mac? Загрузить TablePlus для Windows .
404 | Микро Фокус
Формируйте свою стратегию и трансформируйте гибридную ИТ-среду.
Помогите вам внедрить безопасность в цепочку создания стоимости ИТ и наладить сотрудничество между ИТ-подразделениями, приложениями и службами безопасности.
Помогите вам быстрее реагировать и получить конкурентное преимущество благодаря гибкости предприятия.
Ускорьте получение результатов гибридного облака с помощью услуг по консультированию, трансформации и внедрению.
Службы управления приложениями, которые позволяют поручить управление решениями экспертам, разбирающимся в вашей среде.
Услуги стратегического консалтинга для разработки вашей программы цифровой трансформации.
Полнофункциональное моделирование сценариев использования с предустановленными интеграциями в портфеле программного обеспечения Micro Focus, демонстрирующее реальный сценарий использования
Услуги экспертной аналитики безопасности, которые помогут вам быстро спроектировать, развернуть и проверить реализацию технологии безопасности Micro Focus.
Служба интеграции и управления услугами, которая оптимизирует доставку, гарантии и управление в условиях нескольких поставщиков.
Анализируйте большие данные с помощью аналитики в реальном времени и ищите неструктурированные данные.
Анализируйте большие данные с помощью аналитики в реальном времени и ищите неструктурированные данные.
Анализируйте большие данные с помощью аналитики в реальном времени и ищите неструктурированные данные.
Мобильные услуги, которые обеспечивают производительность и ускоряют вывод на рынок без ущерба для качества.
Анализируйте большие данные с помощью аналитики в реальном времени и ищите неструктурированные данные.
Комплексные услуги по работе с большими данными для продвижения вашего предприятия.
404 | Микро Фокус
Формируйте свою стратегию и трансформируйте гибридную ИТ-среду.
Помогите вам внедрить безопасность в цепочку создания стоимости ИТ и наладить сотрудничество между ИТ-подразделениями, приложениями и службами безопасности.
Помогите вам быстрее реагировать и получить конкурентное преимущество благодаря гибкости предприятия.
Ускорьте получение результатов гибридного облака с помощью услуг по консультированию, трансформации и внедрению.
Службы управления приложениями, которые позволяют поручить управление решениями экспертам, разбирающимся в вашей среде.
Услуги стратегического консалтинга для разработки вашей программы цифровой трансформации.
Полнофункциональное моделирование сценариев использования с предустановленными интеграциями в портфеле программного обеспечения Micro Focus, демонстрирующее реальный сценарий использования
Услуги экспертной аналитики безопасности, которые помогут вам быстро спроектировать, развернуть и проверить реализацию технологии безопасности Micro Focus.
Служба интеграции и управления услугами, которая оптимизирует доставку, гарантии и управление в условиях нескольких поставщиков.
Анализируйте большие данные с помощью аналитики в реальном времени и ищите неструктурированные данные.
Анализируйте большие данные с помощью аналитики в реальном времени и ищите неструктурированные данные.
Анализируйте большие данные с помощью аналитики в реальном времени и ищите неструктурированные данные.
Мобильные услуги, которые обеспечивают производительность и ускоряют вывод на рынок без ущерба для качества.
Анализируйте большие данные с помощью аналитики в реальном времени и ищите неструктурированные данные.
Комплексные услуги по работе с большими данными для продвижения вашего предприятия.
macos — Как запустить сервер PostgreSQL в Mac OS X?
Финальное обновление:
Я забыл запустить команду initdb
.
Выполнив эту команду
пс, доп. grep postgres
Я вижу, что postgres
не работает
> ps auxwww | grep postgres
remcat 1789 0.0 0.0 2434892 480 s000 R + 23:28 0: 00.00 grep postgres
Возникает вопрос:
Как запустить сервер PostgreSQL?
Обновление:
> pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start
запуск сервера
sh: /usr/local/var/postgres/server.log: нет такого файла или каталога
Обновление 2:
touch не удалось, поэтому я сделал это вместо:
> mkdir / usr / local / var / postgres
> vi / usr / local / var / postgres / server.бревно
> ls / usr / local / var / postgres /
server.log
Но когда я пытаюсь запустить сервер Ruby on Rails, я все еще вижу это:
Сервер работает на хосте «localhost» и принимает TCP / IP-соединения на порту 5432?
Обновление 3:
> pg_ctl -D / usr / local / var / postgres status
pg_ctl: сервер не работает
Обновление 4:
Я обнаружил, что не было ни одного файла pg_hba.conf (только файл pg_hba.conf.sample ), поэтому я изменил образец и переименовал его (чтобы удалить .sample). Вот содержание:
# Локальные подключения IPv4:
хост все все 127.0.0.1/32 доверяют
# Локальные подключения IPv6:
разместить все все :: 1/128 траст
Но я этого не понимаю:
> pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start
запуск сервера
> pg_ctl -D / usr / local / var / postgres статус
pg_ctl: сервер не работает
Также:
sudo find / -name postgresql.конф
найти: / dev / fd / 3: не каталог
найти: / dev / fd / 4: не каталог
Обновление 5:
sudo pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log start
Пароль:
pg_ctl: нельзя запускать от имени root
Пожалуйста, войдите (используя, например, "su") как (непривилегированный) пользователь, которому будет принадлежать серверный процесс.
Обновление 6:
Это кажется странным:
> egrep 'прослушивание | порт' /usr/local/var/postgres/postgresql.conf
egrep: / usr / local / var / postgres / postgresql.conf: нет такого файла или каталога
Хотя я сделал это:
> sudo find / -name "* postgresql.conf *"
найти: / dev / fd / 3: не каталог
найти: / dev / fd / 4: не каталог
/usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample
/usr/share/postgresql/postgresql.conf.sample
Итак, я сделал это:
egrep 'прослушивание | порт' /usr/local/Cellar/postgresql/9.0.4/share/postgresql/postgresql.conf.sample
#listen_addresses = 'localhost' # какой IP-адрес (а) слушать;
#port = 5432 # (для изменения требуется перезагрузка)
# поддерживается операционной системой:
#% r = удаленный хост и порт
Итак, я попробовал это:
> cp / usr / local / Cellar / postgresql / 9.0.4 / доля / 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
Я все еще получаю то же «Сервер работает?» сообщение.
centos — Не удается запустить Postgresql 12 после pg_basebackup (репликация)
У меня есть два сервера БД, и я пытаюсь сделать репликацию Master-Slave для моего PostgreSQL с расширением TimescaleDB.
Я прошел через этот процесс:
[Оба] Установить PostgreSQL 12 на CentOS 7.
[Оба] Инициализировать БД и установить TimescaleDB. (следовал инструкциям на официальном сайте)
[Оба] У всех работает
firewall-cmd
,postgresql.conf
иpg_hba.conf
.[Master] Создать исходную базу данных.
[Slave] остановить PostgreSQL, удалить все в
/ var / lib / pgsql / 12 / data
иpg_basebackup
из Master.(я использовал команду:
pg_basebackup -h [MASTER_DB_IP] -D / var / lib / pgsql / 12 / data -U [REP_USER] -vP -W
)[Slave] установить
hot_standby = на
и создатьrecovery.conf
[Slave] запустить PostgreSQL для проверки работы репликации.
[Slave] Эта ошибка возникает, и PostgreSQL не запускается.
- Тема: Начался запуск службы postgresql-12.
- Определено: systemd
- Поддержка: http: // списки.freedesktop.org/mailman/listinfo/systemd-devel
-
- Начался запуск модуля postgresql-12.service.
02 декабря 17:53:40 localhost.localdomain postmaster [10439]: 2020-12-02 17: 53: 40.116 KST [10439] LOG: запуск PostgreSQL 12.5 на x86_64-pc-linux-gnu, скомпилированный gcc (GCC) 4.8 .5 20150623 (красный
02 декабря 17:53:40 localhost.localdomain postmaster [10439]: 2020-12-02 17: 53: 40.116 KST [10439] LOG: прослушивание IPv4-адреса «0.0.0.0», порт 5432
2 декабря, 17:53:40 localhost.localdomain postmaster [10439]: 2020-12-02 17:53:40.116 KST [10439] LOG: прослушивание IPv6-адреса "::", порт 5432
02 декабря 17:53:40 localhost.localdomain postmaster [10439]: 2020-12-02 17: 53: 40.122 KST [10439] ЖУРНАЛ: прослушивание сокета Unix "/var/run/postgresql/.s.PGSQL.5432"
02 декабря 17:53:40 localhost.localdomain postmaster [10439]: 2020-12-02 17: 53: 40.130 KST [10439] ЖУРНАЛ: прослушивание сокета Unix "/tmp/.s.PGSQL.5432"
02 декабря 17:53:40 localhost.localdomain postmaster [10439]: 2020-12-02 17: 53: 40.142 KST [10439] LOG: перенаправление вывода журнала в процесс сборщика журналов
02 декабря 17:53:40 localhost.localdomain postmaster [10439]: 2020-12-02 17: 53: 40.142 KST [10439] ПОДСКАЗКА: будущий вывод журнала будет отображаться в каталоге "log".
02 декабря 17:53:42 localhost.localdomain systemd [1]: postgresql-12.service: основной процесс завершен, код = exited, status = 1 / FAILURE
02 декабря 17:53:42 localhost.localdomain systemd [1]: не удалось запустить сервер базы данных PostgreSQL 12.
Насколько мне известно, это последний шаг репликации. Но PostgreSQL не запускается после всех настроек.
Пожалуйста, задавайте мне любые подробные вопросы.
Заранее благодарю.
запускает postgresql и pgadmin в Windows без установки
запускает postgresql и pgadmin в Windows без установки — qaruПрисоединяйтесь к Stack Overflow , чтобы учиться, делиться знаниями и строить свою карьеру.
Спросил
Просмотрено 34k раз
Как запустить PostgreSQL и pgAdmin III в Windows без установки.У меня нет прав администратора в системе. поэтому мне нужно запустить приложение без установки. Как я могу это сделать?
Создан 18 окт.
пользователь 326311731711 золотой знак66 серебряных знаков1212 бронзовых знаков
1Загрузите ZIP-файл с https: // www.enterpriseisedb.com/products-services-training/pgbindownload
Распакуйте архив в каталог по вашему выбору (архив создается таким образом, что при его распаковке создается каталог
pgsql
со всем остальным, что ниже)Запустите
initdb
(его можно найти в подкаталогеpgsql \ bin
)initdb -D c: \ Users \ Arthur \ pgdata -U postgres -W -E UTF8 -A scram-sha-256
Это создаст «каталог данных» postgres (также известный как «кластер») в
c: \ Users \ Arthur \ pgdata
.Вы должны убедиться, что пользователь, выполняющий эту команду, имеет полные права чтения / записи в этом каталоге.-U postgres
создает суперпользователя, посколькуpostgres
,-W
запросит пароль суперпользователя,-E UTF8
создаст базу данных с кодировкойUTF-8
и-A scram- sha-256
включает аутентификацию по паролю.Чтобы запустить Postgres, запустите:
pg_ctl -D c: \ Users \ Arthur \ pgdata -l начало файла журнала
этот должен выполнить (!) Как пользователь, запустивший
initdb
, чтобы избежать каких-либо проблем с доступом к каталогу данных.Чтобы выключить Postgres, запустите:
pg_ctl -D c: \ Users \ Arthur \ pgdata stop
psql.exe
(клиент командной строки) находится в каталогеbin
. Начиная с Postgres 9.6 исполняемый файл pgAdminpgAdmin4.exe
находится в подкаталоге«pgAdmin 4 \ bin»
.При необходимости создайте службу Windows для автоматического запуска Postgres ( необходимо, чтобы запускался под учетной записью администратора Windows)
регистр pg_ctl -N postgresql -D c: \ Users \ Arthur \ pgdata
Создан 18 окт.
a_horse_with_no_namea_horse_with_no_name433k7575 золотых знаков669669 серебряных знаков743743 бронзовых знака
9Спасибо.Это сработало для меня. Но при запуске psql.exe
возникала ошибка.Ошибка: «psql: FATAL: роль [пользователь] не существует».
Чтобы решить эту проблему, я выполнил следующие шаги:
- Находиться по тому же пути к папке (где у вас есть initdb.exe), т.е. исходная папка / pgsql / bin
- Запустите «psql -U postgres». Будет запрошен пароль.
- Теперь введите пароль, который был установлен во время инициализации postgres. Это откроет командную строку psql.
Надеюсь, это поможет.. 🙂
Создан 30 июл.
Я попробовал вышеуказанный метод, он работает нормально, но когда я попытался подключить его через JDBC, я получил
«Тип аутентификации 10 не поддерживается.Убедитесь, что вы настроили файл pg_hba.conf для включения IP-адреса клиента или подсети, и что в ней используется схема аутентификации, поддерживаемая драйвер »
Это происходит потому, что scram-sha-256 имеет некоторую проблему (см. Здесь), я не мог понять подробно, поэтому я изменил его на md5 , все начало работать плавно. Надеюсь, что это поможет
. \ Initdb -D D: \ database \ dbdata -U postgres -W -E UTF8 -A md5
Создан 09 авг.