제 토이 프로젝트는 postgresql 12.9를 사용하고 있어요. 특정 api를 호출했을 때 쿼리가 실행이 될 텐데요. 쿼리가 실행될 때 어떤 lock이 걸리는지 간단하게 보기로 하였습니다. 데드락이 생길 수 있을까? 라는 의문이 들었기 때문입니다. 만약에 생긴다면 적당한 방법으로 회피를 해야 하기도 하고요. 그러면 어떤 식으로 lock이 걸리는 지 알아야 할 겁니다. 데이터가 그리 크지 않아서, 쿼리 수행이 매우 순식간에 끝나게 됩니다. 그래서, 쿼리가 실행되는 도중에 잠깐 sleep을 시켜야 됩니다. 이를 위해서 pg_sleep 함수를 이용하였습니다. 사용법은 간단합니다. 안에 몇 초 동안 sleep를 시킬 건지 넣기만 하면 됩니다. 1 row(s) fetched가 있는데요. 옆에 5.89초가 있습..
postgresql 검색 결과
안녕하세요. 이번 시간에는 postgresql serial permission 오류가 떴을 때, 어떻게 해결해야 하는지 알아보겠습니다. 저는 서버에 psql을 설치했고, 로컬에 dbeaver로 접속할 수 있는 환경을 구축해 놓은 상태입니다. 저는 도서관 api 프로젝트에서 책을 빌리고 반납하고, 어떤 책을 빌렸는지에 대한 api를 추가하는 작업을 하고 test 하는 중이였습니다. 이 중에서 POST /borrow는 책을 빌리는 api입니다. bookId와 userId를 넣으면, 2번 유저가 id가 2인 책을 빌리게 됩니다. 요청을 보내 보겠습니다. 그랬더니 500이 떨궈지는데요. 서버 내에서 문제가 발생했음을 의미합니다. 로그를 보니까 permission denied가 되어 있는데요. 권한 때문에 무엇인..
mysql에는 auto increment가 있었습니다. postgresql에는 없을까요? 문서의 8.1.4를 보시면, serial 시리즈가 비슷한 역할을 한다고 되어 있습니다. 저는 도서관 api를 구현하는 토이 프로젝트를 하고 있어요. 이 중에, book 관련한 api는 얼추 만들었으니, 책을 빌리고 반납하는 api를 만들겠습니다. 그러려면, user 테이블하고, borrow 테이블이 필요한데요. 아직, login 기능은 만들 생각이 없으니, 그냥 borrow 테이블만 만들도록 하겠습니다. 책을 빌리는데, 누가 빌리나요? 유저가 빌릴 겁니다. 즉, 책 아이디와, 유저 아이디가 필요합니다. 그리고 언제 빌렸는지 알기 위해서, 빌린 시각, borrow_time도 저장하겠습니다. 그런데, 빌린다. 요청에 가..
저번 시간에 유저를 생성하고, 비밀번호를 바꾸고, encryption 알고리즘을 md5에서 scram-sha-256으로 바꾸는 것까지 하였습니다. 이번 시간에는 유저 인증 정보를 보는 방법을 알아 봅시다. 먼저 인증 정보는 pg_authid에 있습니다. 이 문서에 대략적인 설명이 나와 있는데요. rolname은 gh와 같은 유저 이름이 됩니다. 그리고, rolpassword는 암호화된 비밀번호를 의미합니다. SCRAM-SHA-256은 너무 기니까, 대충 앞에서 40자만 뽑아서 가져왔습니다. 그러기 위해서, left 함수를 썼습니다. 이제 인증 방식과 암호화 방식을 md5로 바꿔 봅시다. pg_hba.conf 파일입니다. 이것은 postgresql.conf 파일입니다. 이렇게 설정하고, postgresql..
이번 시간에는 postgresql에서 어떻게 인증 방식을 md5에서 scram-sha-256으로 바꾸는지 보도록 하겠습니다. 12버전에서 테스트 하였습니다. 먼저, 유저 gh를 생성하고, LOGIN이 가능하게 하겠습니다. 그럴려면, gh라는 role을 생성하고 LOGIN 권한을 주면 됩니다. 다음에, password를 설정하려면, alter role ~ with password ~ 요렇게 입력하시면 됩니다. 다음에 du를 입력해 보시면, Role name이 쭉 뜨는 것을 알 수 있습니다. 여기서, postgres는 Superuser이면서 role도 create 할 수 있고, DB도 만들 수 있고 그런 걸로 보아서는 전지 전능한 존재인 듯 합니다. 털리면 안 될 듯 합니다? cho로 로그인을 한 상태에서 ..
최근댓글