현재 PostgreSQL을 사용하며 DB 작업을 하고 있는데,
방금까지도 보였던 DB 안에 Table이 열리지 않는 에러가 발생했다.
[42501] ERROR: permission denied for table user
해당 코드를 해석해보면, user이라는 테이블에 대한 접근 권한이 사용자에게 없을 때 발생하는 에러이다.
이 오류를 해결하기 위해서는 다음 단계를 따라 필요한 권한을 부여해야 한다.
PostgreSQL에서 특정 사용자에게 테이블에 대한 모든 권한을 부여하려면 GRANT 명령어를 사용해야 한다.
1. PostgreSQL 에 로그인
먼저 PostgreSQL 데이터베이스에 관리자 권한으로 로그인한다. 터미널에서 다음 명령어를 실행하여 PostgreSQL에 로그인 한다.
# billing은 DB 이름
psql -U postgres -d billing
2. 권한 부여
로그인 후, 다음 SQL 명령어를 사용하여 postgres 사용자에게 user 테이블에 대한 모든 권한을 부여한다.
# postgres는 관리자 사용자 이름(필요에 따라 다른 사용자로 변경 가능)
GRANT ALL PRIVILEGES ON TABLE user TO postgres;
3. 권한 확인
권한이 올바르게 부여되었는지 확인하려면 다음 쿼리를 사용하여 권한을 확인할 수 있다. 이 명령은 user table의 권한을 보여주며, user 사용자가 권한을 가지고 있는지 확인 가능하다.
\dp user
4. 종료
작업이 완료되면 \q를 입력해서 PostgreSQL 세션을 종료한다.
사용자에 대하여 특정 테이블의 모든 권한을 부여할 수 있다. 권한 부여 후에는 해당 사용자가 테이블에 접근하고 수정할 수 있어야 한다.