postgresql에서 유저 정보를 출력하는 방법을 알아봅시다. 

 


 postgresql을 깔았습니다. 어떻게 접속하면 될까요?

 

 psql을 치면, postgres에 접속합니다. 그런데, role "cho"가 존재하지 않는다고 뜹니다. role. 이게 무엇을 하는 지 대략적으로 감이 오시나요? user U에게 역할을 주고, 해당 역할만을 수행할 수 있게 하는 것이 롤이라고 할 수 있어요. 예를 들어서, A는 login을 할 수 있다던지. 문서를 보면 간략하게 나와 있습니다.

 

 cho에는 아무런 규칙도, 역할도 주어져 있지 않습니다. default로 생성된 것은 없을까요? 리눅스의 계정 정보를 살펴 봅시다.

 

 post 패턴을 찾으면, 떡하니 보이는 것은 postgres입니다. 이 유저로 접속을 하면 왠지 될 거 같습니다.

 

 cho로 접속한 상황에서, postgres 유저로 로그인을 하려고 합니다. psql -U USER는 USER라는 이름으로 로그인을 한다는 의미입니다. 그런데, error가 뜨고, authentication fail이 뜹니다. 로그인 정보를 못 불러오는 것인지 모르겠네요. etc에 있는 passwd 파일을 보니까, postgres라는 유저가 보였습니다. 이 유저로 로그인을 해 봅시다. 

 

 저는 cho 명령어로 sudo를 할 수 없게 막아놓았으니, su 명령어로 루트로 접속한 다음에, 목적 유저로 로그인 하겠습니다.

 

 다음에 psql -U postgres 명령어를 입력하면, 포스트그리스가 실행이 됨을 알 수 있습니다. 리눅스 포스트그리스 유저로 로그인을 한 상태라면, psql만 입력해도 됩니다.

 


 이제 뭘 해야 할까요? 도움말을 봐야 겠군요.

 

 help를 입력하면, 간단한 사용법이 나옵니다. \?을 입력하면, psql commands에 대한 도움말이 있습니다.

 

 \?을 입력하면, 여러 명령어들이 뜨는데요. \du는 roles들을 출력하는 것입니다. 유저에게 역할을 주는 개념이라고 생각하시면 편합니다. 뒤에 PATTERN은 패턴과 매치되는 결과를 의미하는 모양이네요.

 

 도움말에서 언급된 대로, \du를 입력해 봅시다. 그러면, Role name이 하나 나오는데요. 이것은 유저 이름을 의미합니다. 다음에, role들 List를 보면, Create role, Create DB 등이 보이는데요. 유저에게 주어진 권한이라고 유추할 수 있습니다. cho라는 룰을 보이지 않아요. 그러니, cho로 접속해도 되지 않았을 겁니다.

 

 

 create role U를 하면 role name이 U인 것을 추가합니다. 즉 유저 이름이 U인 유저를 추가합니다. role을 추가하고, \du를 입력해서 list를 보면, gh가 추가되었음을 알 수 있어요. 그런데, 규칙을 보면, gh는 Cannot login이라고 되어 있어요. 유저는 있는데, 로그인이 안 된다는 의미입니다.

 

 이번 시간에는, 어떻게 psql에 접속하는지, 유저들은 어떻게 볼 수 있는지 알아보았습니다. 다음 시간에 유저에게 어떻게 접속 권한을 주고, 권한을 어떻게 주는지 이야기 해 보도록 하겠습니다.