-
Подключение к серверу PostgreSQL:
Подключитесь к серверу PostgreSQL с помощью инструмента командной строки psql от имени пользователя postgres.
sudo -u postgres psql
-
Подключение к базе данных reporting_db:
Подключитесь к базе данных reporting_db:
\c reporting_db
-
Создание пользователя и предоставление членства в reporting_role:
Давайте создадим нового пользователя с именем report_user. Затем мы предоставим этому пользователю членство в роли reporting_role. Это означает, что report_user унаследует привилегии, предоставленные reporting_role.
CREATE USER report_user;
GRANT reporting_role TO report_user;
Вы должны увидеть следующий вывод:
CREATE ROLE
GRANT ROLE
-
Настройка PostgreSQL для аутентификации без пароля:
По умолчанию PostgreSQL использует аутентификацию peer, которая может вызвать проблемы с подключением в этой лаборатории. Мы изменим ее на trust для упрощения доступа для report_user.
Сначала выйдите из оболочки psql:
\q
Теперь измените файл pg_hba.conf, чтобы изменить метод аутентификации. Следующая команда sed создаст резервную копию исходного файла как pg_hba.conf.bak и заменит peer на trust для локальных подключений.
sudo sed -i.bak 's/^local\s\+all\s\+all\s\+peer/local all all trust/' /etc/postgresql/14/main/pg_hba.conf
Перезагрузите PostgreSQL, чтобы применить изменения:
sudo service postgresql reload
-
Вставка данных в таблицу sales_data:
Подключитесь обратно к базе данных от имени пользователя postgres.
sudo -u postgres psql -d reporting_db
Вставьте некоторые примеры данных в таблицу sales_data для целей тестирования.
INSERT INTO sales_data (product, amount) VALUES ('Laptop', 1200.00), ('Mouse', 25.00), ('Keyboard', 75.00);
Вы должны увидеть следующий вывод:
INSERT 0 3
Выйдите из оболочки psql.
\q
-
Подключение к базе данных reporting_db от имени пользователя report_user:
Откройте новое окно терминала и используйте следующую команду:
psql -d reporting_db -U report_user
Вы будете подключены к базе данных как report_user без запроса пароля.
-
Тестирование привилегий:
Теперь попробуйте выбрать данные из таблицы sales_data:
SELECT * FROM sales_data;
Вы должны увидеть вставленные вами данные:
id | product | amount
----+----------+--------
1 | Laptop | 1200.00
2 | Mouse | 25.00
3 | Keyboard | 75.00
(3 rows)
Если вы видите этот вывод, это означает, что report_user имеет привилегию SELECT на таблицу sales_data, которая была предоставлена через роль reporting_role.
Выйдите из оболочки psql.
\q