Intro최근 PostgreSQL에서 심각한 보안 취약점인 CVE-2025-1094가 발견되었다. 이 취약점은 특정 상황에서 SQL 인젝션 공격이 가능하도록 만드는 치명적인 문제로, PQescapeLiteral(), PQescapeIdentifier(), PQescapeString(), PQescapeStringConn() 같은 libpq 함수들이 따옴표 구문을 제대로 처리하지 못하는 데서 비롯되었다.PostgreSQL 17.3, 16.7, 15.11, 14.16, 13.19 이전 버전이 영향을 받으며, PostgreSQL 개발팀은 2025년 2월 13일 해당 취약점을 해결한 보안 패치를 발표했다.https://www.boho.or.kr/kr/bbs/view.do?bbsId=B0000133&pageInd..
Data/PostgreSQL 8
Intro liquibase를 사용하여 데이터베이스 스키마를 관리하고 있습니다. 주로 PostgreSQL을 사용하고 있는데, 테스트를 수행할 때 별도의 외부 DB를 사용하지 않고 인메모리 DB를 이용하고자 했습니다. 그런데 gen_random_uuid와 같은 일부 PostgreSQL 문법과 시퀀스 생성 등이 발목을 잡았습니다. 그래서 인메모리 DB로 테스트를 할 때는 liquibase를 사용하지 않고, data.sql 파일을 불러와서 DB스키마를 생성하려고 합니다. 이를 위해 먼저 liquibase를 사용하여 PostgreSQL 데이터베이스에 초기 데이터를 입력한 다음, 이를 SQL로 추출하여 H2에서 사용 가능하게 편집하려고 합니다. liquibase로 변경 로그를 불러와 SQL로 추출할 수도 있지만,..
Intro 가끔 필요한 일이 돌아왔다. 데이터베이스에 직접 접속해서 뭔가를 변경 해야 한다. Docker 네트워크 내에서만 통신하고 외부로는 바인딩도, 포트 포워딩도 되어 있지 않으니, 번거롭게 다시 설정 하고 컨테이너 재시작 할 필요 없이 컨테이너 내부에 접속해서 바로 변경하면 되겠군. 얼른 마칠 생각을 하며 PostgreSQL 이 떠 있는 컨테이너에 접속하는중 docker exec -it postgres_container bash 이제 psql을 써볼까나..? psql 명령어와 함께 손에 익은 옵션을 기계적으로 붙이는중 psql -U postgres 앗.. postgres 유저가 없다..? 참. 나는 다른 이름으로 유저명을 지정했지 유저명을 변경해 재시도 하는 중 psql -U my_user_name..
Intro 여러가지 산출물 작업을 해야 하는데, 데이터베이스에 대한 내용들은 이미 워낙 방대하기 때문에 도저히 손으로 작업 할 엄두가 나지 않았습니다. 필요에 의해 쿼리를 작성 했으나 추후 또 필요할 경우가 생겼을 때 시간을 절약 하기 위해, 또한 비슷한 고민을 하고 있는 분들에게 도움이 되었으면 하는 마음에 글로 작성해 남겨두려 합니다. SQL 제가 산출물 작업 하면서 필요한 내용들 위주로 쿼리를 작성 하였기 때문에 필요한 자료가 조금씩 다를 경우에는 일단 실행 해본 후에 쿼리를 약간씩 수정해서 사용 하시면 됩니다. 전체 테이블 주석과 실제 테이블명 조회 테이블에 주석을 달아놓지 않았다면 NULL로 표기됩니다. 평소에 주석을 꼭 달아두어야 나중에 서류 작업 할 때 편합니다. 예시를 들기 위해 엉뚱한 D..
도커 컨테이너에 있는 Postgresql 데이터베이스에 접근해서 psql로 계층형 쿼리 조회하고 그 결과를 csv 파일로 저장해서 로컬로 가져오기 계층형 쿼리 상품 p 가 있고, 아이디는 product_id, 상위 product는 parent_product_id 라고 할 때, 아래와 같이 계층형 쿼리를 작성 할 수 있습니다. with recursive search_product(product_id) as ( select p.* from product p where product_id =21306 union all select p.* from product p, search_product sp where k.parent_product_id = sp.product_id ) select * from searc..