телевизори. Конзоли. Проектори и аксесоари. Технологии. Цифрова телевизия

Postgresql отдалечена връзка. Първи стъпки с PostgreSQL Postgresql се свързва с отдалечена база данни

0

Смаян съм. Имаме база данни postgres 9.2, която използваме от известно време. Сега трябва да можем да се свържем с него извън нашата мрежа.

Така че конфигурираме външния IP адрес и тестваме дали можем да се свържем към порт 5432 от отдалечения хост чрез telnet. Така че това доказва това мрежова връзкаработи, защитни стени и т.н. Всичко е наред.

Когато се опитам да се свържа с:
PSQL -h db.host.com -d dbname -p 5432 -U потребител

Ще се върна Psql: Сървърът прекъсна връзката неочаквано.

Проверих това
listen_addresses = "*" е зададено в postgresql.conf

И в pg_hba.conf имаме ред, който гласи (само за тестови цели)
хост всички всички 0.0.0.0/0 md5

И презаредих базата данни, за да тествам избраните промени.
Така че това трябва да позволява връзки от всеки източник.

Версията на psql на сървъра на базата данни е 9.2.14, а на клиента е 9.2.13.

Някакви предложения или идеи?

  • 1 отговор
  • Сортиране:

    Дейност

1

Бих искал да опитам няколко неща, за да получа повече информация:

    Postgres tail влезте в сървъра, за да видите какво се случва там, когато сте свързани.

    Стартирайте psql --version, за да се уверите, че повече или по-малко съответства на версията на сървъра. (Виждам, че вече сте направили това, но ще го оставя тук за бъдещите.)

    Пуснете strace psql.... за да видите докъде стига до отказ.

Това все още ми звучи като проблем с мрежата. Каква е командата telnet, с която работите? „Външен IP“ звучи по същия начин, както бихте направили на AWS. Настройки отдалечен достъпкъм VPC са необходими много стъпки. Имате ли други услуги, отворени навън, които работят?

Можете също да отстраните проблема, като изключите сървъра на Postgres и използвате nc за слушане на 5432. След това telnet и вижте дали можете да изпращате данни напред и назад.

1

Пол, благодаря за предложенията. Направих разтягане и проверих версиите. И ти беше прав, опитах да се свържа от AWS. Оказа се, че това беше нивото, което използвах в балансиращото натоварване, за да разрешава достъп само до IP-2 IP диапазони, които AWS публикува. Когато деактивирах irule, успях да се свържа веднага. Така че това трябва да е сюрреалистична логика, тъй като проверих публичния IP на моя екземпляр EC2 и той наистина беше посочен в irule чрез известие за CIDR. -

PostgreSQL е обектно-релационна СУБД с отворен код, между платформи. Тази статия ще ви покаже как да инсталирате PostgreSQL Ubuntu Linux, свържете се с него и изпълнете няколко прости SQL заявки, както и как да настроите резервно копие.

За да инсталирате PostgreSQL 9.2 на Ubuntu 12.10, изпълнете следните команди:

sudo apt-add-repository ppa:pitti/ postgresql
sudo apt-get актуализация
sudo apt-get инсталирайте postgresql-9.2

Нека се опитаме да работим със СУБД чрез обвивката:

sudo -u postgres psql

Нека създадем тестова база данни и тестов потребител:

CREATE DATABASE test_database;
СЪЗДАВАНЕ НА ПОТРЕБИТЕЛ test_user С парола "qwerty";
ПРЕДОСТАВЯНЕ НА ВСИЧКИ В БАЗАТА ДАННИ test_database НА test_user;

За да излезете от обвивката, въведете командата \q.

Сега нека се опитаме да работим със създадената база данни от името на test_user:

psql -h localhost test_database test_user

Нека създадем нова таблица:

CREATE SEQUENCE user_ids;
CREATE TABLE потребители (
id INTEGER PRIMARY KEY DEFAULT NEXTVAL ("user_ids"),
вход CHAR(64),
парола CHAR(64));

Моля, обърнете внимание, че за разлика от някои други СУБД, PostgreSQL няма колони със свойството auto_increment. Вместо това Postgres използва последователности. Засега е достатъчно да знаем, че с помощта на функцията nextval можем да получим уникални числа за дадена последователност:

SELECT NEXTVAL ("user_ids");

Като зададете стойността по подразбиране за полето id на таблицата потребители на NEXTVAL("user_ids"), постигнахме същия ефект, който auto_increment дава. Когато добавяме нови записи към таблицата, може да не посочим идентификатор, тъй като автоматично ще се генерира уникален идентификатор. Няколко таблици могат да използват една и съща последователност. По този начин можем да гарантираме, че стойностите на някои полета в тези таблици не се припокриват. В този смисъл последователностите са по-гъвкави от auto_increment.

Същата таблица може да бъде създадена само с една команда:

CREATE TABLE потребители2 (
id SERIAL PRIMARY KEY,
вход CHAR(64),
парола CHAR(64));

В този случай последователността за полето id се създава автоматично.

Сега с помощта на командата \d можете да видите списък с всички налични таблици, а с помощта на \d users можете да видите описание на таблицата с потребители. Ако не получите информацията, която търсите, опитайте \d+ вместо \d . Можете да получите списък с бази данни с командата \l и да превключите към конкретна база данни с командата \c dbname. За да покажете помощ за команди, кажете \? .

Важно е да се отбележи, че PostgreSQL преобразува имената на таблици и колони в малки букви по подразбиране. Ако не искате това поведение, можете да използвате двойни кавички:

CREATE TABLE "anotherTable" ("someValue" VARCHAR (64) ) ;

Друга функция на PostgreSQL, която може да причини затруднения при започване на работа с тази СУБД, са така наречените „схеми“. Схемата е нещо като пространство от имена за таблици, като директория с таблици в база данни.

Създаване на схема:

СЪЗДАВАЙТЕ СХЕМА резервации;

Преминете към схемата:

SET search_path TO bookings;

Можете да видите списък със съществуващи схеми, като използвате командата \dn. Схемата по подразбиране се нарича публична. По принцип можете успешно да използвате PostgreSQL, без да знаете за съществуването на схеми. Но когато работите с наследен код и в някои крайни случаи, познаването на схемите може да бъде много полезно.

В противен случай работата с PostgreSQL не се различава много от работата с всяка друга релационна СУБД:

INSERT INTO потребители (вход, парола)
СТОЙНОСТИ ("afiskon" , "123456" ) ;
ИЗБЕРЕТЕ * ОТ потребители;

Ако сега се опитате да се свържете с Postgres от друга машина, няма да успеете:

psql -h 192.168.0.1 test_database test_user

Psql: не можа да се свърже със сървъра: Връзката е отказана
Сървърът работи ли на хост "192.168.0.1" и приема ли
TCP/IP връзки на порт 5432?

За да коригирате това, добавете реда:

listen_addresses = "localhost,192.168.0.1"

... също към файла /etc/postgresql/9.2/main/postgresql.conf.

Уязвимост (CVE-2019-18634) е идентифицирана в помощната програма sudo, която се използва за организиране на изпълнението на команди от името на други потребители, което ви позволява да увеличите вашите привилегии в системата. Проблем […]

Изданието на WordPress 5.3 подобрява и разширява блоковия редактор, въведен в WordPress 5.0, с нов блок, по-интуитивно взаимодействие и подобрена достъпност. Нови функции в редактора […]

След девет месеца разработка е наличен мултимедийният пакет FFmpeg 4.2, който включва набор от приложения и колекция от библиотеки за операции с различни мултимедийни формати (запис, конвертиране и […]

  • Нови функции в Linux Mint 19.2 Канела

    Linux Mint 19.2 е версия с дългосрочна поддръжка, която ще се поддържа до 2023 г. Предлага се с актуализиран софтуери съдържа подобрения и много нови […]

  • Издадена дистрибуция на Linux Mint 19.2

    Представено издание Linux дистрибуция Mint 19.2, втората актуализация на клона на Linux Mint 19.x, базиран на базата на пакета Ubuntu 18.04 LTS и поддържан до 2023 г. Дистрибуцията е напълно съвместима [...]

  • Налични са нови версии на услугата BIND, които съдържат корекции на грешки и подобрения на функциите. Новите версии могат да бъдат изтеглени от страницата за изтегляне на уебсайта на разработчика: […]

    Exim е агент за прехвърляне на съобщения (MTA), разработен в университета в Кеймбридж за използване на Unix системи, свързани към Интернет. Той е свободно достъпен в съответствие с [...]

    След почти две години разработка е представена версията на ZFS на Linux 0.8.0, реализация файлова система ZFS, пакетиран като модул за ядрото на Linux. Модулът е тестван с Linux ядра от 2.6.32 до […]

    IETF (Internet Engineering Task Force), която разработва интернет протоколи и архитектура, завърши RFC за протокола ACME (Automatic Certificate Management Environment) […]

    Сертифициращият орган с нестопанска цел Let’s Encrypt, който се контролира от общността и предоставя сертификати безплатно на всички, обобщи резултатите от изминалата година и говори за плановете за 2019 г. […]

    Системна администрация

    Тази публикация е кратки инструкцииза начинаещи, за тези, които са инсталирали PostgreSQL за първи път. Всичко е тук необходимата информацияза да започнете с PostgreSQL.

    Свързване към СУБД

    Първото нещо, което трябва да направите, е да получите достъп до PostgreSQL, достъп като суперпотребител.
    Настройките за удостоверяване се намират във файла pg_hba.conf.
    1. локални всички партньори на postgres
    Този ред показва, че потребителят на postgres може да се свърже към всяка локална база данни на PostgreSQL чрез сокет. Не е необходимо да въвеждате парола; операционната система ще предаде потребителското име и то ще се използва за удостоверяване.
    Нека се свържем:
    1. $ sudo -u postgres psql postgres postgres
    За да можете да се свържете през мрежата, трябва да добавите реда към pg_hdba.conf:
    1. # ТИП БАЗА ДАННИ МЕТОД НА ПОТРЕБИТЕЛСКИ АДРЕС
    2. hostssl всички всички 0.0.0.0/0 md5
    Метод за удостоверяване md5означава, че ще трябва да въведете парола, за да се свържете. Това не е много удобно, ако често използвате psql конзолата. Ако искате да автоматизирате някои действия, лошата новина е, че psql не приема парола като аргумент. Има два начина за решаване на тези проблеми: задаване на подходяща променлива на средата и съхраняване на паролата в специален .pgpass файл.

    Задаване на променливата на средата PGPASSWORD

    Веднага ще кажа, че е по-добре да не използвате този метод, защото някои операционна системави позволи да видите обикновени потребителипроменливи на средата с помощта на ps. Но ако искате, трябва да напишете в терминала:
    1. експортиране на PGPASSWORD=mypasswd
    Променливата ще бъде достъпна в текущата сесия. Ако трябва да зададете променлива за всички сесии, тогава трябва да добавите реда от примера към файла .bashrc или .bash_profile

    Съхраняване на паролата във файла .pgpass

    Ако говорим за Linux, тогава файлът трябва да се намира в $HOME (/home/username). Само собственикът (0600) трябва да има права за писане и четене. Трябва да напишете редове като този във файла:
    1. име на хост:порт:база данни:потребителско име:парола
    Можете да напишете “*” в първите четири полета, което ще означава без филтриране (пълен избор).

    Получаване на помощна информация

    \? - ще покаже всички налични команди заедно с тяхното кратко описание,
    \h - ще покаже списък с всички налични заявки,
    \h CREATE - ще предостави помощ за конкретна заявка.

    Управление на потребителите на СУБД

    Как да получите списък с потребители на PostgreSQL? Или можете да направите заявка към таблицата pg_user.
    1. SELECT * FROM pg_user;

    Създаване на нов потребител на PostgreSQL

    От обвивката на psql това може да се направи с помощта на командата CREATE.
    1. СЪЗДАВАНЕ НА ПОТРЕБИТЕЛ потребителско име С парола "password" ;
    Или можете да използвате терминала.
    1. createuser -S -D -R -P потребителско име
    Ще бъдете подканени да въведете парола.

    Промяна на потребителската парола

    1. ALTER USER потребителско име С ПАРОЛА "парола" ;

    Промяна на потребителските роли

    За да дадете на потребителя разрешение да създава бази данни, изпълнете следната заявка:
    1. ALTER ROLE потребителско име WITH CREATEDB;

    Управление на бази данни

    Показване на списък с бази данни в psql терминала: Същото от терминала на Linux:
    1. psql -l
    Създаване на база данни от psql (PostgreSQL терминал)
    1. СЪЗДАВАНЕ НА БАЗА ДАННИ dbname OWNER dbadmin;
    Създаване нова базаданни с помощта на терминала:
    1. createdb -O потребителско име dbname;

    Настройка на права за достъп до база данни

    Ако потребителят е собственик на базата данни, той има всички права. Но ако искате да дадете достъп на друг потребител, можете да направите това с помощта на командата GRANT. Заявката по-долу ще позволи на потребителя да се свърже с базата данни. Но не забравяйте за конфигурационния файл pg_hba.conf, той също трябва да има съответните разрешения за връзка.
    1. GRANT CONNECT ON DATABASE dbname TO dbadmin;


    Свързани публикации