postgresql 데이터베이스를 생성합니다. 데이터베이스 삭제. 도움말 정보 얻기

시스템 관리

이 게시물은 간단한 지침초보자, PostgreSQL을 처음 설치하는 분들을 위해. 모든 것이 여기에 있습니다 필요한 정보 PostgreSQL을 시작하려면

DBMS에 연결

가장 먼저 해야 할 일은 PostgreSQL에 대한 액세스 권한을 얻고, 슈퍼유저로 액세스하는 것입니다.
인증 설정은 pg_hba.conf 파일에 있습니다.
  1. 로컬 모든 postgres 피어
이 줄은 postgres 사용자가 모든 로컬 데이터베이스에 연결할 수 있음을 나타냅니다. 포스트그레SQL DBMS소켓을 통해. 비밀번호를 입력할 필요가 없으며 운영 체제에서 사용자 이름을 전송하고 인증에 사용됩니다.
연결하자:
  1. $ sudo -u 포스트그레스 psql 포스트그레스 포스트그레스
네트워크를 통해 연결하려면 pg_hdba.conf에 다음 줄을 추가해야 합니다.
  1. # 유형 데이터베이스 사용자 주소 방법
  2. 호스트sl 모두 모두 0.0.0.0/0 md5
인증방법 MD5이는 연결하려면 비밀번호를 입력해야 함을 의미합니다. psql 콘솔을 자주 사용하는 경우 이는 그리 편리하지 않습니다. 일부 작업을 자동화하려는 경우 나쁜 소식은 psql이 암호를 인수로 허용하지 않는다는 것입니다. 이러한 문제를 해결하는 방법에는 두 가지가 있습니다. 적절한 환경 변수를 설정하고 비밀번호를 특수 .pgpass 파일에 저장하는 것입니다.

PGPASSWORD 환경 변수 설정

일부 운영 체제에서는 다음을 볼 수 있으므로 이 방법을 사용하지 않는 것이 낫다고 바로 말씀드리겠습니다. 일반 사용자 ps를 사용하는 환경변수 하지만 원한다면 터미널에 다음과 같이 작성해야 합니다.
  1. PGPASSWORD=mypasswd 내보내기
변수는 현재 세션에서 사용할 수 있습니다. 모든 세션에 대해 변수를 설정해야 하는 경우 예제의 행을 .bashrc 또는 .bash_profile 파일에 추가해야 합니다.

.pgpass 파일에 비밀번호 저장

Linux에 관해 이야기하는 경우 파일은 $HOME(/home/username)에 있어야 합니다. 소유자(0600)만이 쓰기 및 읽기 권한을 가지고 있어야 합니다. 파일에 다음과 같은 줄을 작성해야 합니다.
  1. 호스트 이름:포트:데이터베이스:사용자 이름:비밀번호
처음 4개 필드에 "*"를 쓸 수 있습니다. 이는 필터링 없음(전체 선택)을 의미합니다.

도움말 정보 얻기

\? - 간단한 설명과 함께 사용 가능한 모든 명령이 표시됩니다.
\h - 사용 가능한 모든 쿼리 목록을 표시합니다.
\h CREATE - 특정 요청에 대한 도움말을 제공합니다.

DBMS 사용자 관리

PostgreSQL 사용자 목록을 얻는 방법은 무엇입니까? 또는 pg_user 테이블을 쿼리할 수 있습니다.
  1. SELECT * pg_user에서;

새 PostgreSQL 사용자 만들기

에서 껍데기 psql 이 작업은 CREATE 명령을 사용하여 수행할 수 있습니다.
  1. 비밀번호 "password"를 사용하여 사용자 이름 생성;
아니면 터미널을 이용하셔도 됩니다.
  1. createuser -S -D -R -P 사용자 이름
비밀번호를 입력하라는 메시지가 표시됩니다.

사용자 비밀번호 변경

  1. 비밀번호를 사용하여 사용자 이름 변경 "비밀번호" ;

사용자 역할 변경

사용자에게 데이터베이스 생성 권한을 부여하려면 다음 쿼리를 실행하세요.
  1. ALTER ROLE 사용자 이름 WITH CREATEDB ;

데이터베이스 관리

psql 터미널에 데이터베이스 목록 표시: Linux 터미널과 동일:
  1. psql -l
psql에서 데이터베이스 생성(PostgreSQL 터미널)
  1. CREATE DATABASE dbname OWNER dbadmin ;
터미널을 사용하여 새 데이터베이스 만들기:
  1. Createdb -O 사용자 이름 dbname;

데이터베이스 접근 권한 설정

사용자가 데이터베이스의 소유자라면 모든 권리를 갖습니다. 그러나 다른 사용자에게 액세스 권한을 부여하려면 GRANT 명령을 사용하면 됩니다. 아래 쿼리를 사용하면 사용자가 데이터베이스에 연결할 수 있습니다. 하지만 pg_hba.conf 구성 파일을 잊지 마세요. 적절한 연결 권한도 있어야 합니다.
  1. dbadmin에게 데이터베이스 dbname에 대한 연결 부여;

PostgreSQL은 개방형 기능을 갖춘 크로스 플랫폼 객체 관계형 DBMS입니다. 소스 코드. 이 문서에서는 PostgreSQL을 설치하는 방법을 설명합니다. 우분투 리눅스, 연결하고 몇 가지 간단한 SQL 쿼리와 백업 설정 방법을 실행합니다.

Ubuntu 12.10에 PostgreSQL 9.2를 설치하려면 다음 명령을 실행하십시오.

sudo apt-add-repository ppa:pitti/postgresql
sudo apt-get 업데이트
sudo apt-get postgresql-9.2 설치

셸을 통해 DBMS 작업을 시도해 보겠습니다.

sudo -u 포스트그레스 psql

테스트 데이터베이스와 테스트 사용자를 만들어 보겠습니다.

데이터베이스 생성 test_database;
비밀번호가 "qwerty"인 test_user 사용자 생성;
test_user에게 데이터베이스 test_database의 모든 권한을 부여합니다.

셸을 종료하려면 \q 명령을 입력합니다.

이제 test_user를 대신하여 생성된 데이터베이스로 작업해 보겠습니다.

psql -h localhost test_database test_user

새 테이블을 만들어 보겠습니다.

시퀀스 user_ids 생성;
CREATE TABLE 사용자(
ID INTEGER PRIMARY KEY DEFAULT NEXTVAL ("user_ids" ) ,
로그인 CHAR(64) ,
비밀번호 CHAR(64));

다른 DBMS와 달리 PostgreSQL에는 auto_increment 속성이 있는 열이 없습니다. 대신 Postgres는 시퀀스를 사용합니다. ~에 이 순간 nextval 함수를 사용하여 주어진 시퀀스에 대해 고유한 숫자를 얻을 수 있다는 것을 아는 것만으로도 충분합니다.

SELECT NEXTVAL ("사용자 ID" ) ;

사용자 테이블의 id 필드에 대한 기본값을 다음과 같이 설정합니다. NEXTVAL("사용자 ID"), 우리는 auto_increment가 제공하는 것과 동일한 효과를 얻었습니다. 테이블에 새 레코드를 추가할 때 고유 ID가 자동으로 생성되므로 ID를 지정할 필요가 없습니다. 여러 테이블이 동일한 순서를 사용할 수 있습니다. 이렇게 하면 이 테이블의 일부 필드 값이 겹치지 않도록 보장할 수 있습니다. 이런 의미에서 시퀀스는 auto_increment보다 더 유연합니다.

단 하나의 명령을 사용하여 완전히 동일한 테이블을 생성할 수 있습니다.

CREATE TABLE 사용자2(
ID 직렬 기본 키,
로그인 CHAR(64) ,
비밀번호 CHAR(64));

이 경우 id 필드의 시퀀스가 ​​자동으로 생성됩니다.

이제 \d 명령을 사용하면 사용 가능한 모든 테이블 목록을 볼 수 있고, \d users를 사용하면 사용자 테이블에 대한 설명을 볼 수 있습니다. 원하는 정보를 얻지 못한 경우 \d 대신 \d+를 사용해 보세요. \l 명령을 사용하여 데이터베이스 목록을 가져올 수 있고, \c dbname 명령을 사용하여 특정 데이터베이스로 전환할 수 있습니다. 명령 도움말을 표시하려면 \? .

PostgreSQL은 기본적으로 테이블 및 열 이름을 소문자로 변환한다는 점에 유의하는 것이 중요합니다. 이 동작을 원하지 않으면 큰따옴표를 사용할 수 있습니다.

CREATE TABLE "anotherTable" ("someValue" VARCHAR (64 ) ) ;

이 DBMS 작업을 시작할 때 어려움을 초래할 수 있는 PostgreSQL의 또 다른 기능은 소위 "스키마"입니다. 스키마는 데이터베이스 내부에 테이블이 있는 디렉터리와 같은 테이블의 네임스페이스와 같습니다.

스키마 만들기:

스키마 예약 생성;

구성표로 전환:

검색 경로를 예약으로 설정하세요.

\dn 명령을 사용하여 기존 구성표 목록을 볼 수 있습니다. 기본 스키마의 이름은 public입니다. 원칙적으로는 스키마 존재 여부를 몰라도 PostgreSQL을 성공적으로 사용할 수 있습니다. 그러나 레거시 코드로 작업할 때와 일부 극단적인 경우에는 스키마에 대해 아는 것이 매우 유용할 수 있습니다.

그렇지 않으면 PostgreSQL로 작업하는 것이 다른 관계형 DBMS로 작업하는 것과 크게 다르지 않습니다.

INSERT INTO 사용자(로그인, 비밀번호)
VALUES ("afiskon" , "123456" ) ;
SELECT * 사용자로부터;

이제 다른 컴퓨터에서 Postgres에 연결하려고 하면 실패합니다.

psql -h 192.168.0.1 test_database test_user

Psql: 서버에 연결할 수 없습니다. 연결이 거부되었습니다.
서버가 호스트 "192.168.0.1"에서 실행 중이고 수락합니까?
포트 5432의 TCP/IP 연결?

이 문제를 해결하려면 다음 줄을 추가하세요.

listening_addresses = "localhost,192.168.0.1"

.../etc/postgresql/9.2/main/postgresql.conf 파일에도 적용됩니다.

데이터베이스 서버에 대한 액세스 권한이 있는지 확인하는 첫 번째 방법은 데이터베이스를 생성해 보는 것입니다. 일하고 있는 PostgreSQL 서버여러 데이터베이스를 관리할 수 있으므로 다양한 프로젝트와 사용자에 대해 별도의 데이터베이스를 만들 수 있습니다.

관리자가 이미 귀하를 위해 데이터베이스를 생성하고 해당 이름을 제공했을 수도 있습니다. 이 경우 이 단계를 건너뛰고 다음 섹션으로 넘어갈 수 있습니다.

이 예에서는 mydb라는 데이터베이스를 생성하려면 다음 명령을 실행합니다.

$createdb mydb

메시지가 표시되지 않으면 작업이 성공한 것이므로 이 섹션을 계속 진행하지 않아도 됩니다.

다음과 같은 메시지가 표시되는 경우:

Createdb: 명령 찾을 수 없음

이는 PostgreSQL이 올바르게 설치되지 않았음을 의미합니다. 전혀 설치되지 않았거나 해당 디렉토리가 쉘 명령 검색 경로에 포함되지 않습니다. 절대 경로를 사용하여 동일한 명령을 호출해 보세요.

$ /usr/local/pgsql/bin/createdb mydb

이 경로는 귀하에게 다를 수 있습니다. 관리자에게 문의하거나 설치 지침을 따라 상황을 수정했는지 확인하십시오.

또 다른 가능한 답변:

Createdb: postgres 데이터베이스에 연결하지 못했습니다. 서버에 연결하지 못했습니다. 해당 파일이나 디렉터리가 없습니다. 실제로 로컬에서 실행되고 도메인 소켓 "/tmp/.s.PGSQL.5432"를 통해 연결을 허용합니까?

이는 서버가 다운되었거나 생성되어 서버에 연결할 수 없음을 의미합니다. 이 경우 설치 지침을 검토하거나 관리자에게 문의하세요.

다음 메시지를 받을 수도 있습니다.

Createdb: postgres 데이터베이스에 연결하지 못했습니다. 중요: "joe" 역할이 존재하지 않습니다.

귀하의 사용자 이름이 나타나는 곳입니다. 이는 관리자가 귀하를 위해 PostgreSQL 계정을 생성하지 않았음을 나타냅니다. (PostgreSQL 계정은 운영 체제 사용자 계정과 다릅니다.) 귀하가 관리자인 경우 계정 생성 방법에 대한 지침은 20장을 읽으십시오. 새 사용자를 생성하려면 PostgreSQL이 설치된 운영 체제 사용자(일반적으로 postgres)여야 합니다. 이름이 지정되었을 수도 있습니다. PostgreSQL 사용자, OS의 이름과 일치하지 않습니다. 이 경우 -U 스위치를 사용하거나 PGUSER 환경 변수를 설정하여 PostgreSQL 사용자 이름을 명시적으로 지정해야 합니다.

당신이 가지고 있다면 계정사용자이지만 데이터베이스를 생성할 권한이 없으면 다음 메시지가 표시됩니다.

Createdb: 데이터베이스 생성 실패: 오류: 데이터베이스를 생성할 권한이 없습니다.

모든 사용자가 데이터베이스를 생성할 수 있는 것은 아닙니다. PostgreSQL이 데이터베이스 생성을 거부하는 경우 그렇게 하려면 권한이 필요합니다. 이 경우 관리자에게 문의하세요. PostgreSQL을 직접 설치한 경우 이 소개의 목적을 위해서는 데이터베이스 서버를 실행하는 사용자로 로그인해야 합니다.

다른 이름으로 데이터베이스를 생성할 수도 있습니다. PostgreSQL을 사용하면 원하는 만큼 많은 데이터베이스를 생성할 수 있습니다. 데이터베이스 이름은 문자로 시작해야 하며 63자를 초과할 수 없습니다. 현재 사용자 이름을 데이터베이스 이름으로 사용하는 것이 편리합니다. 많은 유틸리티는 기본적으로 이 이름을 사용하므로 명령을 더 쉽게 입력할 수 있습니다. 이 이름으로 데이터베이스를 생성하려면 다음을 입력하면 됩니다.

$createdb

데이터베이스를 더 이상 사용하지 않으려면 삭제할 수 있습니다. 예를 들어, mydb 데이터베이스의 소유자(작성자)인 경우 다음 명령을 실행하여 이를 삭제할 수 있습니다.

$dropdb mydb

(이 명령은 현재 사용자의 데이터베이스 이름을 기본값으로 지정하지 않으므로 명시적으로 지정해야 합니다.) 이렇게 하면 데이터베이스와 관련된 모든 파일이 물리적으로 삭제되며 이 작업은 취소할 수 없으므로 결과를 고려하지 않고 수행하지 마십시오.

데이터베이스 서버에 액세스할 수 있는지 확인하는 첫 번째 테스트는 데이터베이스 생성을 시도하는 것입니다. 운영중인 서버 PostgreSQL은 여러 데이터베이스를 관리할 수 있습니다. 일반적으로 각 프로젝트 또는 각 사용자에 대해 별도의 데이터베이스가 사용됩니다. 귀하의 컴퓨터 관리자가 이미 귀하를 위해 데이터베이스를 생성했을 수도 있습니다. 데이터베이스 이름을 알려줬어야 합니다. 이 경우 이 섹션을 건너뛰고 다음 섹션으로 넘어갈 수 있습니다. 이 예에서는 mydb라는 새 데이터베이스를 생성하려면 다음 명령을 사용할 수 있습니다.

메시지 없이 명령이 완료되면 이 단계가 성공적으로 완료된 것이므로 이 섹션이 끝날 때까지 다음 단계를 건너뛸 수 있습니다.

다음과 유사한 내용이 표시되는 경우:created:명령을 찾을 수 없습니다.

이는 PostgreSQL 제품이 올바르게 설치되지 않았음을 의미합니다. 모든 것이 설치되지 않았거나 셸의 검색 경로가 적절하게 설정되지 않았습니다. 전체 경로를 사용하여 이 명령을 호출해 보세요.

$ /usr/local/pgsql/bin/createdb mydb

컴퓨터의 전체 경로는 다를 수 있습니다. 상황을 해결하려면 관리자에게 문의하거나 설치 지침을 확인하세요.

받을 수 있는 또 다른 메시지: createb: 데이터베이스 postgres에 연결할 수 없습니다: 서버에 연결할 수 없습니다: 해당 파일이나 디렉터리가 없습니다. 해당 파일이나 디렉터리가 없습니다. 서버가 로컬에서 실행 중이고 Unix 도메인 소켓 "/tmp/.s에서 연결을 허용합니까? PGSQL.5432"?

이는 서버가 시작되지 않았거나 createb 명령으로 예상한 대로 시작되지 않았음을 의미합니다. 다시 한 번 설치 지침을 확인하거나 관리자에게 문의하세요.

수신할 수 있는 또 다른 메시지: createb: postgres 데이터베이스에 연결할 수 없습니다: 치명적: 사용자 "joe"가 존재하지 않습니다.

Joe 대신 로그인 이름이 언급된 곳입니다. 이 메시지는 관리자가 PostgreSQL에서 사용자를 생성하지 않은 경우 나타납니다. (PostgreSQL 사용자는 운영 체제 사용자가 아닙니다.) 관리자인 경우 사용자 생성에 대한 자세한 내용은 20장을 참조하십시오. 다음 사이트에 등록해야 합니다. 운영 체제 PostgreSQL을 실행하는 사용자(일반적으로 postgres)의 이름으로 DBMS에 첫 번째 사용자를 생성합니다. 데이터베이스 생성 명령의 경우 현재 운영 체제 사용자 이름과 다른 PostgreSQL 사용자 이름을 지정할 수도 있습니다. 이 경우 -U 옵션이나 설정을 사용하여 PostgreSQL 사용자 이름을 설정해야 합니다. 환경 변수 PGUSER.

만약에 원하는 사용자존재하지만 데이터베이스를 생성하는 데 필요한 권한이 없으면 다음 메시지가 표시됩니다: 생성된b: 데이터베이스 생성 실패: 오류: 데이터베이스 생성에 대한 권한이 거부되었습니다.

모든 사용자가 새 데이터베이스를 생성할 수 있는 권한을 갖고 있는 것은 아닙니다. PostgreSQL이 데이터베이스 생성 시도를 거부하는 경우 시스템 관리자는 사용자에게 데이터베이스 생성 권한을 부여해야 합니다. 이 경우에는 그에게 문의하십시오. PostgreSQL을 직접 설치한 경우 이 자습서의 목적을 위해서는 데이터베이스 서버를 실행하는 사용자로 로그인해야 합니다.

다른 이름으로 데이터베이스를 생성할 수도 있습니다. PostgreSQL을 사용하면 단일 서버에 원하는 수의 데이터베이스를 만들 수 있습니다. 데이터베이스 이름은 문자와 숫자로 구성되어야 하며(항상 문자가 먼저 와야 함) 길이는 63바이트를 초과할 수 없습니다. 사용자와 동일한 이름으로 데이터베이스를 생성하는 것은 매우 편리합니다. 많은 도구에서는 이 이름을 데이터베이스 이름으로 기본 설정하므로 너무 많은 버튼을 클릭할 필요가 없습니다. 사용자와 동일한 이름으로 데이터베이스를 생성하려면 다음을 입력하면 됩니다. $createdb 나중에 데이터베이스를 사용하지 않으려면 삭제할 수 있습니다. 예를 들어, mydb 데이터베이스의 소유자(작성자)인 경우 다음 명령을 사용하여 삭제할 수 있습니다. $ dropdb mydb

(이 명령의 경우 데이터베이스 이름을 지정해야 합니다. 데이터베이스 이름이 현재 사용자의 이름이라고 가정하지 않습니다.) 이 명령지정된 데이터베이스와 관련된 모든 파일을 물리적으로 삭제하여 복구할 수 없도록 하므로 주의해서 이 작업을 수행하십시오.