Error connecting to the server fatal postgresql

Не удается подключиться к postgresql через порт 5432

Я установил стек Bitnami Django, который включал PostgreSQL 8.4.

Когда я бегу psql -U postgres Я получаю следующую ошибку:

PG определенно работает и pg_hba.conf файл выглядит так:

«Доказательство», что pg работает:

28 ответов

Эта проблема возникает из-за установки postgres пакет без номера версии. Хотя postgres будет установлена ​​и будет правильной версией, скрипт для настройки кластера будет работать некорректно; это проблема упаковки.

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

Сначала удалите старую установку postgres. В настоящее время проблема заключается в 9.1, поэтому я буду считать, что это то, что вы установили

Теперь просто переустановите

Запишите название пакета с номером версии. НТН.

The error message refers to a Unix-domain socket, so you need to tweak your netstat invocation to not exclude them. So try it without the option -t :

I would guess that the server is actually listening on the socket /tmp/.s.PGSQL.5432 rather than the /var/run/postgresql/.s.PGSQL.5432 that your client is attempting to connect to. This is a typical problem when using hand-compiled or third-party PostgreSQL packages on Debian or Ubuntu, because the source default for the Unix-domain socket directory is /tmp but the Debian packaging changes it to /var/run/postgresql ,

Возможные обходные пути:

  • Use the clients supplied by your third-party package (call /opt/djangostack-1.3-0/postgresql/bin/psql ). Возможно, удалите все пакеты, поставляемые с Ubuntu (это может быть сложно из-за других обратных зависимостей).
  • Исправьте каталог сокетов стороннего пакета, чтобы он был совместим с Debian/Ubuntu.
  • использование -H localhost to connect via TCP/IP instead.
  • использование -h /tmp or equivalent PGHOST setting to point to the right directory.
  • Не используйте сторонние пакеты.

Это работает для меня:

Включить или добавить:

Перезапустите ядро ​​базы данных:

Также вы можете проверить файл pg_hba.conf

И добавьте адрес своей сети или хоста:

Ты можешь использовать psql -U postgres -h localhost заставить соединение происходить через TCP вместо доменных сокетов UNIX; ваш netstat вывод показывает, что сервер PostgreSQL прослушивает порт 5432 локального хоста.

Вы можете узнать, какой локальный сокет UNIX используется сервером PostgrSQL, используя другой вызов netstat:

В любом случае, интерфейсы, на которых слушает сервер PostgreSQL, настроены в postgresql.conf ,

Просто создайте мягкую ссылку, подобную этой:

Я заставляю это работать этим:

Выберите предпочитаемые локали и запустите

(9.5 — это моя версия postgresql)

и тогда это работает!

Если ваша служба Postgres запущена и работает без каких-либо ошибок или при запуске службы Postgres нет ошибок, но вы все еще получаете указанную ошибку, выполните следующие действия.

Шаг 1: Бег pg_lsclusters выведет список всех кластеров postgres, работающих на вашем устройстве

Скорее всего, статус будет ниже в вашем случае и сервис Postgres

Читайте также:  Как установить драйвер nvidia на linux opensuse

Шаг 2: перезапустите pg_ctlcluster

Шаг 3: Шаг 2 не удался и выдал ошибку

Если этот процесс не будет успешным, он выдаст ошибку. Вы можете увидеть журнал ошибок на /var/log/postgresql/postgresql-9.6-main.log

Моя ошибка была:

Шаг 4: проверьте право собственности на postgres

Удостоверься что postgres является владельцем /var/lib/postgresql/version_no/main

Если нет, запустите

Шаг 5: Проверьте, что пользователь postgres принадлежит к группе пользователей ssl-cert

Оказалось, что я ошибочно удалил пользователя Postgres из ssl-cert группа. Запустите приведенный ниже код, чтобы исправить проблему группы пользователей и исправить разрешения

Мне пришлось скомпилировать PostgreSQL 8.1 на Debian Squeeze, потому что я использую Project Open, который основан на OpenACS и не будет работать на более поздних версиях PostgreSQL.

Конфигурация компиляции по умолчанию помещает unix_socket в /tmp , но Project Open, который опирается на PostgreSQL, не будет работать, потому что он ищет unix_socket в /var/run/postgresql ,

Есть настройка в postgresql.conf установить местоположение розетки. Моя проблема заключалась в том, что либо я мог установить для /tmp а также psql работал, но проект не открыт, или я мог бы установить его для /var/run/postgresql а также psql не будет работать, но проект открыт.

Одним из решений этой проблемы является установка сокета для /var/run/postgresql а потом беги psql по предложению Петра, как:

Это выполняется локально с использованием локальных разрешений. Единственным недостатком является то, что он больше печатает, чем просто «psql».

Другое предложение, которое сделал кто-то, состояло в том, чтобы создать символическую связь между двумя местоположениями. Это также сработало, но ссылка исчезла после перезагрузки. Возможно, проще использовать аргумент -h, однако я создал символическую ссылку из скрипта PostgreSQL в /etc/init.d , Я разместил символическую команду создания ссылки в разделе «Пуск». Конечно, когда я запускаю команду остановки и запуска или перезапуска, она будет пытаться воссоздать существующую символическую ссылку, но, кроме предупреждающего сообщения, в этом нет никакого вреда.

В моем случае вместо:

и явно установить unix_socket в /var/run/postgresql/.s.PGSQL.5432 в postgresql.conf ,

Я обнаружил, что удаление Postgres звучит неубедительно. Это помогает решить мою проблему:

Запустите сервер postgres:

Убедитесь, что сервер запускается при загрузке:

Подробную информацию можно найти на сайте DigitalOcean здесь.

Решение:

и это. (9.3 — это моя текущая версия PostgreSQL. Напишите свою версию!)

В моем случае это было вызвано опечаткой, которую я сделал при редактировании /etc/postgresql/9.5/main/pg_hba.conf

Но MD5 должен был быть в нижнем регистре md5 :

Я не смог решить эту проблему с моим сервером postgres-9.5. После 3 дней нулевого прогресса, пробуя каждую перестановку исправлений на этом и других сайтах, я решил переустановить сервер и потерять 5 дней работы. Но я повторил проблему на новом экземпляре. Это может дать некоторое представление о том, как это исправить, прежде чем использовать катастрофический подход, который я сделал.

Во-первых, отключите все параметры ведения журнала в postgresql.conf. Это раздел:

Закомментируйте все в этом разделе. Затем перезапустите сервис.

При перезапуске используйте /etc/init.d/postgresql start или же restart Я нашел полезным находиться в режиме суперпользователя при перезапуске. У меня было открыто окно x только для этой операции. Вы можете установить этот режим суперпользователя с помощью sudo -i ,

Убедитесь, что к серверу можно подключиться с помощью этой простой команды: psql -l -U postgres

Если это не помогает, то подумайте:

Я менял владельца многих папок, пытаясь найти решение. Я знал, что я, вероятно, буду пытаться вернуть владельцы этих папок и chmod еще 2 дня. Если вы уже перепутали владельцев этих папок и не хотите полностью очищать свой сервер, начните отслеживать настройки всех затронутых папок, чтобы вернуть их в исходное состояние. Возможно, вы захотите попробовать выполнить параллельную установку в другой системе и систематически проверять владение и настройки всех папок. Утомительно, но вы можете получить доступ к своим данным.

Получив доступ, систематически меняйте каждую соответствующую строку в # ERROR REPORTING AND LOGGING раздел postgresql.conf файл. Перезапустите и проверьте. Я обнаружил, что папка по умолчанию для журналов вызывает сбой. Я специально закомментировал log_directory , Папка по умолчанию, в которую система сбрасывает журналы, /var/log/postgresql ,

Читайте также:  Check serial ports linux

Ответ , получивший наибольшее количество голосов , даже отдаленно неверен, потому что вы можете видеть в вопросе, что сервер работает на ожидаемом порту (он показывает это с помощью netstat).

Но по этим причинам это решение плохое и небезопасное , даже если сервер не работает на порту 5432:

Что ты здесь делаешь, когда говоришь —purge вы удаляете файл конфигурации для PostgreSQL ((а также все данные с базой данных. Возможно, вы даже не видите предупреждение об этом, но это предупреждение просто для того, чтобы показать вам сейчас,

Удаление пакета сервера PostgreSQL оставит существующие кластеры баз данных нетронутыми, т. е. их каталоги конфигурации, данных и журналов не будут удалены. При очистке пакета каталоги могут быть удалены. Удалить каталоги PostgreSQL при очистке пакета? [подскажите да или нет]

Когда вы добавляете его снова, PostgreSQL переустанавливает его на номер порта, который не занят (который может быть тем номером порта, который вы ожидаете). Прежде чем вы даже попробуете это решение , вам нужно ответить на несколько вопросов в том же духе:

  • Нужно ли мне несколько версий PostgreSQL на моей машине?
  • Нужна ли мне более старая версия PostgreSQL?
  • Что я хочу, чтобы произошло, когда я и есть более новая версия?

В настоящее время, когда вы используете Ubuntu (и любой вариант Debian), новая версия PostgreSQL устанавливается вместе со старой копией, а номер порта в новой копии равен номеру порта старой копии + 1. Таким образом, вы можете просто запустить его, увеличьте номер порта в вашем клиенте, и вы получите новую установку! И у вас есть старая установка, на которую можно вернуться — это безопасно!

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

Не устанавливайте определенную версию PostgreSQL. Всегда устанавливайте только postgresql . Если вы устанавливаете конкретную версию, то при dist-upgrade ваша версия просто останется на вашем компьютере навсегда без обновлений. В репозитории больше не будет исправлений безопасности для старой версии (которую они не поддерживают). Это всегда должно быть неоптимально для получения более новой версии, которую они поддерживают, работающей на другом номере порта.

Источник

Common PostgreSQL Error Messages and Possible Solutions

Below is a resource I’ve put together for newer PostgreSQL database users. Listed are some of the most common error messages you may encounter. While the error messages do in fact tell you exactly what is causing the problem, I find that users often don’t know what next steps to take in resolving the issue.

If you there is a common error you would like me to include in this list or you find anything inaccurate on this page, please drop me an E-mail at info@revsys.com.

List of Errors

Error: psql: FATAL: database «root» does not exist

Common Cause: A database named ‘root’ does not exist on your system

This error trips up new PostgreSQL users quite often. When you simply run psql from the command line it, by default, attempts to log you into a database with the same name as your current Unix user name. In this case that is ‘root’, but it could be ‘postgres’, or ‘bob’.

If you are setting up your database for the first time, you will need to become the PostgreSQL user ( typically ‘postgres’ ) which can be accomplished by either:

  • logging in as that user
  • su ‘ing to root and as root su ‘ing to the postgres user
Читайте также:  Text to audio linux

Once you are the postgres user you will need to setup one or more databases and some users. See the following articles for more information on this:

  • Common PostgreSQL Problem this blog post describes this error in more detail
  • Database Roles and Privileges The official PostgreSQL documentation on setting up users and access permissions
  • Managing Databases The official docs on creating and maintaining databases

Error: 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»?

Common Cause: The postmaster or PostgreSQL’s server daemon process is not running.

Typically this error means PostgreSQL is not currently running on the system you are logged into. You will need to start the daemon, which is typically done through your distribution’s init system.

The easiest way to determine if PostgreSQL is running is to look for it using ps . For example when I run the command on my Fedora system:

I see the following processes:

Which as you can see means PostgreSQL is running on my local system. If we had received no results or just the final result line then we would know for certain that it is not running on this system.

Error: psql: could not connect to server: Connection refused Is the server running on host «192.168.0.1» and accepting TCP/IP connections on port 5432?

Common Cause: The postmaster or PostgreSQL’s server daemon process is not running or configured incorrectly.

When you receive this error most of the time it is due to not having PostgreSQL configured to allow TCP/IP connections or at least not connections from your particular workstation. If you have verified that postmaster is indeed running on the host you are trying to connect to then here is a list of common causes to this problem:

  • postgresql.conf not setup to allow TCP/IP connections. You’ll want to look at the listen_address configuration parameter.
  • postgresql.conf is not setup to allow connections on a non-standard port number. To determine this look at the port configuration option.
  • authentication rules in PostgreSQL’s access configuration file ( pg_hba.conf ) are not setup to allow either your uses or IP address to connect to that database. See the official documentation for more information on setting up your pg_hba.conf properly.
  • ensure that there are no firewalls, such as iptables that are keeping your local system from even establishing a connection to the remote host

Error: user X has no permission for table Y

Common Cause: You are not the owner of the table or the owner has not granted you the proper permissions

Depending on what sort of authentication methods (trust, md5, etc. ) you have setup, you might receive the following error when attempting to work with a particular table. This is usually caused by creating the table as say user ‘postgres’, and then attempting to use it as user ‘bob’. There are two possible solutions to this problem:

  • Change the ownership of the table to the user you need. You will need to login as the current owner or a superuser account and execute ALTER TABLE table_name OWNER TO new_owner_name
  • You can also GRANT other users to access this account with GRANT ALL ON table_name TO user_name . Please note this will give the user full access to select, insert, update, and delete from this table. You can limit their access to SELECT access with GRANT SELECT ON table_name TO user_name

For more information please see the following documentation:

Thanks go to Jacob Kaplan-Moss for suggesting this error be included here.

Frank Wiles has been an avid user of PostgreSQL for over 10 years. Revolution Systems provides PostgreSQL Optimizations and commercial support of PostgreSQL.

Источник

Поделиться с друзьями
КомпСовет
Adblock
detector