db_user_namespace
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | — | sighup | boolean |
| 15 | — | sighup | boolean |
| 16 | — | sighup | boolean |
PostgreSQL 16까지 제공되던 파라미터로, 데이터베이스별 user 이름을 사용할 수 있게 했다. 기본값은 off였고 PostgreSQL 17에서 제거됐다.
이 파라미터를 켜면 user를 username@dbname 형태로 만들고, client가 username으로 접속하면 서버가 @와 데이터베이스 이름을 붙여 그 데이터베이스 전용 user를 찾는 방식으로 동작했다. 전역 user로 접속하려면 client에서 joe@처럼 @만 붙여야 했다. client와 서버의 user 이름 표현이 달라지는 구조라 authentication은 항상 서버 쪽 이름 기준으로 이루어졌고, user 이름을 salt로 쓰는 md5 방식과는 함께 쓸 수 없었다.
공식 문서에서도 완전한 해법이 나올 때까지의 임시 수단이라고 명시했던 기능이며, 예고대로 제거됐다. 데이터베이스별로 접속 계정을 분리하고 싶다면 별도 role을 만들고 pg_hba.conf와 권한으로 통제하는 것이 정석이다.
출처: PostgreSQL 16 문서