Database 6

[PostgreSQL] DATABASE 강제 DROP

개요 Database를 복구하다가 문제가 생겼었는데, 복구한 데이터베이스를 지우고 다시 복구하려고 한다. 그런데 DATABASE에 연결한 사용자가 있어 DROP에 실패했다. 강제로 DATABASE를 삭제하는 방법을 적어둔다. DROP DATABASE 데이터베이스를 삭제할 때는 DROP 문을 사용한다. DROP 문은 되돌릴 수 없기 때문에 신중하게 사용해야 한다. DROP DATABASE db_name DROP DATABASE IF EXISTS db_name IF EXESTS를 사용하면 삭제할 데이터베이스가 존재하지 않아서 발생하는 오류를 방지할 수 있다. 데이터베이스 강제 삭제 삭제를 수행하는 사용자가 삭제할 데이터베이스를 사용하고 있는 경우도 포함해서, 삭제하려고 하는 데이터베이스에 연결된 세션이 있으..

Database 2024.01.11

[PostgreSQL] 사용자 비밀번호 변경

개요 PostgreSQL 데이터베이스 전체 덤프를 복원하는 중, 데이터베이스의 기본 사용자인 postgres 계정의 비밀번호가 변경되었다. 변경된 비밀번호를 원래 값으로 원복하려고 한다. 방법을 정리해둔다. ALTER psql로 superuser 권한을 가진 계정에 접속한 뒤, ALTER문을 이용해 비밀번호를 변경한다. psql -U postgres ALTER USER WITH PASSWORD ''; 다만 ALTER 문으로 비밀번호를 변경하면 히스토리 등에 의해 변경한 비밀번호가 남아있을 수 있으니 주의해야 한다. \password psql로 superuser 권한을 가진 계정에 접속한 뒤, 메타 명령어 \password를 이용해 비밀번호를 변경한다. psql -U postgres \password 비밀..

Database 2024.01.04

[PostgreSQL] pg_dumpall - 데이터베이스 백업/복원

개요 PostgreSQL 데이터베이스 내 데이터 전체를 백업하고 복원해야 할 일이 있어 방법을 정리해 둔다. 백업 pg_dumpall은 데이터베이스 클러스터 전체 내용을 덤프 하는 프로그램으로, 클러스터의 각 데이터베이스를 백업하고 role, tablespaces와 같은 클러스터 전체 데이터도 저장한다. 기본 사용법은 아래와 같다. pg_dumpall > pg_dumpall -f pg_dumpall -U -f # 예시 pg_dumpall -U postgres > dumpall_superset_postgres.sql pg_dumpall은 role, tablespaces, 빈 데이터베이스를 재생성하는 명령어를 내보낸 후, 각 데이터베이스에 대한 pg_dump를 호출하는 방식으로 동작한다. 결과 파일은 SQL..

Database 2023.12.29

[PostgreSQL] 사용자 목록 확인

개요 PostgreSQL에서 사용자 목록과 권한을 확인하는 방법을 정리해 둔다. psql 메타 명령어 psql 메타 명령어 \du는 사용자명, 사용자에게 부여된 권한과 소속 그룹 정보를 확인할 수 있다. \du 출력에서 확인할 수 있는 기본 권한(role) 목록은 다음과 같다. 권한 설명 SUPERUSER 데이터베이스에 대한 모든 작업을 허용하는 관리자 권한 CREATEDB 데이터베이스 생성 가능 CREATEROLE 신규 역할 생성 가능 REPLICATION 데이터베이스 복제를 위한 역할. 꽤 높은 권한을 가지고 있어 복제 용도로만 사용하는 것을 권장한다. BYPASSRLS Row 수준 보안 정책 통과 가능. 테이블 덤프 등의 작업 제한용 SQL 데이터베이스 사용자에 대한 정보를 저장하는 PG_USER ..

Database 2023.12.28

[MySQL] 윈도우 함수 - OVER

윈도우 함수 (Window Function) 행과 행 간의 관계를 정의하기 위해 제공되는 함수이다. 데이터베이스를 다룰 때는 GROUPY BY와 COUNT, SUM과 같은 집계 함수를 많이 사용하는데, 윈도우 함수도 GROUP BY와 비슷하게 데이터를 그룹화하여 순위, 합계, 평균 등을 구할 수 있다. 다만 집계된 결과만 보여주는 GROUP BY와 다르게 기존 데이터에 집계된 데이터를 추가하여 보여준다. 즉, GROUP BY는 결과 데이터의 행 수가 줄어드는 반면 윈도우 함수를 사용하면 결과 데이터 행 수가 줄어들지 않는다. MySQL의 경우 8.0부터 윈도우 함수를 지원한다. 이 글에서는 간단히 윈도우 함수의 구조와 사용 예시를 정리한다. 구조 윈도우 함수는 아래와 같은 구조로 사용한다. FUNCTIO..

Database 2023.05.14

[Linux] unixODBC - MySQL 연결

개요 2023.05.02 - [Ubuntu] unixODBC 설치에서 unixODBC를 설치했는데, 이 글에서는 unixODBC를 이용해 MySQL에 연결하도록 구성한다. 연결할 MySQL은 8.0.32이다. 구성 환경 - AWS EC2 - Ubuntu 20.04 LTS arm64 - MySQL 8.0.32 지난 글과 마찬가지로 최대한 root 권한을 덜 사용하는 방식으로 진행한다. 드라이버 설치 unixODBC로 데이터베이스를 연결하기 위해서는 데이터베이스 드라이버가 필요하다. unixODBC로 연결할 수 있는 데이터베이스는 https://www.unixodbc.org/drivers.html에서 확인할 수 있다. 이 글에서는 MySQL과 연결할 수 있도록 MySQL ODBC Connector를 설치해야..

Linux 2023.05.03
1