Написать в техподдержку Позвонить нам
Админпанель Выход

Содержание статьи:

    Установка и настройка PostgreSQL на Ubuntu

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

    Конфигурация оборудования

    Сервер Ubuntu 18.04 LTS x86_64. 

    Как сэкономить время на установке PostgreSQL

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

    [попробовать облачную СУБД PostgreSQL]

    Установка Standalone PostgreSQL

    1. Авторизуйтесь на сервере Ubuntu 18.04.
    2. Обновите списки репозиториев:
    ubuntu@ubuntu-standard-2-4-40gb:~$ sudo apt-get update
    1. По умолчанию в Ubuntu 18.04 в репозиториях располагается PostgreSQL версии 10. Выполните одно из действий:
    • Если этой версии достаточно, установите ее:
    ubuntu@ubuntu-standard-2-4-40gb:~$ sudo apt-get install postgresql
    • Чтобы установить актуальную версию PostgreSQL:
    • Скачайте ключ репозитория PostgreSQL:
    ubuntu@ubuntu-standard-2-4-40gb:~$ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
    OK
    • В список репозиториев добавьте репозиторий PostgreSQL:
    ubuntu@ubuntu-standard-2-4-40gb:~$ sudo apt-add-repository "deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main"
    Hit:1 http://security.ubuntu.com/ubuntu bionic-security InRelease
    Get:2 http://apt.postgresql.org/pub/repos/apt bionic-pgdg InRelease [46.3 kB]
    Hit:3 http://MS1.clouds.archive.ubuntu.com/ubuntu bionic InRelease
    Hit:4 http://MS1.clouds.archive.ubuntu.com/ubuntu bionic-updates InRelease
    Hit:5 http://MS1.clouds.archive.ubuntu.com/ubuntu bionic-backports InRelease
    Get:6 http://apt.postgresql.org/pub/repos/apt bionic-pgdg/main amd64 Packages [178 kB]
    Fetched 225 kB in 1s (217 kB/s)
    Reading package lists... Done
    • Посмотрите доступные версии сервера:
    ubuntu@ubuntu-standard-2-4-40gb:~$ sudo apt-cache search postgresql | grep "SQL database, version"
    postgresql-10 - object-relational SQL database, version 10 server
    postgresql-11 - object-relational SQL database, version 11 server
    postgresql-12 - object-relational SQL database, version 12 server
    postgresql-9.3 - object-relational SQL database, version 9.3 server
    postgresql-9.4 - object-relational SQL database, version 9.4 server
    postgresql-9.5 - object-relational SQL database, version 9.5 server
    postgresql-9.6 - object-relational SQL database, version 9.6 server
    • Установите актуальную версию (например, 12):
    ubuntu@ubuntu-standard-2-4-40gb:~$ sudo apt-get install postgresql-12
    1. После установки убедитесь, что сервер запущен:
    ubuntu@ubuntu-standard-2-4-40gb:~$ ps ax | grep postgres
     4430 ?        Ss     0:00 /usr/lib/postgresql/12/bin/postgres -D /var/lib/postgresql/12/main -c config_file=/etc/postgresql/12/main/postgresql.conf
     4441 ?        Ss     0:00 postgres: 12/main: checkpointer
     4442 ?        Ss     0:00 postgres: 12/main: background writer
     4443 ?        Ss     0:00 postgres: 12/main: walwriter
     4445 ?        Ss     0:00 postgres: 12/main: autovacuum launcher
     4447 ?        Ss     0:00 postgres: 12/main: stats collector
     4448 ?        Ss     0:00 postgres: 12/main: logical replication launcher
    17694 pts/0    S+     0:00 grep --color=auto postgres
    1. Проверьте подключение к базе данных. По умолчанию для доступа пользователя к базе данных пароль не требуется:
    ubuntu@ubuntu-standard-2-4-40gb:~$ sudo su - postgres
    postgres@ubuntu-standard-2-4-40gb:~$ psql
    psql (12.1 (Ubuntu 12.1-1.pgdg18.04+1))
    Type "help" for help.
    
    postgres=# \l
                                  List of databases
       Name    |  Owner   | Encoding | Collate |  Ctype  |   Access privileges
    -----------+----------+----------+---------+---------+-----------------------
     postgres  | postgres | UTF8     | C.UTF-8 | C.UTF-8 |
     template0 | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
               |          |          |         |         | postgres=CTc/postgres
     template1 | postgres | UTF8     | C.UTF-8 | C.UTF-8 | =c/postgres          +
               |          |          |         |         | postgres=CTc/postgres
    (3 rows)
    
    postgres=# \q
    Установка завершена.

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

    1. Создайте базу данных mybase:
    ubuntu@ubuntu-standard-2-4-40gb:~$ sudo su - postgres
    postgres@ubuntu-standard-2-4-40gb:~$ psql
    psql (12.1 (Ubuntu 12.1-1.pgdg18.04+1))
    Type "help" for help.
    
    postgres=# create database mybase;
    CREATE DATABASE
    1. Создайте пользователя myuser с паролем mypass:
    postgres=# create user myuser with encrypted password 'mypass';
    CREATE ROLE
    1. Дайте пользователю права для доступа к базе данных mybase:
    postgres=# grant all privileges on database mybase to myuser;
    GRANT
    1. Проверьте подключение с правами пользователя ОС Ubuntu:
    ubuntu@ubuntu-standard-2-4-40gb:~$ psql -hlocalhost -Umyuser -W mybase
    Password:
    psql (12.1 (Ubuntu 12.1-1.pgdg18.04+1))
    SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
    Type "help" for help.
    
    mybase=>

    Настройка сетевого доступа

    По умолчанию PostgreSQL слушает только 127.0.0.1. Чтобы настроить сетевой доступ к серверу, в файле /etc/postgresql/12/main/postgresql.conf найдите строку listen_addresses= и укажите следующее*:

    #------------------------------------------------------------------------------
    # CONNECTIONS AND AUTHENTICATION
    #------------------------------------------------------------------------------
    
    # - Connection Settings -
    
    #listen_addresses = 'localhost'        # what IP address(es) to listen on;
                        # comma-separated list of addresses;
                        # defaults to 'localhost'; use '*' for all
    listen_addresses = '*'


    Чтобы дать пользователю myuser сетевой доступ к базе данных mybase с любого адреса после авторизации по md5-паролю, в конец файла etc/postgresql/12/main/pg_hba.conf  добавьте строку:

    # host       DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
    host    mybase        myuser        0.0.0.0/0        md5

    Чтобы не прописывать в конфигурационный файл правила для каждого пользователя и базы данных,  разрешите авторизацию всех пользователей для доступа к любой базе данных, для доступа к которой у пользователя есть права , по md5-паролю. Для этого вместо предыдущей строки добавьте строку:

    # host       DATABASE  USER  ADDRESS  METHOD  [OPTIONS]
    host    all        all        0.0.0.0/0        md5

    Перезапустите PostgreSQL:

    ubuntu@ubuntu-standard-2-4-40gb:~$ sudo systemctl restart postgresql.service

    Убедитесь, что PostgreSQL слушает сеть:

    ubuntu@ubuntu-standard-2-4-40gb:~$ sudo netstat -tulpn | grep 5432
    tcp        0      0 0.0.0.0:5432            0.0.0.0:*               LISTEN      18214/postgres
    tcp6       0      0 :::5432                 :::*                    LISTEN      18214/postgres

    Проверьте сетевое подключение к базе данных с другого компьютера:

    root@ash:~# psql -h <POSTGRESQL_SERVER_IP> -Umyuser -W mybase
    Password:
    psql (11.5 (Debian 11.5-1+deb10u1), server 12.1 (Ubuntu 12.1-1.pgdg18.04+1))
    WARNING: psql major version 11, server major version 12.
             Some psql features might not work.
    SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
    Type "help" for help.
    
    mybase=>

    Обратная связь

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

    Полезна ли была эта статья?