ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

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

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

Системы управления реляционными базами данных являются ключевым компонентом многих веб-сайтов и приложений. Они обеспечивают структурированный способ хранения данных и доступа к информации структурированным способом. PostgreSQL – это система управления реляционными базами данных (СУБД), которая реализует язык запросов SQL. Это популярный выбор для многих небольших и крупных проектов, поскольку он обладает множеством расширенных функций, таких как надежные транзакции и параллелизм без блокировок чтения. В этой статье будет показано, как управлять PostgreSQL из командной строки, обычно называемой PSQL.

 

Соглашения

# – данные команды должны выполняться с правами root либо непосредственно как пользователь root, либо с помощью команды sudo
$ – данные команды должны выполняться как обычный пользователь

 

Роли PostgreSQL и базы данных

Postgres использует концепцию, называемую “роли”, для обработки аутентификации и авторизации. Эта концепция аналогична обычным учетным записям Unix, но Postgres использует термин “роль” для разграничения привилегий пользователей.

Postgres настраивается во время установки с идентификацией ident, что означает, что он связывает роли с системными учетными записями Unix/Linux. Если в Postgres существует роль, то пользователь Unix/Linux с таким же именем может войти в систему, используя эту роль.

 

Войдите в учетную запись PostgreSQL

Процедура установки создает учетную запись с именем postgres со встроенной в нее ролью Postgres. Чтобы использовать Postgres, мы должны войти в систему, используя эту учетную запись.

Войдите в учетную запись postgres на сервере, используя:

$ sudo -iu postgres

 

Теперь мы можем получить доступ к командной строке PostgreSQL с помощью команды

$ psql

 

Затем мы можем войти в систему и взаимодействовать с системой управления базами данных. Чтобы выйти из командной строки PostgreSQL, запустите эту команду, затем нажмите ENTER:

\q

 

Доступ к командной строке PostgreSQL без смены учетных записей

Мы также можем запускать нужные команды напрямую через sudo. Например, в предыдущем примере мы хотим войти только в приглашение Postgres. Мы можем войти в систему с ролью postgres под именем текущего пользователя с помощью sudo:

$ sudo -u postgres psql

 

Эта команда приведет нас к PostgreSQL без входа в одну из его ролей.

Мы можем завершить работу с помощью команды:

\q

 

Создайте новую роль

После установки сервера PostgreSQL у нас остается только существующая роль postgres в базе данных. Мы можем создать новую роль с помощью команды createuser. Флаг –interactive запросит необходимые значения.

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

$ sudo -u postgres createuser --interactive

 

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

Enter name of role to add: master
Shall the new role be a superuser? (y/n) y

 

Мы можем предоставить больше опций с дополнительными флагами. Проверьте доступные опции с помощью команды:

$ man createuser

 

Создание новой базы данных

Система аутентификации Postgres автоматически создает базу данных с тем же именем, что и у роли, чтобы роль имела к ней доступ.

Ранее мы создали пользователя с именем master, который автоматически получит доступ к базе данных с именем master. Мы можем создать необходимую базу данных с помощью команды createdb. Если вы вошли в систему с помощью учетной записи postgres, введите команду:

$ createdb master

 

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

$ sudo -u postgres createdb master

 

Откройте приглашение Postgres с новой ролью

Для входа в систему с использованием аутентификации на основе ident вам понадобится пользователь Linux с тем же именем роли и той же базой данных Postgres.

Если пользователь с таким именем не существует, вам нужно будет создать его с помощью команды adduser . Вам нужно будет запустить эту команду с правами sudo (не от postgres, а от обычного пользователя Linux).:

$ sudo adduser master

 

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

$ sudo -iu master
$ psql

 

Или вы также можете использовать следующую строку:

$ sudo -u master psql

 

Вы войдете в систему автоматически.

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

$ psql -d postgres

 

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

\conninfo

 

Вы увидите это как результат:

You are connected to database "master" as user "master" via socket in "/var/run/postgresql" at port "5432".

 

Создание и удаление таблиц

Как только мы подключимся к системе баз данных PostgreSQL, мы сможем выполнить несколько простых задач. Сначала мы создадим таблицу для хранения данных. Давайте создадим таблицу, описывающую список серверов для дата-центра.

Базовый синтаксис для создания таблицы следующий:

CREATE TABLE table_name (
column_name1 col_type (field_length) column_constraints,
column_name2 col_type (field_length),
column_name3 col_type (field_length)
);

 

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

Теперь мы создадим таблицу, подобную этой:

CREATE TABLE datacenter (
equip_id serial PRIMARY KEY,
rackname varchar (50) NOT NULL,
color varchar (25) NOT NULL,
location varchar (25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
install_date date
);

 

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

Мы не указываем длину для двух столбцов equip_id и install_date . Это связано с тем, что для некоторых типов столбцов не требуется максимальная длина.

Столбцы rackname и color не должны иметь значения null. Мы также создаем столбец location и ограничение, чтобы ограничить его значение 8 параметрами. Последний столбец – это столбец install_date, который сообщает нам, когда мы его установили.

Мы можем увидеть только что созданную таблицу с помощью команды:

\d

 

Вы увидите это после выполнения приведенной выше команды.

                  List of relations
 Schema |          Name           |   Type   | Owner  
--------+-------------------------+----------+--------
 public | datacenter              | table    | master
 public | datacenter_equip_id_seq | sequence | master
(2 rows)

 

У нас уже есть таблица datacenter, но у нас также есть другая запись с именем datacenter_equip_id_seq с типом последовательности. Эта запись представляет последовательный тип, который мы указали ранее для столбца equip_id. Он запишет следующий номер для автоматического создания данных для столбцов серийного типа.

Если вы хотите просмотреть данные таблицы без их последовательности, введите:

\dt

 

Вы увидите это:

 List of relations 
Schema | Name | Type | Owner 
--------+------------+-------+-------- 
public | datacenter | table | master 
(1 row)

 

Добавление, запрос и удаление данных в таблице

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

INSERT INTO datacenter (rackname, color, location, install_date) VALUES ('mercurius', 'red', 'south', '2023-02-16');
INSERT INTO datacenter (rackname, color, location, install_date) VALUES ('venus', 'grey', 'northwest', '2024-09-25');

 

При вводе данных следует учитывать несколько моментов, чтобы свести к минимуму ошибки. Во-первых, имя столбца не должно быть помечено знаком ””, но необходимо указать содержимое столбца.

Нам также необходимо избегать предоставления данных столбца equip_id вручную. Содержимое будет создано автоматически.

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

SELECT * FROM datacenter;

 

Наш вывод должен быть таким:

equip_id | rackname | color | location | install_date
----------+-----------+-------+-----------+--------------
1 | mercurius | red | south | 2020-02-16
2 | venus | grey | northwest | 2024-09-25
(2 rows)

 

Здесь мы видим, что столбец equip_id уже существует автоматически, а остальные данные успешно добавлены.

Если mercurius больше не используется и выведен из эксплуатации, мы должны удалить его. Чтобы удалить данные из таблицы, используйте команду:

DELETE FROM datacenter WHERE rackname = 'mercurius';

 

Если мы захотим снова просмотреть содержимое нашей таблицы, мы обнаружим, что слайда там больше нет:

SELECT * FROM datacenter;

 

И это результат:

equip_id | rackname | color | location | install_date
----------+----------+-------+-----------+--------------
2 | venus | grey | northwest | 2024-09-25
(1 row)

 

Как добавлять и удалять столбцы из таблицы

Мы можем легко добавлять новые столбцы в существующую таблицу. Мы можем добавить столбец, который будет отображаться, когда rackname поддерживался в последний раз.:

ALTER TABLE datacenter ADD last_maint date;

 

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

SELECT * FROM datacenter;

 

Вы увидите это:

equip_id | rackname | color | location | install_date | last_maint
----------+----------+-------+-----------+--------------+------------
2 | venus | grey | northwest | 2024-09-25 |
(1 row)

 

Как обновить данные в таблице

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

Допустим, мы хотим получить данные типа “venus” и изменить их цвет на красный (это заменит все данные типа “venus”):

UPDATE datacenter SET color = 'red' WHERE rackname = 'venus';

 

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

SELECT * FROM datacenter;

 

И это результат:

equip_id | rackname | color | location | install_date | last_maint
----------+----------+-------+-----------+--------------+------------
2 | venus | red | northwest | 2024-09-25 |
(1 row)

 

Как вы можете видеть, цвет изменился.

Поздравляем! Вы узнали о подключении базы данных PSQL: как управлять PostgreSQL из командной строки. Теперь вы должны знать основные команды PostgreSQL.

 

Если вам понравился наш пост о PSQL с использованием командной строки, пожалуйста, поделитесь им со своими друзьями и оставьте комментарий ниже. Спасибо.

Exit mobile version