[Документация Yandex Cloud](../../../index.md) > [Yandex DataSphere](../../index.md) > [Пошаговые инструкции](../index.md) > Подключение к источникам данных > Подключение к базе данных PostgreSQL

# Подключение к базе данных PostgreSQL

В инфраструктуре Yandex Cloud разворачивать и поддерживать кластеры серверов [PostgreSQL](https://www.postgresql.org/) позволяет сервис Managed Service for PostgreSQL.

## Перед началом работы {#before-begin}

1. [Создайте](../../../managed-postgresql/operations/cluster-create.md) новый кластер Managed Service for PostgreSQL с публичным доступом для хоста. Вы можете использовать существующий кластер, содержащий хосты в публичном доступе.
1. [Настройте](../../../managed-postgresql/operations/connect/index.md#configuring-security-groups) группы безопасности кластера.
1. Откройте проект DataSphere:
   
   1. Выберите нужный проект в своем сообществе или на [главной странице](https://datasphere.yandex.cloud) DataSphere во вкладке **Недавние проекты**.
   1. Нажмите кнопку **Открыть проект в JupyterLab** и дождитесь окончания загрузки.
   1. Откройте вкладку с ноутбуком.

## Подключиться к хосту {#connect-to-host}

{% list tabs group=connection %}

- Подключение с SSL {#with-ssl}

  Чтобы подключиться к хостам кластера Managed Service for PostgreSQL:

  1. Получите SSL-сертификат. Для этого введите в ячейке ноутбука команду:

      ```bash
      #!:bash
      mkdir ~/.postgresql
      wget "https://storage.yandexcloud.kz/cloud-certs/CA.pem" -O ~/.postgresql/root.crt && \
      chmod 0600 ~/.postgresql/root.crt
      ```

  1. Установите подключение с БД. Для этого введите в ячейке ноутбука команду:

      ```python
      %pip install psycopg2-binary
      import psycopg2
      conn = psycopg2.connect("""
          host=<FQDN_хоста_PostgreSQL>
          port=6432
          sslmode=verify-full
          dbname=<имя_БД>
          user=<имя_пользователя_БД>
          password=<пароль_пользователя_БД>
          target_session_attrs=read-write
      """)
      q = conn.cursor()
      q.execute('SELECT version()')
      print(q.fetchone())
      ```

      Если подключиться к кластеру удалось, в ответ на тестовый запрос будет выведена версия PostgreSQL:

      ```text
      ('PostgreSQL 14.6 (Ubuntu 14.6-201-yandex.52665.7e82983c2c) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0, 64-bit',)
      ```

- Подключение без SSL {#without-ssl}

  Подключение без использования SSL-сертификата поддерживается только для хостов, находящихся не в публичном доступе. В этом случае трафик внутри облачной сети при подключении к БД шифроваться не будет.

  1. [Настройте проект](../projects/update.md). Для этого на странице редактирования проекта в соответствующих полях добавьте или измените:

     * **Каталог по умолчанию**, в котором развернут кластер Managed Service for PostgreSQL.
     * **Сервисный аккаунт** с [ролью](../../../managed-postgresql/security/index.md#required-roles) `managed-postgresql.editor` или выше.
     * **Подсеть**, в которой расположен хост БД. Подсеть должна находиться в [зоне доступности](../../../overview/concepts/geo-scope.md), в которой создано сообщество.

       {% note info %}

       Чтобы иметь доступ в интернет, [указывайте подсеть с NAT-шлюзом](../../../vpc/operations/create-nat-gateway.md).

       {% endnote %}

  1. Установите подключение с БД. Для этого введите в ячейке ноутбука команду:

      ```python
      %pip install psycopg2-binary
      import psycopg2

      conn = psycopg2.connect("""
          host=rc1a-<идентификатор_кластера_PostgreSQL>.mdb.yandexcloud.kz
          port=6432
          sslmode=disable
          dbname=<имя_БД>
          user=<имя_пользователя_БД>
          password=<пароль_пользователя_БД>
          target_session_attrs=read-write
      """)

      q = conn.cursor()
      q.execute('SELECT version()')

      print(q.fetchone())

      conn.close()
      ```

      Если подключиться к кластеру удалось, в ответ на тестовый запрос будет выведена версия PostgreSQL:

      ```text
      ('PostgreSQL 14.6 (Ubuntu 14.6-201-yandex.52665.7e82983c2c) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0, 64-bit',)
      ```

{% endlist %}