Database/PostgreSQL 8

[PostgreSQL] role "rolename" cannot be dropped because some objects depend on it

psql 접속 후 \du 입력 시 users의 역할이 출력된다.사용하지 않는 것을 정리하고자 역할을 삭제하려 했다. 그런데 에러가 발생하였다. username1의 role을 삭제할 때 발생한 'some objects depend on it'라는 에러는 해당 role이 특정 객체(ex. 데이터베이스)에 대한 권한을 가지고 있을 때 발생한다.이러한 경우에는 다음과 같이 해결하면 된다. 1. 데이터베이스 접속'drop role username1'을 입력했을 때 발생한 에러에서 데이터베이스 username2의 권한이라는 세부사항(DETAIL: privileges for database username2)이 있었다. 그 말인즉슨, username2가 username1의 role을 제어할 수 있다는 것이다. 그러므..

Database/PostgreSQL 2024.10.12

[PostgreSQL] 권한 부여 및 제거

권한 부여데이터베이스에 대한 권한 부여-- 접속 권한GRANT CONNECT ON DATABASE 데이터베이스명 TO 계정명;-- 객체 생성 권한GRANT CREATE ON DATABASE 데이터베이스명 TO 계정명;-- 모든 권한GRANT ALL PRIVILEGES ON DATABASE 데이터베이스명 TO 계정명; 테이블에 대한 권한 부여-- 조회 권한GRANT SELECT ON TABLE 테이블명 TO 계정명;-- 삽입 권한GRANT INSERT ON TABLE 테이블명 TO 계정명;-- 수정 권한GRANT UPDATE ON TABLE 테이블명 TO 계정명;-- 삭제 권한GRANT DELETE ON TABLE 테이블명 TO 계정명;-- 모든 권한GRANT ALL PRIVILEGES ON ALL TAB..

Database/PostgreSQL 2024.09.12

[PostgreSQL/Error] permission denied for language internal

설치파일 테스트를 위해 데이터베이스 계정을 새로 만들어 설치파일과 관련된 설정 SQL 파일을 실행했는데 위 에러가 발생했다. 찾아보니 내가 만든 데이터베이스 계정이 슈퍼유저 권한이 없었던 게 문제였다.또한 저 SQL 파일 이외에 DDL SQL 파일도 있었기 때문에 CREATEDB 권한도 필요했다. 슈퍼유저 권한과 CREATEDB 권한 설정은 다음 쿼리를 실행하면 된다.1) 슈퍼유저 권한 부여 쿼리ALTER USER DB사용자계정명 WITH SUPERUSER;#예시> ALTER USER tistory WITH SUPERUSER; 2) CREATEDB 권한 부여 쿼리ALTER USER DB사용자계정명 CREATEDB;# ALTER USER tistory CREATEDB;  참고) DB 사용자 계정마다 부여된..

Database/PostgreSQL 2024.05.23

[PostgreSQL] DB에 있는 모든 테이블 삭제하기

회사에서 릴리즈 파일에 최종 업그레이드 버전 패치쉘을 수행한 후 테스트했었는데, 이후에 다른 테스트를 위해 사용하던 DB의 모든 테이블을 삭제해야 했다. PostgreSQL의 DB 내 모든 테이블을 삭제하는 방법은 다음과 같다. 1. pgsql이 설치되어 있는 서버로 들어가 psql로 해당 스키마에 연결한다.예를 들어 username이 pgpatch이고 dbname이 pgtest라면 아래와 같이 입력한다.psql -U pgpatch -d pgtest 2. 아래 스크립트를 입력한다.DO $$ DECLARE r RECORD;BEGIN FOR r IN (SELECT tablename FROM pg_tables WHERE schemaname = current_schema()) LOOP E..

Database/PostgreSQL 2024.02.06

[PostgreSQL] @Transactional(readOnly=false)

Spring MVC에서 PostgreSQL로 INSERT를 하려고 했는데 ERROR: cannot execute INSERT in a read-only transaction 라는 에러가 발생하였다. 이는 PostgreSQL의 트랜지션이 읽기 전용으로 되어 있어 발생하는 것이다. 이땐, INSERT 구문을 실행하는 메소드에 @Transitional(readOnly=false) 라는 어노테이션을 선언해주면 된다. readOnly의 값이 true가 default이므로 false로 변경하여 insert도 할 수 있게 만들어준다. // 예시 @Override @Transitional(readOnly=false) public ResultModel insertData(UserModel user_model) { .....

Database/PostgreSQL 2023.05.22

[PostgreSQL] pg_hba.conf 파일 설정

pg_hba.conf 파일 pg_hba.conf 파일은 클라이언트 인증 파일로, 데이터베이스 클러스터의 데이터 디렉토리에 저장되는 환경설정 파일로 제어가 된다. hba는 호스트 기반 인증(host-based authentication)의 약어이다. 해당 파일은 initDB.exe를 실행하면 data 디렉토리 안에 생성된다. # Put your actual configuration here # ---------------------------------- # # If you want to allow non-local connections, you need to add more # ""host"" records. In that case you will also need to make PostgreSQL # ..

Database/PostgreSQL 2023.04.27