웹사이트 검색

Debian 8에서 PostgreSQL 9.4를 설치하고 사용하는 방법


소개

관계형 데이터베이스는 다양한 요구 사항에 대한 데이터 구성의 초석입니다. 그들은 온라인 쇼핑에서 로켓 발사에 이르기까지 모든 것을 지원합니다. 존경할 만하면서도 여전히 게임에 많이 사용되는 데이터베이스는 PostgreSQL입니다. PostgreSQL은 대부분의 SQL 표준을 따르고, ACID 트랜잭션이 있고, 외래 키 및 보기를 지원하며, 아직 활발하게 개발 중입니다.

실행 중인 응용 프로그램에 안정성, 패키지 품질 및 손쉬운 관리가 필요한 경우 Debian 8(코드명 "Jessie\)이 Linux 배포판의 가장 좋은 후보 중 하나입니다. ”이지만 안정성과 품질은 인정받고 있습니다. 애플리케이션이나 서비스에 데이터베이스가 필요한 경우 Debian 8과 PostgreSQL의 조합은 업계 최고 중 하나입니다.

이 기사에서는 새로운 Debian 8 Stable 인스턴스에 PostgreSQL을 설치하고 시작하는 방법을 보여줍니다.

전제 조건

첫 번째는 Debian 8 Stable 시스템을 실행하는 것입니다. Debian 8 문서에서 초기 서버 설정의 지침을 따를 수 있습니다. 이 튜토리얼에서는 Debian 8 Stable Droplet이 준비되어 있다고 가정합니다.

다른 언급이 없는 한 이 자습서의 모든 명령은 sudo 권한이 있는 루트가 아닌 사용자로 실행해야 합니다. 사용자를 생성하고 sudo 권한을 부여하는 방법을 알아보려면 Debian 8의 초기 서버 설정을 확인하십시오.

PostgreSQL 설치

PostgreSQL을 설치하기 전에 다음과 같이 apt 패키지 목록을 업데이트하여 Debian 리포지토리의 최신 정보가 있는지 확인하십시오.

  1. sudo apt-get update

업데이트 중인 패키지 목록과 다음 메시지가 표시되어야 합니다.

Reading package lists... Done.

postgresql로 시작하는 여러 패키지가 있습니다.

  • postgresql-9.4: PostgreSQL 서버 패키지
  • postgresql-client-9.4: PostgreSQL용 클라이언트
  • postgresql: Debian New Maintainers' Guide에 더 잘 설명된 \metapackage

postgresql-9.4 패키지를 직접 설치하려면:

  1. sudo apt-get install postgresql-9.4 postgresql-client-9.4

메시지가 표시되면 Y를 입력하여 패키지를 설치합니다. 모든 것이 잘 되었다면 이제 패키지가 저장소에서 다운로드되어 설치됩니다.

설치 확인

PostgreSQL 서버가 올바르게 설치되었고 실행 중인지 확인하려면 ps 명령을 사용할 수 있습니다.

# ps -ef | grep postgre

터미널에 다음과 같은 내용이 표시되어야 합니다.

postgres 32164     1  0 21:58 ?        00:00:00 /usr/lib/postgresql/9.4/bin/postgres -D /var/lib/   postgresql/9.4/main -c config_file=/etc/postgresql/9.4/main/postgresql.conf
postgres 32166 32164  0 21:58 ?        00:00:00 postgres: checkpointer process
postgres 32167 32164  0 21:58 ?        00:00:00 postgres: writer process
postgres 32168 32164  0 21:58 ?        00:00:00 postgres: wal writer process
postgres 32169 32164  0 21:58 ?        00:00:00 postgres: autovacuum launcher process
postgres 32170 32164  0 21:58 ?        00:00:00 postgres: stats collector process 

성공! PostgreSQL이 성공적으로 설치되어 실행 중입니다.

PostgreSQL 데이터베이스에 액세스

Debian에서 PostgreSQL은 postgres라는 기본 사용자 및 기본 데이터베이스와 함께 설치됩니다. 데이터베이스에 연결하려면 먼저 루트로 로그인한 상태에서 다음 명령을 실행하여 postgres 사용자로 전환해야 합니다(sudo 액세스에서는 작동하지 않음).

  1. su - postgres

이제 postgres로 로그인되어야 합니다. PostgreSQL 콘솔을 시작하려면 psql을 입력합니다.

  1. psql

완료! PostgreSQL 콘솔에 로그인되어 있어야 합니다. 다음 프롬프트가 표시되어야 합니다.

psql (9.4.2)
Type "help" for help.

postgres=# 

psql 콘솔을 종료하려면 \\q 명령을 사용하십시오.

새 역할 만들기

기본적으로 Postgres는 인증 및 승인을 돕기 위해 \역할\이라는 개념을 사용합니다. 이는 어떤 면에서 일반 Unix 스타일 계정과 유사하지만 PostgreSQL은 사용자와 그룹을 구분하지 않고 대신 더 유연한 용어를 선호합니다. "역할\.

설치 시 PostgreSQL은 "ident\ 인증을 사용하도록 설정됩니다. 즉, PostgreSQL 역할을 일치하는 Unix/Linux 시스템 계정과 연결합니다. PostgreSQL 역할이 있는 경우 연결된 Linux 시스템 계정에 로그인하여 로그인할 수 있습니다.

설치 절차는 기본 Postgres 역할과 연결된 postgres라는 사용자 계정을 생성했습니다.

추가 역할을 생성하려면 createuser 명령을 사용할 수 있습니다. 이 명령은 PostgreSQL 콘솔 내부가 아니라 사용자 postgres로 실행해야 합니다.

  1. createuser --interactive

이것은 기본적으로 올바른 PostgreSQL 명령을 호출하여 사양에 맞는 사용자를 생성하는 대화형 셸 스크립트입니다. 역할 이름, 수퍼유저여야 하는지 여부, 역할이 새 데이터베이스를 생성할 수 있는지 여부, 역할이 새 역할을 생성할 수 있는지 여부 등 몇 가지 질문을 합니다. man 페이지에 자세한 정보가 있습니다.

  1. man createuser

새 데이터베이스 생성

PostgreSQL은 기본적으로 일치하는 시스템 계정에서 요청한 인증 역할로 설정됩니다. (postgresql.org에서 이에 대한 자세한 정보를 얻을 수 있습니다.) 또한 연결할 역할에 대해 일치하는 데이터베이스가 존재한다는 가정도 함께 제공됩니다. 따라서 test1이라는 사용자가 있는 경우 해당 역할은 기본적으로 test1이라는 데이터베이스에 연결을 시도합니다.

postgres 사용자로 다음 명령을 호출하여 적절한 데이터베이스를 생성할 수 있습니다.

  1. createdb test1

이제 새 데이터베이스 test1이 생성됩니다.

새 사용자로 PostgreSQL에 연결

test1이라는 Linux 계정이 있고 일치하는 PostgreSQL test1 역할을 생성했으며 test1 데이터베이스를 생성했다고 가정해 보겠습니다. Linux에서 사용자 계정을 test1로 변경하려면:

  1. su - test1

그런 다음 다음 명령을 사용하여 test1 PostgreSQL 역할로 test1 데이터베이스에 연결합니다.

  1. psql

이제 postgres 대신 새로 생성된 사용자 test1이 포함된 PostgreSQL 프롬프트가 표시되어야 합니다.

테이블 생성 및 삭제

이제 PostgreSQL 데이터베이스 시스템에 연결하는 방법을 알았으므로 몇 가지 기본 작업을 완료하는 방법을 살펴보겠습니다.

먼저 일부 데이터를 저장할 테이블을 생성해 보겠습니다. 놀이기구를 설명하는 표를 만들어 봅시다.

이 명령의 기본 구문은 다음과 같습니다.

CREATE TABLE table_name (
    column_name1 col_type (field_length) column_constraints,
    column_name2 col_type (field_length),
    column_name3 col_type (field_length)
);

보시다시피 테이블에 이름을 지정한 다음 원하는 열과 열 유형 및 필드 데이터의 최대 길이를 정의합니다. 선택적으로 각 열에 대한 테이블 제약 조건을 추가할 수도 있습니다.

클라우드 서버의 PostgreSQL에서 테이블을 생성, 제거 및 관리하는 방법 문서에서 Postgres에서 테이블을 생성하고 관리하는 방법에 대해 자세히 알아볼 수 있습니다.

우리의 목적을 위해 다음과 같은 간단한 테이블을 만들 것입니다.

CREATE TABLE playground (
    equip_id serial PRIMARY KEY,
    type varchar (50) NOT NULL,
    color varchar (25) NOT NULL,
    location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')),
    install_date date
);

우리는 우리가 가지고 있는 장비의 목록을 작성하는 놀이터 테이블을 만들었습니다. 이는 직렬 유형인 장비 ID로 시작합니다. 이 데이터 유형은 자동 증가 정수입니다. 우리는 이 열에 기본 키의 제약 조건을 부여했습니다. 즉, 값은 고유해야 하며 null이 아니어야 합니다.

두 열에 대해 필드 길이를 지정하지 않았습니다. 일부 컬럼 유형은 길이가 유형에 의해 암시되기 때문에 설정된 길이가 필요하지 않기 때문입니다.

그런 다음 장비 유형 및 색상에 대한 열을 제공하며 각 열은 비워둘 수 없습니다. 그런 다음 위치 열을 만들고 값이 8개의 가능한 값 중 하나여야 하는 제약 조건을 만듭니다. 마지막 열은 장비를 설치한 날짜를 기록하는 날짜 열입니다.

테이블을 보려면 psql 프롬프트에서 \\dt 명령을 사용하십시오. 결과는 다음과 유사합니다.

             List of relations
 Schema |    Name    | Type  |  Owner 
--------+------------+-------+----------
 public | playground | table | postgres

보시다시피 놀이터 테이블이 있습니다.

테이블에서 데이터 추가, 쿼리 및 삭제

이제 테이블이 생성되었으므로 일부 데이터를 테이블에 삽입할 수 있습니다.

슬라이드와 그네를 추가해 보겠습니다. 추가하려는 테이블을 호출하고 열 이름을 지정한 다음 각 열에 대한 데이터를 제공하여 이 작업을 수행합니다. 슬라이드와 스윙을 다음과 같이 추가할 수 있습니다.

INSERT INTO playground (type, color, location, install_date) VALUES ('slide', 'blue', 'south', '2014-04-28');
INSERT INTO playground (type, color, location, install_date) VALUES ('swing', 'yellow', 'northwest', '2010-08-16');

몇 가지 사항에 유의해야 합니다. 먼저, 열 이름을 인용해서는 안 되지만 입력하는 열 값에는 인용 부호가 필요하다는 점에 유의하십시오.

명심해야 할 또 다른 사항은 equip_id 열에 대한 값을 입력하지 않는다는 것입니다. 이는 테이블에 새 행이 생성될 때마다 자동으로 생성되기 때문입니다.

그런 다음 다음을 입력하여 추가한 정보를 다시 가져올 수 있습니다.

SELECT * FROM playground;

출력은

 equip_id | type  | color  | location  | install_date 
----------+-------+--------+-----------+--------------
        1 | slide | blue   | south     | 2014-04-28
        2 | swing | yellow | northwest | 2010-08-16

여기에서 equip_id가 성공적으로 채워졌고 다른 모든 데이터가 올바르게 구성되었음을 확인할 수 있습니다. 슬라이드가 깨지고 놀이터에서 슬라이드를 제거하는 경우 다음을 입력하여 테이블에서 행을 제거할 수도 있습니다.

DELETE FROM playground WHERE type = 'slide';

테이블을 다시 쿼리하면:

SELECT * FROM playground;

슬라이드가 더 이상 테이블의 일부가 아닌 것을 볼 수 있습니다.

 equip_id | type  | color | location | install_date 
----------+-------+-------+----------+--------------
        1 | slide | blue  | south    | 2014-04-28

유용한 명령

다음은 현재 환경에 대한 아이디어를 얻는 데 도움이 되는 몇 가지 명령입니다.

  • ?: 여기에 나열되지 않은 명령을 포함하여 psql 명령의 전체 목록을 가져옵니다.\n
  • \\h: SQL 명령에 대한 도움말을 얻습니다. 구문에 대한 도움말을 보려면 특정 명령을 사용하여 이를 따를 수 있습니다.\n
  • \\q: psql 프로그램을 종료하고 Linux 프롬프트로 종료합니다.\n
  • \\d: 현재 데이터베이스에서 사용 가능한 테이블, 보기 및 시퀀스를 나열합니다.\n
  • \\du: 사용 가능한 역할 나열\n
  • \\dp: 액세스 권한 나열\n
  • \dt: 테이블 나열
  • \l: 데이터베이스 나열
  • 이러한 명령을 사용하면 PostgreSQL 데이터베이스, 테이블 및 역할을 즉시 탐색할 수 있어야 합니다.

    결론

    이제 완전한 기능을 갖춘 PostgreSQL 데이터베이스가 Debian 시스템에서 실행되고 있어야 합니다. 축하해요! 여기에서 갈 문서의 과다가 있습니다:

    • PostgreSQL 매뉴얼
    • postgresql-doc 패키지 설치: sudo apt-get install postgresql-doc
    • README 파일은 /usr/share/doc/postgresql-doc-9.4/tutorial/README에 설치됨

    PostgreSQL에서 지원되는 SQL 명령의 전체 목록은 다음 링크를 참조하십시오.

    • SQL 명령

    데이터베이스의 다양한 기능을 비교하려면 다음을 확인하십시오.

    • SQLite 대 MySQL 대 PostgreSQL

    역할 및 권한에 대한 자세한 내용은 다음을 참조하세요.

    • VPS의 PostgreSQL에서 역할을 사용하고 부여 권한을 관리하는 방법