Dbeaver как подключиться к базе postgres
Перейти к содержимому

Dbeaver как подключиться к базе postgres

  • автор:

Как подключиться к облачному серверу PostgresQL в условиях высоких требований к безопасности.

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

Мы поговорим о том, как легко и быстро подключаться к вашему PostgreSQL через SSH, SSL, jump серверы, proxy серверы, VPN и SSO (Kerberos/SSPI/LDAP/Active Directory). Для демонстрации мы будем использовать как консоль, так и UI-клиент и JDBC-драйвер. Мы постараемся охватить самые разнообразные случаи: от самых простых до сложных и безумных.

Как подключиться к локальной базе данных в DBeaver?

Можно в DBeaver создать базу данных или подключиться к тем что у меня созданы (в консоли). Или в DBeaver можно только подключаться к удаленным?

Я пробовала просто создать новое подключение, но требовался какой-то пароль. У меня не стоит пароля и я его не задавала, когда устанавливала postgresql. В консоли работаю без пароля. Пароль рута тут не подходит. Не понимаю, какой пароль нужен. Или может я неправильно подключаюсь.

alissia
19.02.22 04:29:05 MSK

ну так попробуй без пароля?

Anoxemian ★★★★★
( 19.02.22 04:39:30 MSK )
Ответ на: комментарий от Anoxemian 19.02.22 04:39:30 MSK

я итак не ввожу никакого пароля

anonymous
( 19.02.22 04:40:23 MSK )
Ответ на: комментарий от anonymous 19.02.22 04:40:23 MSK

и что получается?

Anoxemian ★★★★★
( 19.02.22 05:26:22 MSK )
Ответ на: комментарий от Anoxemian 19.02.22 05:26:22 MSK

The server requested password-based authentication, but no password was provided.

anonymous
( 19.02.22 06:16:24 MSK )
KRex ★
( 19.02.22 12:40:37 MSK )

По умолчанию, «в консоли» используется peer auth, DBeaver такое не умеет. Тебе надо настроить в постгресе аутентификацию по паролю.

hippi90 ★★★★★
( 19.02.22 12:41:34 MSK )

А подключаешься что-то типа такого?

sudo -i -u postgres psql 

KRex ★
( 19.02.22 12:44:59 MSK )

Покажи pg_hba.conf, подскажу что там поменять и зайдешь по паролю

KRex ★
( 19.02.22 12:47:32 MSK )
anonymous
( 19.02.22 15:57:49 MSK )
Ответ на: комментарий от anonymous 19.02.22 15:57:49 MSK

Исправил, не благодари

anonymous
( 19.02.22 16:10:21 MSK )

Поищи сокет в /var/run/postgresql , через него и подключайся.

anonymous
( 19.02.22 18:36:49 MSK )
Ответ на: комментарий от anonymous 19.02.22 18:36:49 MSK

Поищи сокет в /var/run/postgresql, через него и подключайся.

Это для кого совет? DBeaver через сокет подключаться не умеет. Только через сеть. И через сеть можно подключаться и к локальной БД (адрес 127.0.0.1). Нужно только настроить разрешения и задать пароль. Как настроить доступ postgresql через сеть — есть масса мануалов.

sigurd ★★★★★
( 19.02.22 21:20:10 MSK )
Ответ на: комментарий от sigurd 19.02.22 21:20:10 MSK

Не для четырёхзвёздных ламерков, вам уже ничем не помочь.

через сеть можно подключаться и к локальной БД

А ещё можно с пола руками есть.

Большинство либ, работающих с сетью, поддерживает Unix socket из коробки, и даже если нет, её всегда можно притащить, DBeaver же на основе эклипса сделан, он расширяем.

  1. Запускаем БД для теста.
  2. Чекаем подключение через сокет в консоли.
  3. Создаём подключение в дебилвере.
  4. Добавляем либу junixsocket, не забываем жмякнуть кнопочку для скачивания.
  5. Правим шаблон DSN для драйвера.
  6. Подключаемся (пароль спросит, но вводить его не теруется).
  7. Радуемся, что избежали поражения мозга, во время крафта звёзд на ЛОРе.

anonymous
( 20.02.22 00:21:59 MSK )
Ответ на: комментарий от anonymous 20.02.22 00:21:59 MSK

Небольшая поправочка: шаблон DSN таки глобальный, лучше его не править, а сразу прописать всё, начиная с третьего слеша, в поле «Host» в настройках подключения.

anonymous
( 20.02.22 00:35:49 MSK )
Ответ на: комментарий от anonymous 20.02.22 00:21:59 MSK

Не для четырёхзвёздных ламерков, вам уже ничем не помочь.

Не собираюсь обмазываться вашим java-гамном в каждом отдельном приложении! Я просто открываю сетевой доступ и любой клиент получает доступ без дополнительных говно-библиотек. Все равно, рано или поздно потребуется удаленный доступ к БД. Лично для меня никогда не возникала даже мысль о тоннах javа-либ для доступа к БД. У меня не только java нет на серверах БД, но и графика отсутствует. И никакая разработка не идет на рабочих серверах, только удаленный доступ.
Админам локал-хоста это не понять!

sigurd ★★★★★
( 20.02.22 03:25:53 MSK )
Последнее исправление: sigurd 20.02.22 03:33:45 MSK (всего исправлений: 2)

Ответ на: комментарий от sigurd 20.02.22 03:25:53 MSK

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

anonymous
( 20.02.22 17:24:27 MSK )
Ответ на: комментарий от anonymous 20.02.22 00:21:59 MSK

И какой смысл во всех этих приседаниях?

Legioner ★★★★★
( 20.02.22 18:36:39 MSK )

Исправь pg_hba.conf. Там надо включить доступ.

ox55ff ★★★★★
( 20.02.22 18:39:18 MSK )
Ответ на: комментарий от Legioner 20.02.22 18:36:39 MSK

Каких? Относительно обычной настройки соединения понадобилось только добавить библиотеку. Слишком тяжело для пятизвёздочника, понимаю.

anonymous
( 20.02.22 19:00:32 MSK )
Ответ на: комментарий от anonymous 20.02.22 19:00:32 MSK

Это ненужные усилия, которые нужно будет проводить при каждом апгрейде, как минимум.

Legioner ★★★★★
( 20.02.22 19:30:28 MSK )
Ответ на: комментарий от KRex 19.02.22 12:44:59 MSK

да, именно так и подключаюсь в консоли

anonymous
( 21.02.22 08:45:50 MSK )
Ответ на: комментарий от anonymous 20.02.22 17:24:27 MSK

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

Да мне пофиг на мнение анонимуса! Проблемму доступа к локальной БД я решаю без всяких костылей, используя штатную функцию СУБД — сетевой доступ.

sigurd ★★★★★
( 21.02.22 10:33:49 MSK )

Тебе надо показать pg_hba.conf и сиськи. И все будет хорошо.

anonymous
( 21.02.22 11:05:26 MSK )
Ответ на: комментарий от sigurd 21.02.22 10:33:49 MSK

Какие ещё костыли, ламерок? Юникс сокет и является штатным средством доступа в рамках одного хоста.

anonymous
( 21.02.22 17:16:53 MSK )
Ответ на: комментарий от KRex 19.02.22 12:47:32 MSK

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 peer

IPv4 local connections:

host all all 127.0.0.1/32 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

alissia
( 22.02.22 09:16:38 MSK ) автор топика
Ответ на: комментарий от alissia 22.02.22 09:16:38 MSK

Тут все хорошо. Этого достаточно host all all 127.0.0.1/32 md5. Осталось пароль задать postgres.

sudo -u postgres psql \password 

Не забудь перезапуск сделать

sudo systemctl restart postgresql 

KRex ★
( 22.02.22 13:36:18 MSK )
Ответ на: комментарий от KRex 22.02.22 13:36:18 MSK

большое спасибо! помогло)

alissia
( 22.02.22 23:03:36 MSK ) автор топика
Ответ на: комментарий от anonymous 21.02.22 17:16:53 MSK

Костылями я называю установку дополнительных либ для доступа к unix-сокету и правку шаблонов.
Зачем такие извращения, если есть штатный доступ по сети? В том числе и к локальной БД, если на сервере БД есть джава и прочая графика.
Обычно такие извращения заканчиваются вопросами «почему у меня все локально работает, а по сети — нет»

sigurd ★★★★★
( 23.02.22 00:23:28 MSK )
Ответ на: комментарий от anonymous 20.02.22 00:21:59 MSK

То что ты делаешь это глупость. Если jdbc драйвер не умеет в юникс-сокет, то нужно просто в hba добавить запись с «host» и адрес либо маску, далее подключиться по tcp localhost.

anonymous
( 23.02.22 12:10:49 MSK )
Ответ на: комментарий от anonymous 23.02.22 12:10:49 MSK

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

anonymous
( 23.02.22 16:12:27 MSK )
Ответ на: комментарий от sigurd 23.02.22 00:23:28 MSK

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

Как будто доступ через сокет менее «штатный».

Обычно такие извращения заканчиваются вопросами

У бестолкового ламерья, безусловно.

Я, к слову, не настаивал на этом на как единственно верном варианте, а показал как сделать элементарную вещь, аналогично тому, как к БД без пароля подключается psql. А ты возбудился от того, что твою бестолковость расчехлили и выставили на общее обозрение.

anonymous
( 23.02.22 16:25:48 MSK )
Ответ на: комментарий от anonymous 23.02.22 16:25:48 MSK

Я, к слову, не настаивал на этом на как единственно верном варианте, а показал как сделать элементарную вещь, аналогично тому, как к БД без пароля подключается psql. А ты возбудился от того, что твою бестолковость расчехлили и выставили на общее обозрение.

Странно, но по моему — это ты возбудился, и начал доказывать, что установив дополнительную либу, можно расширить функционал DBeaver. Но так и не смог убедить, чем это проще изменения одной строки в конфиге PostgreSQL для сетевого доступа как к локальной, так и любой удаленной БД. А всех, кто не хочет ставить дополнительные (левые) либы объявил ламерами. И пофиг, что на сервере БД может не быть ни джавы, ни графики для ее запуска. Как раз это — позиция ламера — админа локал-хоста, привыкшего тащить все на один комп.

sigurd ★★★★★
( 23.02.22 17:23:03 MSK )
Последнее исправление: sigurd 23.02.22 17:27:04 MSK (всего исправлений: 1)

DBeaver. Не могу нормально подключиться с клиентской машины через Dbeaver к Postgres. Он пишет, что подключается, но ни таблиц, ни представлений нет

С клиентской машины под Windows через Dbeaver пытаюсь подключится к серверу с Postgres-ом. Подключаюсь через SSH туннель. Потом настройка подключения собственно к базе данных: Название сервера, порт 5432, имя нужной базы данных, Метод аутентификации: Database Native, имя пользователя, пароль. Dbeaver пишет, что подключение прошло успешно. Появляется база с нужным мне именем, но когда я вхожу в схему public, в таблицы или представления, там всё пусто. При том, что если я захожу в эту же базу с сервера через psql там все мои 42 таблицы присутствуют. Почему я не вижу их в Dbeaver-е?

Отслеживать
задан 22 июл 2022 в 2:54
11 1 1 серебряный знак 2 2 бронзовых знака
Проблему удалось решить.
22 июл 2022 в 5:19

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Проблему удалось решить. Это была неочевидная особенность Dbeaver. Dbeaver пытается подключить не ту базу, которую указываешь, а одноимённую с пользователем, и если такой базы не обнаруживается, он ругается, говорит, что такой базы не существует и не подключается. А если зайти под пользователем postgres, то он подключиться к базе postgres, даже если указана другая база данных. Причём имя базы данных в навигаторе написано правильно, но открывая таблицы, понимаешь, что это про другую базу данных. А если в настройках во вкладке Postgresql поставить галочку отображать все базы данных, то он правильно отобразит имена всех баз данных, но если попытаться зайти в их таблицы, то они будут у всех одинаковые и принадлежать собственно базе данных одноимённой с пользователем. Косяк, однако. Пришлось завести пользователя с таким же именем как и нужная база данных.

Отслеживать
ответ дан 22 июл 2022 в 5:32
11 1 1 серебряный знак 2 2 бронзовых знака

День добрый. А можно уточнить, пожалуйста Вашу версию DBeaver? Я вот сейчас подключилась с юзером1 к базе с названием2, указав название2 в настройках подключения как имя базы. И вижу соответствующие базе с названием 2 таблицы и схемы. Меня беспокоит Ваш комментарий, и хочется разобраться 🙂

2 сен 2022 в 18:42

Здравствуйте, Анастасия. Я меняю версии Debeaver регулярно, как только он просит. Сейчас у меня 22.2.5 , на тот момент не помню какая была версия (та которая была последняя на дату вопроса. Но проблема осталась и в версии 22.2.5 .

Установка и настройка Dbeaver для работы с витриной данных Лайт

Для управления базами данных витрины рекомендуется использовать DBeaver — это бесплатное программное обеспечение с открытым исходным кодом для управления базами данных (БД). Для взаимодействия с реляционными БД в витрине используется программный интерфейс JDBC (через JDBC-драйвер).

Для подключения к базе данных витрины необходимо выполнить следующие действия:

  • установить приложение DBeaver (менеджер баз данных);
  • получить у системного программиста учетные записи для доступа к базе данных (название БД, логин и пароль пользователя БД);
  • настроить приложение DBeaver;
  • установить и настроить JDBC-драйвер для работы с базой данных витрины;
  • выполнить проверку подключения к базе данных витрины.

Установка приложения DBeaver

Для установки DBeaver скачайте дистрибутив приложения с официального сайта https://dbeaver.io/download/.

Установите программу стандартным способом в соответствии с операционной системой, установленной на вашем компьютере.

Установка и настройка JDBC-драйвера

Дистрибутив с актуальной версией JDBC-драйвера находится в установочном пакете витрины данных.

Процесс установки JDBC-драйвера и настройки подключения к базам данных в приложении Dbeaver, работающем под операционными системами Windows или Linux (на примере Ubuntu, версия 20.04), идентичный. Для этого выполните следующие действия:

  1. Откройте приложение Dbeaver;
  2. В главном меню приложения выберите Базы данных/Database и нажмите пункт Управление драйверами/Driver Manager;
  3. В открывшемся окне Менеджер драйверов/Driver Manager нажмите кнопкуНовый/New;
  4. В открывшемся окне Создать драйвер/Create new driver заполните следующую информацию:
    • Имя драйвера/Driver Name: DtmDriver;
    • Имя класса/Class Name: ru.datamart.prostore.jdbc.Driver;
    • Шаблон URL/URL Template: jdbc:prostore://:.
  5. Установите галочку в поле Без авторизации/No authentication и Пустой пароль/Allow Empty Password;
  6. Во вкладке Библиотеки/Libraries нажмите кнопку Добавить файл и укажите путь к jar-файлу JDBC-драйвера укажите путь к jar-файлу с JDBC-драйвер;
  7. Нажмите кнопку Ок;
  8. Проверьте, что драйвер был добавлен в приложение. Для этого откройте окно Менеджер драйверов»/«Driver Manager (Базы данных/Database> Управление драйверами/Driver Manager) и в поисковой строке введите название драйвера – DtmDriver.

Подключение к базе данных витрины для ОС Windows/Linux

Для подключения к базам данных через JDBC-драйвер, выполните следующие действия:

Тест соединения.png

  1. Откройте Dbeaver;
  2. В главном меню приложения выберите пункт База данных/Database > Новое соединение/Connect to a Database;
  3. В окне Создать соединение/Connect to a Database в поисковой строке введите dtmdriver;
  4. Выберите DtmDriver и нажмите кнопку Далее/Next; В окне Настройка соединения/Connection Settings заполните следующие поля:
    — Хост — DNS-name или IP адрес сервера базы данных. Например, 172.16.0.17.
    — Порт — порт для сервера базы данных, например, 9090.
    В результате выполненных действий, в поле JDBC URL будет отображено следующее значение jdbc:prostore://172.16.0.17:9090;
  5. Нажмите кнопку Тест соединения/Connection test для проверки подключения.
    В случае успешного подключение отобразится сообщение о корректном подключении:
  6. Закройте окно проверки соединения, для этого нажмите кнопку OK;
  7. В окне Настройка базового соединения/Connection Settings нажмите кнопку Готово/Finish.

Проверка загрузки данных в БД витрины

FROM INFORMATION_SCHEMA.schemata
WHERE schema_name = UPPER(‘test_upload_data’);

Результат выполнения должен быть Пустым.

2. Для создания тестовой БД с таблицей Trip выполните следующий sql-запрос:

CREATE TABLE test_upload_data.trip (

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *