-
PostgreSQL 서버에 연결:
postgres 사용자로 psql 명령줄 도구를 사용하여 PostgreSQL 서버에 연결합니다.
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 인증을 사용하며, 이는 이 실습에서 연결 문제를 일으킬 수 있습니다. report_user의 액세스를 단순화하기 위해 trust로 변경하겠습니다.
먼저 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
-
report_user로 reporting_db 데이터베이스에 연결:
새 터미널 창을 열고 다음 명령을 사용합니다.
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가 reporting_role을 통해 부여된 sales_data 테이블에 대한 SELECT 권한을 가지고 있음을 의미합니다.
psql 쉘을 종료합니다.
\q