В этом руководстве мы объясним десять полезных и практичных команд PostgreSQL в Linux.

PostgreSQL — очень мощная система управления объектно-реляционными базами данных. По сообщениям, это SQL, предназначенный для обработки множества одновременных пользователей и ряда рабочих нагрузок. PostgreSQL совместим с различными операционными системами, такими как macOS, Windows, FreeBSD и Linux, о чем будет рассказано в этой статье.

Мы установим PostgreSQL на Ubuntu 22.04, но вы можете выбрать любой дистрибутив Linux. Давайте начнем!

Предпосылки

  • Сервер с Ubuntu 22.04 в качестве ОС
  • Права пользователя: пользователь root или обычный пользователь с привилегиями sudo

Обновите систему

Свежая установка Ubuntu 22.04 требует обновления пакетов до последних доступных версий.

sudo apt-get update -y && sudo apt-get upgrade -y

Установите PostgreSQL

Последняя версия PostgreSQL 14 доступна в репозитории Ubuntu 22.04 по умолчанию, поэтому нам просто нужно выполнить следующую команду:

sudo apt install postgresql postgresql-contrib

После установки запустите и включите службу PostgreSQL.

sudo systemctl enable postgresql.service && sudo systemctl start postgresql.service

Проверьте, запущена ли служба и порт PostgreSQL — запустить команду ниже:

sudo netstat -tunlp | grep 5432

Вы должны получить следующий вывод:

root@vps:~# sudo netstat -tunlp | grep 5432
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN      370876/postgres

Чтобы проверить установленную версию PostgreSQL, выполните следующую команду:

sudo psql --version

Вы должны получить следующий вывод:

root@host:~# sudo psql --version
psql (PostgreSQL) 14.6 (Ubuntu 14.6-0ubuntu0.22.04.1)

1. Доступ к консоли PostgreSQL

Чтобы получить доступ к консоли PostgreSQL, выполните на своем сервере следующую команду:

sudo -u postgres psql

Вы должны получить следующий вывод:

root@vps:~# sudo -u postgres psql
psql (14.6 (Ubuntu 14.6-0ubuntu0.22.04.1))
Type "help" for help.

postgres=#

2. Получение списка баз данных

Чтобы просмотреть базу данных в Postgres, выполните следующую команду:

\l

Вы должны получить следующий вывод:

postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(3 rows)

postgres=#

3. Выберите базу данных

Чтобы выбрать базу данных, выполните команду \c «имя базы данных»:

Вы должны получить следующий вывод:

postgres=# \c postgres
You are now connected to database "postgres" as user "postgres".

Теперь мы можем проверить размер текущей базы данных (postgres).

SELECT pg_database_size(current_database());

Это вернет размер в байтах

postgres=# SELECT pg_database_size(current_database());
 pg_database_size
------------------
          8774435
(1 row)

Если вы хотите, чтобы вывод был в удобочитаемом формате в килобайтах, мегабайтах или гигабайтах, выполните следующую команду:

select pg_size_pretty(pg_database_size(current_database()));

Теперь вывод должен выглядеть так:

 pg_size_pretty
----------------
 8569 kB
(1 row)

4. Список пользователей и назначенных ролей

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

\du

Вы должны получить таблицу в качестве вывода с пользователем PostgreSQL и его привилегиями, как описано ниже:

postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

5. Создание базы данных и пользователя в PostgreSQL

Чтобы создать новую базу данных в PostgreSQL, выполните следующую команду:

create database my_db;

После создания базы данных вы получите следующий вывод:

postgres=# create database my_db;
CREATE DATABASE

Чтобы создать нового пользователя с паролем, выполните следующую команду:

CREATE USER my_user WITH ENCRYPTED PASSWORD 'StrongPasswordHere';

После создания пользователя вы получите следующий вывод:

postgres=# CREATE USER my_user WITH ENCRYPTED PASSWORD 'StrongPasswordHere';
CREATE ROLE

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

grant all privileges on database my_db to my_user;

Теперь, если вы перечислите базы данных с помощью команды \l, вы получите следующие строки:

   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+----------------------
my_db| postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres         +
          |          |          |             |             | postgres=CTc/postgres+
          |          |          |             |             | testuser=CTc/postgres

6. Подключитесь к базе данных с назначенным пользователем

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

\c my_db my_user

Введите пароль, и вы получите следующий вывод:

postgres=# \c my_db my_user;
Password for user my_user:
You are now connected to database "my_db" as user "my_user".
my_db=>

7. Изменить пароль пользователя

Чтобы изменить пароль пользователя, выполните следующую команду:

ALTER USER my_user WITH PASSWORD 'NewPasswordHere';

После смены пароля вы должны получить следующее:

postgres=# ALTER USER my_user WITH PASSWORD 'NewPasswordHere';
ALTER ROLE

8. Перезагрузите конфигурацию PostgreSQL

Чтобы перезагрузить конфигурацию PostgreSQL без перезагрузки сервера, выполните следующую команду:

select pg_reload_conf();

После перезапуска вы получите следующий вывод:

postgres=# select pg_reload_conf();
 pg_reload_conf
----------------
 t
(1 row)

9. Проверьте версию PostgreSQL

Чтобы проверить версию PostgreSQL через командную строку postgres, выполните следующую команду:

SELECT version();

Вы должны получить вывод, подобный этому:

postgres=# SELECT version();
                                                             version
---------------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 14.6 (Ubuntu 14.6-0ubuntu0.22.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 11.2.0-19ubuntu1) 11.2.0, 64-bit
(1 row)

10. Выйдите из командной строки PostgreSQL.

Чтобы выйти из командной строки PostgreSQL, выполните следующую команду:

\q

Поздравляем! Мы показали вам несколько полезных и практичных команд PostgreSQL, ежедневно используемых системными администраторами, разработчиками и некоторыми обычными пользователями.

Если вам понравился этот пост о десяти полезных и практичных командах PostgreSQL на Ubuntu 22.04, поделитесь им с друзьями в социальных сетях. Спасибо.