Системы управления реляционными базами данных являются ключевым компонентом многих веб-сайтов и приложений. Они обеспечивают структурированный способ хранения данных и доступа к информации структурированным способом. PostgreSQL — это система управления реляционными базами данных (СУБД), которая реализует язык запросов SQL. Это популярный выбор для многих небольших и крупных проектов, поскольку он обладает множеством расширенных функций, таких как надежные транзакции и параллелизм без блокировок чтения. В этой статье будет показано, как управлять PostgreSQL из командной строки, обычно называемой PSQL.
# – данные команды должны выполняться с правами root либо непосредственно как пользователь root, либо с помощью команды sudo $ – данные команды должны выполняться как обычный пользователь
Postgres использует концепцию, называемую “роли”, для обработки аутентификации и авторизации. Эта концепция аналогична обычным учетным записям Unix, но Postgres использует термин “роль” для разграничения привилегий пользователей.
Postgres настраивается во время установки с идентификацией ident, что означает, что он связывает роли с системными учетными записями Unix/Linux. Если в Postgres существует роль, то пользователь Unix/Linux с таким же именем может войти в систему, используя эту роль.
Процедура установки создает учетную запись с именем postgres со встроенной в нее ролью Postgres. Чтобы использовать Postgres, мы должны войти в систему, используя эту учетную запись.
Войдите в учетную запись postgres на сервере, используя:
$ sudo -iu postgres
Теперь мы можем получить доступ к командной строке PostgreSQL с помощью команды
$ psql
Затем мы можем войти в систему и взаимодействовать с системой управления базами данных. Чтобы выйти из командной строки PostgreSQL, запустите эту команду, затем нажмите ENTER:
\q
Мы также можем запускать нужные команды напрямую через 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
Для входа в систему с использованием аутентификации на основе 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 с использованием командной строки, пожалуйста, поделитесь им со своими друзьями и оставьте комментарий ниже. Спасибо.