Главная » Error » Почему Psql Не Может Подключиться К Серверу?

Почему Psql Не Может Подключиться К Серверу?

Шаг 1. Убедитесь, что база данных запущена

Команда может отличаться в зависимости от вашей операционной системы. Но в большинстве систем * ix будет работать следующее: он будет искать postgres среди всех запущенных процессов

ps -ef | grep postgres

В моей системе, mac osx, это выплевывает

501 408 1 0 2Jul15 ?? 0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log

В последнем столбце показана команда, используемая для запуска сервера, и параметры.

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

man postgres

Оттуда вы увидите, что параметры -D и -r являются соответственно datadir и logfilename.

Шаг 2: Если служба postgres работает

Используйте find для поиска местоположения сокета, который должен находиться где-то в /tmp

sudo find /tmp/ -name .s.PGSQL.5432

Если postgres запущен и принимает соединения сокетов, вышеоказанное должно указать местоположение гнезда. На моей машине это оказалось:

/tmp/.s.PGSQL.5432

Затем попробуйте подключиться через psql, используя это расположение файла явно, например.

psql -h /tmp/ dbname

Шаг 3: Если служба запущена, но вы не видите сокет

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

Перейдите к datadir, и вы должны найти файл pg_hba.conf.

По умолчанию в нижней части файла вы увидите следующие строки:

# “local” is for Unix domain socket connections only
local all all trust

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

ответил(а)

2015-07-27T10:18:00+03:007 лет, 2 месяца назад
Haleemur Ali
добавить комментарий
пожаловаться

109

Решил! Хотя я не знаю, что произошло, но я просто удалил все вещи и переустановил его. Это команда, которую я использовал для ее удаления sudo apt-get –purge remove postgresql* и dpkg -l | grep postgres. Последний должен найти все пакеты в случае, если он не чист.

ответил(а)

2015-07-27T10:00:00+03:007 лет, 2 месяца назад
deathlee
добавить комментарий
пожаловаться

85

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

Я определился с тем, что сегодня стал реальным. Перезапуск PostgreSQL разрешил его на ubuntu. sudo /etc/init.d/postgresql restart

ответил(а)

2017-11-16T22:23:00+03:004 года, 11 месяцев назад
Faith Nassiwa
добавить комментарий
пожаловаться

49

Во время новой установки postgresql. По умолчанию имя пользователя и пароль назначаются как “postgres”. Особенностью, которую предоставляет RDBMS, является добавление роли для нового пользователя и создание базы данных. Если вы получаете такие ошибки:

    введите имя пользователя по умолчанию:

    root @kalilinux: ~ # sudo -i -u postgres

    ype psql для интерактивного приглашения

    postgres @kalilinux: ~ $psql

    Чтобы выйти из приглашения, используйте

    д

    Чтобы создать новую роль пользователя

    postgres @kalilinux: ~ $createuser –interactive

Теперь вы находитесь в интерактивной оболочке psql. Наслаждаться. Не забудьте войти в систему с вашего имени пользователя и введите psql для оболочки.

ответил(а)

2018-02-15T05:33:00+03:004 года, 8 месяцев назад
Suman Astani
добавить комментарий
пожаловаться

50

Итак, для меня и моих приятелей, работающих над приложением Node.js(с Postgres и Sequelize), нам пришлось

    brew install postgresql (у одного из нас отсутствовали сообщения postgres, один из нас не был, и все же мы получали ту же самую ошибку msg, как указано выше)

    brew services start postgresql **** (используйте Homebrew для запуска postgres)

    createdb

    node_modules/.bin/sequelize db:migrate

    npm start

ответил(а)

2018-01-24T04:01:00+03:004 года, 8 месяцев назад
Kala Wetzler
добавить комментарий
пожаловаться

50

Моя проблема с этим сообщением об ошибке была связана с неправильными разрешениями на сертификаты ключей и pem, с которыми я манипулировал. Что мне очень помогло:
/var/log/postgresql/postgresql -9.5-main.log, где все ошибки.

ответил(а)

2017-12-19T13:23:00+03:004 года, 10 месяцев назад
fDebef
добавить комментарий
пожаловаться

50

быстрый способ на debian:

    изменить /etc/postgresql/10/main/postgresql.conf с помощью listen_address *
    отредактируйте /etc/postgresql/10/main/pg_hba.conf и добавьте строку в конце с помощью host all all 0/0 md5
    создать роль для входа postgres=# CREATE ROLE remoteuser LOGIN WITH PASSWORD ‘foo’

    sudo /etc/init.d/postgresql restart изменения вступят в силу

    войдите с clientide с помощью psql –host=ipofserver –port=5432 –username=remoteuser –password –dbname=mydb

    пароль обращается в интерактивном режиме, который в этом случае является foo

как удаленный доступ к базе данных postgres на сервере из клиента psql

ответил(а)

2017-10-12T18:55:00+03:005 лет назад
ItsmeJulian
добавить комментарий
пожаловаться

50

Просто сделайте небольшое дополнение: если ваш экземпляр жалуется на сокет, вы также можете проверить unix_socket_directories на /data/postgresql.conf файле, который мог бы быть установлен на /tmp, например, если вы использовали Распространение третьей стороны. Вы можете изменить его на /var/run/postgresql и перезапустить службу. Для этого также может потребоваться создание dir postgresql в /var/run и subsys/postgresql-9.6 в /var/lock, если они еще не существуют (работал у меня с postgresql 9.6).

ответил(а)

2017-04-26T10:41:00+03:005 лет, 5 месяцев назад
Anton Zvonovsky
добавить комментарий
пожаловаться

Ваш ответ

<текстареа id="id_body" data-min="50" maxlength="20000" class="form-control" name="body" rows="5" placeholder="Постарайтесь дать развернутый ответ, по возможности, приведите примеры, полезные ссылки, разные варианты решения"> Введите минимум 50 символовОтправить

Docker Compose Network

Putting it shortly, docker compose isolates each of the containers network. This is done by adding them to the _default which is a newly created network, where is the name of the directory. Under this each of the containers is added via it’s name. In our case that would be postgres and server. These are like DNS A-records, which means using postgres would resolve to the IP of the postgres container and so on. Each of the container can use these names to connect to the other containers.

Solution

Now that we know the exact problem, all we need to do is change our host in the postgres connection string to postgres from 127.0.0.1.

postgres://user:[email protected]:5432/db?sslmode=disable

2. MySQL Container Deployment

Firstly, let’s look into the steps involved in the MySQL container deployment. Basically, MySQL follows the Client-Server architecture model. Here, the server is a container image with databases, whereas the client is used to access the database on the host machine.

We’ve divided the deployment workflow into three sections.

2.1. MySQL Server Deployment

Now, let’s bring the MySQL server instance into Docker. We can simply build a container based on the MySQL image pulled from the Docker Hub. There are two points we should consider when choosing which version of an image to pull from the Docker Hub:

  • Official Image Stamping – These are more secure and curated images from the MySQL developer team.
  • Latest Tag – Unless we have any reservations on the MySQL version, we can go with the latest version available in the repository.

Let’s pull the official MySQL image from Docker Hub using the docker pull command:

$ docker pull mysql:latest
latest: Pulling from library/mysql
f003217c5aae: Pull complete

… output truncated …

70f46ebb971a: Pull complete
db6ea71d471d: Waiting
c2920c795b25: Downloading [=================================================> ] 105.6MB/107.8MB
26c3bdf75ff5: Download complete

Usually, the images are distinct layers tightly coupled in an ordered form as described in the manifest file. Our docker pull command will get the layers of the images from the blob store and automatically create the image using the manifest file:


… output truncated …

4607fa685ac6: Pull complete
Digest: sha256:1c75ba7716c6f73fc106dacedfdcf13f934ea8c161c8b3b3e4618bcd5fbcf195
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest

The bundled image gets a hash code for future reference as demonstrated above.

Without further ado, let’s run the container. The docker run command typically creates the writeable container layer on top of the image layers. We’ll need to provide the container name using the -name argument and use the MySQL image with the latest tag. Further, we’ll set the MySQL server password through the environment variable MYSQL_ROOT_PASSWORD. In our case, the password is set to “baeldung”.

Finally, the -d option helps us run the container as a daemon. The output throws another hash code for future container management:

$ docker run –name bael-mysql-demo -e MYSQL_ROOT_PASSWORD=baeldung -d mysql:latest
fedf880ce2b690f9205c7a37f32d75f669fdb1da2505e485e44cadd0b912bd35

We can see all running containers in a host through the ps command:

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fedf880ce2b6 mysql:latest “docker-entrypoint.s…” 17 seconds ago Up 16 seconds 3306/tcp, 33060/tcp bael-mysql-demo

2.2. MySQL Client Installation

It’s mandatory to install a client to get easy access to the MySQL server. Depending on our need, we can either install the client on the host machine or any other machine or container that has IP reachability with the server container:

$ sudo apt install mysql-client -y
Reading package lists… Done
Building dependency tree
Reading state information… Done
mysql-client is already the newest version (5.7.37-0ubuntu0.18.04.1).

… output truncated …

Now, let’s enable the extraction of the installation path and version of the MySQL client:

$ which mysql
/usr/bin/mysql
$ mysql –version
mysql Ver 14.14 Distrib 5.7.37, for Linux (x86_64) using EditLine wrapper

2.3. Establish Communication

Next, let’s log in to the server using the installed client. Traditionally, we use the MySQL command with username and password for server login. However, it will not work in the case of container-based solutions:

$ mysql -u root -p
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)

We’ll end up with socket errors as illustrated above. Here, it’s important to understand that the MySQL server is a container and not simply installed on the host machine. As highlighted in the above section, containers are lightweight servers with their own compute resources, networking, and storage.

The inspect command helps to allocate an IP address to the MySQL server instance:

$ docker inspect -f ‘{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ bael-mysql-demo
172.17.0.2

Let’s provide the above IP address in the client’s host option, with the default port number and protocol type as TCP:

$ mysql -h 172.17.0.2 -P 3306 –protocol=tcp -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.

… output truncated …

mysql>
mysql> show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| mysql |
| performance_schema |
| sys |
+——————–+
4 rows in set (0.00 sec)

mysql> exit
Bye

Congrats, we have logged into the MySQL server successfully!

3. Conclusion

In summary, we’ve seen in detail the steps for deploying a MySQL server container, installing the MySQL client on the host machine, and finally, establishing the connection between them using container information.

Generic bottom

Get started with Spring 5 and Spring Boot 2, through the Learn Spring course:

>> CHECK OUT THE COURSE Generic footer banner

Courses

  • All Courses
  • All Bulk Courses
  • All Bulk Team Courses
  • The Courses Platform

1. Overview

In today’s technological era, organizations have to release apps quickly to attract and retain business. This makes the teams build and configure the deployment environment at a faster pace with a lesser cost. However, containerization technologies come to the rescue for building a lightweight infrastructure.

This article will elucidate the method of deploying and connecting to a MySQL server in a container-based environment.

Now, let’s get into the nitty-gritty of it.

Источники

  • https://progi.pro/pochemu-psql-ne-mozhet-podklyuchitsya-k-serveru-1713727
  • https://nayak.io/posts/docker-compose-postgres-and-connection-refused/
  • https://www.baeldung.com/docker-cant-connect-local-mysql
[свернуть]
Решите Вашу проблему!


×
Adblock
detector