PostgreSQL 9.6.2 문서 | |||
---|---|---|---|
이전 | 위로 | 장 22. 데이터베이스 관리 | 다음 |
데이터베이스를 생성하려면 PostgreSQL 서버를 시작한 다음에 실행해야 한다(18.3절 참조).
데이터베이스는 SQL 명령 CREATE DATABASE으로 생성된다.
CREATE DATABASE name;
여기서, name은 SQL 식별자에 대한 일반 규칙을 따른다. 현재 role은 자동으로 새 데이터베이스의 소유자가 된다. 나중에 데이터베이스를 삭제하는 것은 데이터베이스 소유자의 권한이다(소유자가 달라도 데이터베이스의 모든 객체가 삭제됨).
데이터베이스 생성은 제한적이다. 권한 부여 방법은 21.2절을 참조 바란다.
CREATE DATABASECREATE DATABASE 명령을 실행하려면 데이터베이스 서버에 연결해야 하는데, 주어진 사이트에서 첫 번째 데이터베이스를 어떻게 만들 것인가가 문제가 된다. 첫 번째 데이터베이스는 데이터 저장소 영역을 초기화할 때 initdb 명령으로 항상 생성된다. (18.2절 참조.) 이 데이터베이스를 postgres라고 한다. 따라서 첫 번째 "일반" 데이터베이스를 생성하기 위해 postgres에 연결할 수 있다.
두 번째 데이터베이스 template1도 데이터베이스 클러스터 초기화 중에 생성된다. 클러스터 내에서 새 데이터베이스를 생성할 때마다 template1이 복제된다. 이것은 template1에서 변경된 내용이 추후 생성된 데이터베이스로 전파된다는 것을 의미한다. 따라서 새로 생성된 모든 데이터베이스로 전파되는 것을 원하지 않으면 template1에서 객체 생성을 하지 말아야 한다. 자세한 내용은 22.3절에 나와 있다.
createdb는 편의상 새 데이터베이스를 생성하기 위해 쉘에서 실행할 수 있는 프로그램이다.
createdb dbname
createdb는 마법이 아니다. 이것은 postgres 데이터베이스에 연결하고 위에서 설명한 대로 정확하게 CREATE DATABASE 명령을 실행한다. createdb 참조 페이지에는 호출 상세 내용이 나와 있다. 인자가 없는 createdb는 현재 사용자 이름으로 데이터베이스를 생성한다.
참고: 주어진 데이터베이스에 연결할 수 있는 사용자를 제한하는 방법에 대한 내용은 20장에 나온다.
가끔 다른 사용자를 위한 데이터베이스를 생성하고, 그 사용자를 새 데이터베이스의 소유자로 만들면, 해당 사용자가 스스로 새 데이터베이스를 환경 설정 및 관리할 수 있다. 이렇게 하려면 SQL 환경에서 다음 명령 중 하나를 사용해야 한다.
CREATE DATABASE dbname OWNER rolename;
또는 쉘에서 다음을 사용해야 한다.
createdb -O rolename dbname
다른 사용자를 위한 데이터베이스는 수퍼유저만 생성할 수 있다(즉, 멤버가 아닌 role의 경우).