Psql ошибка не удалось подключиться к серверу нет такого файла или каталога

PostgreSQL позиционирует себя как наиболее продвинутую платформу приложений базы данных с открытым исходным кодом, и Debian Linux, безусловно, имеет

PostgreSQL позиционирует себя как наиболее продвинутую платформу приложений базы данных с открытым исходным кодом, и Debian Linux, безусловно, имеет множество пакетов, которые делают его еще более сложным. Вы также можете найти множество пакетов для PostgreSQL, если вы работаете с Ubuntu Server или любым из различных спинов Ubuntu, поскольку они основаны на ядре Debian. Этот уровень сложности и развития делает предупреждения «невозможно подключиться к серверу» и «нет такого файла или каталога» гораздо более раздражающим.

К счастью, это обычно простые случаи проблем с разрешениями, вызванные тем, что PostgreSQL хочет, чтобы пользователь с именем postgres держал эти каталоги. Используя простой трюк командной строки, вы можете исправить это практически мгновенно. Однако вы должны заранее пройти несколько базовых диагностических проверок, просто чтобы убедиться, что это действительно проблема, с которой вы столкнулись.

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

Сначала попробуйте перезапустить систему PostgreSQL вручную. Иногда этого достаточно, чтобы что-то исправить, а если нет, то вы, по крайней мере, получите сообщение об ошибке для работы. Скорее всего, вы просто перезапустите систему, введя команду psql от имени пользователя postgres.

Вы можете обнаружить, что это все прояснило. В противном случае вы можете получить строку с надписью «psql: не удалось подключиться к серверу: нет такого файла или каталога», что означает, что у вас проблемы с правами доступа. Если вы получите это сообщение об ошибке, вы также получите другой текст.

Проверьте статус службы, если вы получили это сообщение, чтобы убедиться, что модули загружены. Они должны быть, но если это не так, вы можете перезагрузить. Если вы получили сообщение «Loaded: загружен (/lib/systemd/system/postgresql.service; enabled)», то они работают. Пытаться перезапуск службы sudo после перезапуска просто сделать краткий перезапуск и посмотреть, исправит ли это что-нибудь. Обычно это не так, но это может стоить попробовать в зависимости.


Предполагая, что это не помогло, загляните в журнал PostgreSQL, чтобы найти ошибки. В маловероятном случае, если вы обнаружите что-то об ошибках пакета, вы можете пропустить один из модулей SQL. Обычно это не является причиной этих проблем, но, конечно, не повредит хотя бы взглянуть. Скорее всего, вы действительно столкнетесь с чем-то, что предупреждает вас о том, что «разрешения должны быть u = rwx (0700)» и

что «каталог данных« /var/lib/postgresql/9.6/main »имеет доступ к группе или миру», хотя вы можете увидеть другой номер версии в зависимости от того, какой сервер SQL вы используете.

Это связано с тем, что Debian и подобные дистрибутивы ожидают, что пользователь и группа postgres контролируют эти каталоги с разрешениями 0700 и всеми файлами с разрешениями 0600 в целях безопасности. Все, что вам нужно сделать, это запустить следующую команду в терминале, чтобы исправить разрешения:

sudo chown -R postgres: postgres /var/lib/postgresql/9.6/ sudo chmod -R u = rwX, go = /var/lib/postgresql/9.6/

Имейте в виду, что это должен быть верхний регистр X, а не более распространенный нижний регистр x, с которым вы, вероятно, больше знакомы из-за особого способа установки этих опций разрешения доступа к файлам. Хотя для этого вам нужен root-доступ, включение этих двух меток sudo должно быть более чем достаточным, чтобы дать себе соответствующие разрешения при работе от имени обычного пользователя. Это важно, так как Ubuntu и различные реализации Linux были выделены из Ubuntu и хэшировали основную корневую учетную запись, поэтому вам нужно действовать таким образом.

После завершения этой команды вы можете перезапустить службу, перезапуск службы sudo после перезапуска из терминала, и на этот раз у вас не должно быть ошибок. Если вы посмотрите на журнал, то предупреждений о проблемах с разрешениями больше не должно быть.

Это ошибка, которая возникает в результате довольно специфических условий, поэтому вы не должны испытывать ее снова после того, как исправили ее в первый раз, при условии, что вы не пытаетесь вручную что-либо делать, включая манипулирование разрешениями для каталогов PostgreSQL. Там нет ситуации, где это действительно должно быть необходимо в любом случае, кроме исправления этой проблемы в первую очередь.

Здравствуйте!
Пожалуйста, помогите разобраться.
Manjaro Linux. По учебнику для Linux были команды через art-get. Но установка прошла через sudo.
Вроде бы, всё нормально

Код

(venv) [leto@leto-virtualbox workout]$ psql --version
psql (PostgreSQL) 13.4

дальше

Код

(venv) [leto@leto-virtualbox workout]$ sudo su - postgres
[postgres@leto-virtualbox ~]$ psql
psql: ошибка: не удалось подключиться к серверу: Нет такого файла или каталога
        Он действительно работает локально и принимает
        соединения через Unix-сокет "/run/postgresql/.s.PGSQL.5432"?

Неправильно, что в приложении?

Выше была установка в терминале приложения, ниже вариант в терминале Manjaro:

И, наверное, получилась каша на каше? Потому, что тут я ничего не понимаю.

Код

leto@leto-virtualbox ~]$ sudo su postgres -l # or sudo -u postgres -i
[postgres@leto-virtualbox ~]$ initdb --locale $LANG -E UTF8 -D '/var/lib/postgres/data/'
Файлы, относящиеся к этой СУБД, будут принадлежать пользователю "postgres".
От его имени также будет запускаться процесс сервера.

Кластер баз данных будет инициализирован с локалью "ru_RU.UTF-8".
Выбрана конфигурация текстового поиска по умолчанию "russian".

Контроль целостности страниц данных отключён.

initdb: ошибка: каталог "/var/lib/postgres/data" существует, но он не пуст
Если вы хотите создать новую систему баз данных,
удалите или очистите каталог "/var/lib/postgres/data",
либо при запуске initdb в качестве пути укажите не "/var/lib/postgres/data".
[postgres@leto-virtualbox ~]$ exit
выход
[leto@leto-virtualbox ~]$ sudo su - postgres
[postgres@leto-virtualbox ~]$ psql
psql: ошибка: не удалось подключиться к серверу: Нет такого файла или каталога
  Он действительно работает локально и принимает
  соединения через Unix-сокет "/run/postgresql/.s.PGSQL.5432"?
[postgres@leto-virtualbox ~]$

Добавлено через 5 часов 43 минуты
Всё было сделано, как в этой статье

https://infoit.com.ua/linux/ka… anjaro-20/

========================

Ни у кого этой проблемы не было?

Пробую ещё так, но не пойму какой пароль запрашивает — при установке не было запроса .

Код

[leto@leto-virtualbox workout]$ sudo su - postgres
[sudo] пароль для leto: 
[postgres@leto-virtualbox ~]$ psql
psql: ошибка: не удалось подключиться к серверу: Нет такого файла или каталога
        Он действительно работает локально и принимает
        соединения через Unix-сокет "/run/postgresql/.s.PGSQL.5432"?
[postgres@leto-virtualbox ~]$ sudo psql

Мы полагаем, что ваш системный администратор изложил вам основы
безопасности. Как правило, всё сводится к трём следующим правилам:

    №1) Уважайте частную жизнь других.
    №2) Думайте, прежде что-то вводить.
    №3) С большой властью приходит большая ответственность.

[sudo] пароль для postgres: 
Попробуйте ещё раз.
[sudo] пароль для postgres: 
Попробуйте ещё раз.
[sudo] пароль для postgres: 
sudo: 3 incorrect password attempts
[postgres@leto-virtualbox ~]$

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

#database #postgresql #ubuntu #unix #psql

#База данных #postgresql #ubuntu #unix #psql

Вопрос:

Со вчерашнего дня у меня возникает ошибка при запуске psql в Ubuntu 20.04 — PostgreSQL 12. Вот ошибка:

 psql: error: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
 

Я уже видел много ответов на этот вопрос в Интернете, но никто не работал…

Это произошло, когда я перезапустил postgresql после установки phppgadmin, вот последние журналы :

 2021-01-01 21:37:27.981 UTC [1071608] LOG:  received fast shutdown request
2021-01-01 21:37:27.982 UTC [1071608] LOG:  aborting any active transactions
2021-01-01 21:37:27.982 UTC [434049] thegabdoosan@ephedia FATAL:  terminating connection due to administrator command
2021-01-01 21:37:27.982 UTC [1514704] thegabdoosan@ephedia_web FATAL:  terminating connection due to administrator command
2021-01-01 21:37:27.984 UTC [1231171] thegabdoosan@ephedia FATAL:  terminating connection due to administrator command
2021-01-01 21:37:27.986 UTC [1231170] thegabdoosan@ephedia FATAL:  terminating connection due to administrator command
2021-01-01 21:37:27.988 UTC [899543] thegabdoosan@ephedia FATAL:  terminating connection due to administrator command
2021-01-01 21:37:27.990 UTC [899542] thegabdoosan@ephedia FATAL:  terminating connection due to administrator command
2021-01-01 21:37:27.992 UTC [899541] thegabdoosan@ephedia FATAL:  terminating connection due to administrator command
2021-01-01 21:37:27.994 UTC [899540] thegabdoosan@ephedia FATAL:  terminating connection due to administrator command
2021-01-01 21:37:27.996 UTC [899539] thegabdoosan@ephedia FATAL:  terminating connection due to administrator command
2021-01-01 21:37:27.998 UTC [899538] thegabdoosan@ephedia FATAL:  terminating connection due to administrator command
2021-01-01 21:37:27.999 UTC [899537] thegabdoosan@ephedia FATAL:  terminating connection due to administrator command
2021-01-01 21:37:28.001 UTC [899536] thegabdoosan@ephedia FATAL:  terminating connection due to administrator command
2021-01-01 21:37:28.009 UTC [1071608] LOG:  background worker "logical replication launcher" (PID 1071615) exited with exit code 1
2021-01-01 21:37:28.010 UTC [1071610] LOG:  shutting down
2021-01-01 21:37:28.030 UTC [1071608] LOG:  database system is shut down
 

Я не вижу ничего странного

  • pg_hba.conf :
 # Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             192.168.1.106/24        md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5

 
  • postgresql.conf
 # - Connection Settings -

listen_addresses = '*'                  # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 5432                             # (change requires restart)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
unix_socket_directories = '/var/run/postgresql' # comma-separated list of directories
 

Когда я пытаюсь запустить psql -h localhost , у меня появляется другая ошибка :

 psql: error: 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?
 

Когда я запускаю sudo systemctl status postgresql :

 ● postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2021-01-02 09:10:59 UTC; 18min ago
    Process: 1750585 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 1750585 (code=exited, status=0/SUCCESS)

janv. 02 09:10:59 vps-d989390a systemd[1]: Starting PostgreSQL RDBMS...
janv. 02 09:10:59 vps-d989390a systemd[1]: Finished PostgreSQL RDBMS.
 

Когда я запускаю ls /var/run/postgresql/ -a :

 0 drwxrwsr-x  3 postgres postgres   80 janv.  1 22:53 .
0 drwxr-xr-x 32 root     root     1060 janv.  2 09:09 ..
0 drwxr-s---  2 postgres postgres   40 janv.  1 21:37 12-main.pg_stat_tmp
0 lrwxrwxrwx  1 root     postgres   18 janv.  1 22:53 .s.PGSQL.5432 -> /tmp/.s.PGSQL.5432
 

Когда я запускаю sudo pg_ctlcluster 12 main start :

 Job for postgresql@12-main.service failed because the service did not take the steps required by its unit configuration.
See "systemctl status postgresql@12-main.service" and "journalctl -xe" for details.
 

и pg_lsclusters :

 Ver Cluster Port Status Owner     Data directory              Log file
12  main    5432 down   <unknown> /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log
 

Когда я запускаю sudo systemctl status postgresql@12-main.service :

 ● postgresql@12-main.service - PostgreSQL Cluster 12-main
     Loaded: loaded (/lib/systemd/system/postgresql@.service; enabled; vendor preset: enabled)
     Active: failed (Result: protocol) since Sat 2021-01-02 13:21:05 UTC; 3h 50min ago
    Process: 705 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 12-main start (code=exited, status=1/FAILURE)

Jan 02 13:21:04 vps-d989390a systemd[1]: Starting PostgreSQL Cluster 12-main...
Jan 02 13:21:05 vps-d989390a postgresql@12-main[723]: Error: Could not open logfile /var/log/postgresql/postgresql-12-main.log
Jan 02 13:21:05 vps-d989390a postgresql@12-main[705]: Error: /usr/lib/postgresql/12/bin/pg_ctl /usr/lib/postgresql/12/bin/pg_ctl start -D /var/lib/postgresql/12/main -l /var/log/postgresql/postgresql-12>
Jan 02 13:21:05 vps-d989390a systemd[1]: postgresql@12-main.service: Can't open PID file /run/postgresql/12-main.pid (yet?) after start: Operation not permitted
Jan 02 13:21:05 vps-d989390a systemd[1]: postgresql@12-main.service: Failed with result 'protocol'.
Jan 02 13:21:05 vps-d989390a systemd[1]: Failed to start PostgreSQL Cluster 12-main.
 

и вот последние 35 строк sudo journalctl -xe , когда я запускаю sudo systemctl start postgresql@12-main.service :
https://mystb.in/TillDimensionIntellectual.yaml

/etc/init.d/postgresql вывод: https://mystb.in/AmountsAlexanderExtreme.bash

Я также отключил ufw

Если я непреднамеренно установлю postgresql, потеряю ли я свои базы данных?

Комментарии:

1. Что это systemctl status postgresql@12-main.service показывает? А также journalctl -xe после попытки запуска? Добавьте эту информацию в свой вопрос.

2. Я добавил это! 👌

3. Похоже, это какая-то комбинация ошибок разрешений ( Could not open logfile /var/log/postgresql/postgresql-12-main.log ) и неправильного каталога ( Can't open PID file /run/postgresql/12-main.pid ). Последнее должно быть /var/run/postgresql/12-main.pid . Как вы устанавливали пакеты? У вас есть более одного типа установки на компьютере?

4. Я установил пакеты с помощью apt-get. И я думаю, что у меня не более одного типа установки на компьютере:/ Если это ошибка разрешений, не могу ли я исправить это с помощью (а) командной строки (ов)?

5. Я хотел получить содержимое (то, что находится внутри) /etc/init.d/postgresql .

Ответ №1:

Расположение (или обработка) файла блокировки, похоже, изменилось (между версиями?). Я исправил это, отредактировав startupfile (который выполняется с помощью setuid root): sudo vi /etc/init.d/postgresql


 # Parse command line parameters.

case $1 in
  start)
        echo -n "Starting PostgreSQL: "
        test x"$OOM_ADJ" != x amp;amp; echo "$OOM_ADJ" > /proc/self/oom_adj

        #################################
        # FIX: Directory Lockfile must be writable by postgres
        mkdir -p /var/run/postgresql
        chown postgres.postgres /var/run/postgresql
        ##################################

        #echo su - $PGUSER -c "$DAEMON -D '$PGDATA' amp;"
        su - $PGUSER -c "$DAEMON -D '$PGDATA' amp;" >>$PGLOG 2>amp;1
        echo "ok"
        ;;
  stop)
 

Кстати: unix-domain-socket иногда тоже находится в этом каталоге. (раньше был /tmp/ )

BTW2: я поместил его в сценарий запуска, потому /var/run/ что при перезагрузке он стирается.

BTW3: используйте на свой страх и риск!

Комментарии:

1. Уверен, что это не так. У меня те же настройки, что и у @TheGabDooSan, и я могу запустить Postgres 12. Также приведенный выше не postgresql является файлом инициализации, который поставляется с пакетами Ubuntu.

2. @AdrianKlaver Это правильно. Это более старая версия. (Я устанавливаю из исходного кода)

3. К сожалению, это не так, как настройка @TheGabDooSan, и поэтому она не применяется.

Как и некоторые другие, я получаю эту ошибку, когда запускаю rake db: переношу в свой проект или даже пытаюсь выполнить большинство задач базы данных для Ruby on Rails 3.2 приложения.

PGError (не удалось подключиться к серверу: нет такого файла или каталога. сервер, работающий локально, и прием соединений в сокетном домене Unix «/tmp/.s.PGSQL.5432»?

Я установил PostgreSQL с Homebrew давным-давно и после попытки установки MongoDB моя установка PostgreSQL никогда не была такой же. Я запускаю OS X v10.6 Snow Leopard.

Что не так и как лучше понять, как PostgreSQL и должен быть настроен на моем Mac?

До сих пор (я думаю) это говорит мне, что PostgreSQL не работает (?).

ps -aef|grep postgres                                                                                                   ([email protected]) (develop) ✗
  501 17604 11329   0   0:00.00 ttys001    0:00.00 grep postgres

Но это говорит мне, что PostgreSQL работает?

✪ launchctl load -w /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist                                                        (ruby-1.9.2-p136) 
homebrew.mxcl.postgresql: Already loaded

Как это исправить? что я не вижу?

PS: ~/Library/LaunchAgents содержит два файла .plist PostgreSQL. Я не уверен, что это важно.

org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist

Я попробовал следующее и получил результат, как показано ниже.

$psql -p 5432 -h localhost

psql: 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?
could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (fe80::1) and accepting
    TCP/IP connections on port 5432?

Я читал, так как это происходит потому, что OS X устанавливает собственную версию PostgreSQL, а Homebrew устанавливает другую версию в другом месте, а команды PostgreSQL ищут в каталоге /tmp/. Вам нужно будет искать больше в Stack Overflow, но в основном вы symlink PostgreSQL, так что все, что ищет в этом пути tmp, действительно находит реальный путь, если это имеет смысл.

Это ссылка, в которой я нашел еще несколько вещей, чтобы попробовать, в частности, делать символическую ссылку в соответствии с выше, Mac OSX Lion Postgres не принимает подключения на /tmp/.s. PGSQL.5432. Я все еще хочу, чтобы кто-то собрал достойное объяснение концепций установки PostgreSQL на OS X и почему все это так сложно.

Последние сведения, помогающие устранить неполадки:

$ which psql // This tells you which PostgreSQL you are using when you run $ psql. 

Затем запустите:

$ echo $PATH

Ключевое значение, которое необходимо учитывать, следующее:

Убедитесь, что запись пути для копии PostgreSQL, которую вы хотите запустить COMES, до пути к OS X-системе PostgreSQL.

Это основное требование, которое решает, какой PostgreSQL запускается, и это то, что мне говорят, приводит к большинству этих проблем.

Понравилась статья? Поделить с друзьями:
  • Psql error could not connect to server no such file or directory
  • Psql error could not connect to server connection refused
  • Psn ошибка 80023017
  • Proxy error general error
  • Proxy error could not proxy request react