웹사이트 검색

Ubuntu 18.04에서 PostgreSQL을 설치하고 사용하는 방법


PostgreSQL(줄여서 Postgres)은 강력하고 고급이며 성능이 뛰어난 안정적인 관계형 문서 데이터베이스 시스템인 오픈 소스입니다. 안전한 데이터 저장 및 관리를 위한 다양한 기능과 함께 SQL 언어를 사용하고 향상시킵니다.

크고 복잡한 양의 데이터를 처리하고 엔터프라이즈 수준의 내결함성 환경을 설정하는 동시에 높은 데이터 무결성을 보장하는 데 효율적이고 안정적이며 확장 가능합니다. Postgres는 또한 API와 함께 제공되는 인덱스와 같은 기능을 통해 확장성이 뛰어나므로 데이터 스토리지 문제를 해결하기 위한 자체 솔루션을 개발할 수 있습니다.

이 문서에서는 Ubuntu 18.04 서버에 PostgreSQL을 설치하는 방법(이전 Ubuntu 릴리스에서도 작동함)을 설명하고 이를 사용하는 몇 가지 기본 방법을 알아봅니다.

Ubuntu에 PostgreSQL을 설치하는 방법

먼저 저장소 구성을 저장하는 /etc/apt/sources.list.d/pgdg.list 파일을 만든 다음 저장소 키를 시스템으로 가져오고 시스템 패키지 목록을 업데이트하고 Postgres 패키지를 설치합니다. 다음 명령을 사용합니다.

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
sudo apt install wget ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt update
sudo apt install postgresql-10 pgadmin4 

postgres가 설치되면 데이터베이스 서비스가 자동으로 시작되며 다음 명령을 입력하여 확인할 수 있습니다.

sudo systemctl status postgresql.service

PostgreSQL 역할 및 데이터베이스를 사용하는 방법

postgres에서 클라이언트 인증은 /etc/postgresql/10/main/pg_hba.conf 구성 파일에 의해 제어됩니다. 데이터베이스 관리자의 경우 기본 인증 방법은 “peer”입니다. 즉, 운영 체제에서 클라이언트의 운영 체제 사용자 이름을 가져와 요청된 데이터베이스 사용자 이름과 일치하는지 확인하여 로컬 연결에 대한 액세스를 허용합니다. (다음 스크린샷에 표시된 대로)

설치 과정에서 postgres라는 시스템 사용자 계정이 비밀번호 없이 생성되었으며 이는 기본 데이터베이스 관리자 사용자 이름이기도 합니다.

sudo vim /etc/postgresql/10/main/pg_hba.conf

또한 postgres에서는 데이터베이스 액세스 권한 관리가 역할을 통해 수행됩니다. 역할은 역할 설정 방법에 따라 데이터베이스 사용자 또는 데이터베이스 사용자 그룹으로 간주될 수 있습니다.

기본 역할도 postgres입니다. 중요한 것은 데이터베이스 역할이 개념적으로 운영 체제 사용자와 완전히 연결되어 있지 않지만 실제로는 분리되지 않을 수 있다는 것입니다(예: 클라이언트 인증의 경우).

중요한 점은 역할이 데이터베이스 개체를 소유할 수 있고 해당 개체에 대한 권한을 다른 역할에 할당하여 누가 어떤 개체에 액세스할 수 있는지 제어할 수 있다는 것입니다. 또한 한 역할의 멤버십을 다른 역할에 부여할 수도 있습니다.

기본 postgres 역할과 별도로 암호화된 비밀번호를 사용하여 할당된 데이터베이스를 관리하도록 다른 역할을 구성하려면 행을 다음으로 변경해야 합니다.

Then restart the postgresql service to apply the recent changes.
sudo systemctl restart postgresql

우분투에서 PostgreSQL을 사용하는 방법

모든 것이 설정되면 다음 명령을 사용하여 postgres 시스템 계정에 액세스할 수 있습니다. 여기서 -i 플래그는 sudo에게 대상 사용자의 비밀번호 데이터베이스 항목에 지정된 쉘을 다음과 같이 실행하도록 지시합니다. 로그인 쉘.

sudo -i -u postgres 
psql		#to launch the postgres shell program  
postgres=#

postgres 사용자 계정에 먼저 액세스하지 않고 postgres 셸에 직접 액세스하려면 다음 명령을 실행합니다.

sudo -i -u postgres psql

다음 명령을 입력하여 postgres를 종료/종료할 수 있습니다.

postgres=# \q

PostgreSQL 데이터베이스 역할 생성

다음 명령을 사용하여 새 사용자 역할을 만듭니다.

postgres=# CREATE ROLE tecmint;

LOGIN 속성이 있는 역할을 생성하려면 다음 명령을 사용합니다(LOGIN 속성이 있는 역할은 데이터베이스 사용자와 동일하게 간주될 수 있음).

postgres=#CREATE ROLE tecmint LOGIN;
OR
postgres=#CREATE USER name;	#assumes login function by default

비밀번호를 사용하여 역할을 생성할 수도 있습니다. 이는 데이터베이스에 연결할 때 사용자에게 암호화된 비밀번호를 제공하도록 요청하도록 클라이언트 인증 방법을 구성한 경우에 유용합니다.

postgres=#CREATE ROLE tecmint PASSWORD 'passwd_here'

기존 PostgreSQL 데이터베이스 역할 나열

기존 사용자 역할을 나열하려면 다음 명령 중 하나를 사용하십시오.

postgres=# \du 				#shows actual users
OR
postgres=# SELECT rolname FROM pg_roles;

PostgreSQL 데이터베이스 역할 삭제

기존 사용자 역할을 삭제하려면 표시된 대로 DROP ROLE 명령을 사용하세요.

postgres=# DROP ROLE tecmint;

PostgreSQL 데이터베이스 생성

특정 이름(예: tecmint 사용자)으로 역할을 생성한 후에는 표시된 대로 해당 역할에 의해 관리될 데이터베이스(역할과 동일한 이름으로)를 생성할 수 있습니다.

postgres=# CREATE DATABASE tecmint;

이제 tecmint 데이터베이스를 관리하려면 tecmint 역할로 postgres 셸에 액세스하고 다음과 같이 비밀번호를 입력하세요.

sudo -i -u tecmint psql

PostgreSQL 테이블 생성

테이블을 생성하는 것은 매우 쉽습니다. 표시된 것처럼 TecMint.com 작성자에 대한 정보를 저장하는 authors라는 테스트 테이블을 생성하겠습니다.

tecmint=>CREATE TABLE authors (
    code      char(5) NOT NULL,
    name    varchar(40) NOT NULL,
    city varchar(40) NOT NULL
    joined_on date NOT NULL,	
    PRIMARY KEY (code)
);

테이블을 생성한 후 다음과 같이 일부 데이터로 테이블을 채워보세요.

tecmint=> INSERT INTO authors VALUES(1,'Ravi Saive','Mumbai','2012-08-15');

테이블에 저장된 데이터를 보려면 SELECT 명령을 실행할 수 있습니다.

tecmint=> SELECT * FROM authors;

PostgreSQL 데이터베이스 테이블 나열

다음 명령을 사용하면 현재 데이터베이스의 모든 테이블을 나열할 수 있습니다.

tecmint=>\dt

PostgreSQL 테이블 삭제/삭제

현재 데이터베이스에서 테이블을 삭제하려면 DROP 명령을 사용하세요.

tecmint=> DROP TABLE authors;

모든 PostgreSQL 데이터베이스 나열

모든 데이터베이스를 나열하려면 다음 명령 중 하나를 사용하십시오.

tecmint=>SELECT datname FROM pg_database;
OR
tecmint=>\list	#shows a detailed description 
OR
tecmint=>\l

PostgreSQL 데이터베이스 삭제/삭제

예를 들어 데이터베이스를 삭제하려면 DROP 명령을 사용하세요.

tecmint=>DROP DATABASE tecmint;

다른 PostgreSQL 데이터베이스로 전환

다음 명령을 사용하여 한 데이터베이스에서 다른 데이터베이스로 쉽게 전환할 수도 있습니다.

tecmint=>\connect database_name

자세한 내용은 PostgreSQL 10.4 설명서를 참조하세요.

지금은 그게 다야! 이 기사에서는 Ubuntu 18.04에 PostgreSQL 데이터베이스 관리 시스템을 설치하고 사용하는 방법을 설명했습니다. 질문이나 생각을 댓글로 보내주세요.