웹사이트 검색

FreeBSD 11에 PostgreSQL 및 pgAdmin을 설치하는 방법


이 페이지에서

  1. PostgreSQL 설치
  2. 원격 연결 및 암호 인증 활성화\n
  3. 비밀번호 변경 및 사용자 생성\n
  4. pgAdmin 설치
  5. 결론

PostgreSQL 또는 줄여서 Postgres는 오픈 소스 ORDBMS(Object-Relational Database Management System)입니다. 1996년부터 활발히 개발 중이며 최고의 ORDMS 중 하나로 발전했습니다. 객체 지향 데이터베이스 모델 지원과 함께 RDBMS의 모든 기능을 지원합니다. 개체, 클래스 및 상속은 데이터베이스 스키마와 쿼리 언어에서 직접 지원됩니다. PostgreSQL은 소규모 웹사이트에서 대규모 클라우드 기반 애플리케이션 또는 데이터 웨어하우징에 이르는 다양한 애플리케이션용 데이터베이스를 호스팅하는 데 사용할 수 있습니다.

이 튜토리얼에서는 FreeBSD 11 서버에 PostgreSQL 및 pgAdmin을 설치하는 방법을 배웁니다.

전제 조건

  • 최소 FreeBSD 11 서버. 8GB RAM 권장.
  • 루트 권한이 있는 Sudo 사용자.\n

PostgreSQL 설치

먼저 서버의 저장소 정보를 업데이트합니다.

sudo pkg update

pkg는 FreeBSD용 내장 패키지 관리자입니다. 그런 다음 PostgreSQL 서버 및 클라이언트 패키지를 다운로드하여 설치합니다.

sudo pkg install postgresql96-server postgresql96-client

y를 눌러 설치를 진행합니다. pkg는 이제 필요한 종속성과 함께 지정된 패키지를 찾아 설치합니다.

설치가 완료되면 부팅 시 PostgreSQL이 자동으로 시작되도록 활성화합니다.

sudo sysrc postgresql_enable=yes

또는 부팅 시 PostgreSQL을 시작하려면 원하는 텍스트 편집기를 사용하여 /etc/rc.conf 끝에 postgresql_enable="YES"를 추가할 수도 있습니다.

이제 다음 명령을 사용하여 데이터베이스를 초기화하십시오.

sudo service postgresql initdb

initdb는 단일 서버 인스턴스에서 관리하는 데이터베이스 모음인 새로운 postgresql 데이터베이스 클러스터를 생성합니다.

이제 다음 명령을 사용하여 PostgreSQL 데이터베이스 서버를 시작할 수 있습니다.

sudo service postgresql start

이제 PostgreSQL 데이터베이스 서버가 설치되었습니다.

원격 연결 및 암호 인증 활성화

데이터베이스 서버에 원격으로 액세스하려면 PostgreSQL 구성을 몇 가지 변경해야 합니다. 이 자습서에서는 나노 편집기를 사용합니다. nano가 설치되어 있지 않으면 다음을 실행할 수 있습니다.

sudo pkg install nano

nano 편집기를 사용하여 구성 파일을 엽니다.

sudo nano /var/db/postgres/data96/postgresql.conf

아래로 스크롤하여 아래에 표시된 줄을 찾습니다. listen_addresses의 주석을 제거하고 해당 값을 localhost에서 *로 변경합니다. 기본 포트를 5432에서 원하는 다른 값으로 변경할 수도 있습니다.

#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
#port = 5432                            # (change requires restart)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
#unix_socket_directories = '/tmp'       # comma-separated list of directories

기본적으로 PostgreSQL은 이미 PostgreSQL 사용자로 로그인한 사용자를 인증하지 않고 누구나 psql 셸에 연결할 수 있도록 허용합니다. 데이터베이스에 공개적으로 액세스할 수 있는 경우 인증 방법을 보다 안전한 방법으로 변경해야 합니다. 인증을 위해 암호화된 암호를 사용하는 md5 인증 방법을 사용할 수 있습니다. 또한 인증에 허용되는 IP 주소를 지정할 수도 있습니다.

선호하는 텍스트 편집기를 사용하여 pg_hba.conf 파일을 엽니다.

sudo nano /var/db/postgres/data96/pg_hba.conf

호스트 유형 연결을 위해 인증 방법을 trust에서 md5로 변경합니다. 또한 데이터베이스에 액세스할 클라이언트 시스템의 주소를 추가하십시오. 모든 클라이언트가 md5 기반 인증을 사용하도록 허용하려면 주소로 0.0.0.0/0을 사용하십시오.

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             0.0.0.0/0               md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

위의 변경 사항을 적용하려면 PostgreSQL 서버를 다시 시작해야 합니다.

sudo service postgresql restart

비밀번호 변경 및 사용자 생성

기본적으로 PostgreSQL은 PostgreSQL 인스턴스를 유지하기 위해 사용자 postgres 및 그룹 postgres를 생성합니다. postgres 사용자의 비밀번호를 설정하려면 다음 명령을 실행하십시오.

sudo passwd postgres

비밀번호를 변경한 후 postgres 사용자로 로그인합니다.

su - postgres

이제 다음 명령을 사용하여 PostgreSQL 셸에 들어갈 수 있습니다.

psql

셸이 PostgreSQL 셸로 변경된 것을 볼 수 있습니다.

psql (9.6.3)
Type "help" for help.

postgres=#

이제 이 셸에서 SQL 쿼리를 실행할 수 있습니다. PostgreSQL 셸을 종료하려면 \\q 또는 \\quit를 입력합니다.

다음을 입력하여 대화식으로 새 역할을 만들 수 있습니다.

createuser --interactive

스크립트는 사용자 이름을 입력하고 사용자가 수퍼유저인지 여부를 묻습니다.

$ createuser --interactive
Enter name of role to add: new_user
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y

또는 다음을 실행할 수 있습니다.

createuser -sdrP new_user

매개변수의 의미는 다음과 같습니다.

  • s: 이 사용자는 수퍼유저가 됩니다.
  • d: 이 사용자는 새 데이터베이스를 만들 수 있습니다.
  • r: 이 사용자는 새 역할을 만들 수 있습니다.\n
  • P: 이 역할에 암호를 할당합니다.\n

위의 명령은 new_user의 비밀번호도 묻습니다.

새 데이터베이스를 생성하려면 다음 명령을 실행할 수 있습니다.

createdb new_db

이제 psql 명령을 사용하여 PostgreSQL 셸로 전환합니다. 사용자의 비밀번호가 없는 경우 새로 만든 계정의 비밀번호를 제공합니다.

ALTER USER new_user WITH ENCRYPTED PASSWORD 'password';

이제 쿼리를 실행하여 새로 생성된 사용자에게 데이터베이스의 모든 권한을 부여합니다.

GRANT ALL PRIVILEGES ON DATABASE new_db TO new_user;

\\q를 실행하여 편집기를 종료하십시오.

pgAdmin 설치

pgAdmin은 PostgreSQL 데이터베이스 서버를 관리하기 위한 가장 인기 있는 오픈 소스 애플리케이션입니다. pgAdmin은 데이터베이스를 쉽게 관리할 수 있는 기능이 풍부한 그래픽 사용자 인터페이스를 제공합니다. Python과 Javascript/jQuery로 작성되었습니다. Linux, Windows, Unix와 같은 여러 환경에서 사용할 수 있으며 데스크톱 및 서버 모드에서 사용할 수 있습니다.

이 튜토리얼에서는 PostgreSQl을 설치한 동일한 서버에 서버 모드로 pgAdmin을 설치합니다.

pip는 Python 패키지용 패키지 관리자입니다. Python 패키지 및 종속성을 설치하고 관리하는 데 사용됩니다. postgres 사용자로 로그인한 경우 sudo 권한이 있는 일반 사용자로 전환해야 합니다.

su - sudo_user

시스템에 pip를 설치하려면 다음을 실행하십시오.

sudo python -m ensurepip

virtualenv를 사용하여 격리된 Python 환경을 만드는 것이 좋습니다. Virtualenv는 전역 또는 다른 가상 환경의 라이브러리를 지원하지 않는 자체 Python 설치 환경을 만듭니다. Virtualenv 설치를 위해 다음 명령을 실행하십시오.

sudo pkg install py27-virtualenv

이제 다음을 실행하여 pgAdmin에 대한 가상 환경을 만듭니다.

virtualenv pgadmin4

다음을 입력하여 가상 환경을 활성화합니다.

. pgadmin4/bin/activate

쉘이 (pgadmin4) $로 변경된 것을 볼 수 있습니다.

다음을 입력하여 몇 가지 Python 종속 항목을 설치합니다.

sudo pip install cryptography pyopenssl ndg-httpsclient pyasn1

cryptography 패키지는 암호화 도구를 제공하며 pyopenssl은 OpenSSL 라이브러리용 Python 래퍼 모듈입니다. ndg-httpsclient는 pyopenssl을 사용하여 향상된 HTTPS 지원을 제공하고 pyasn1은 ASN.1의 파이썬 구현입니다. 이러한 패키지는 pgAdmin이 작동하는 데 필요합니다.

pgAdmin4에는 SQLite 패키지도 필요합니다. SQLite는 또한 SQL 지원 데이터베이스 관리 시스템입니다. 별도의 서버를 요구하는 대신 SQLite는 데이터를 디스크의 플랫 파일에 저장합니다. 다음을 입력하여 Python SQLite3 패키지를 설치합니다.

sudo pkg install py27-sqlite3

다음을 입력하여 pgAdmin용 Python 휠 패키지를 다운로드합니다.

wget --no-check-certificate https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v1.5/pip/pgadmin4-1.5-py2.py3-none-any.whl

pgAdmin 다운로드 페이지에서 최신 버전의 애플리케이션에 대한 링크를 항상 확인할 수 있습니다.

이제 다음을 실행하여 패키지를 설치합니다.

pip install pgadmin4-1.5-py2.py3-none-any.whl

이제 다음을 사용하여 애플리케이션을 실행할 수 있습니다.

python ./pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py

위의 명령을 처음 실행하면 초기 pgAdmin 사용자를 생성하기 위해 이메일 주소와 암호를 묻습니다.

(pgadmin4) $ python ./pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py
NOTE: Configuring authentication for SERVER mode.

Enter the email address and password to use for the initial pgAdmin user account:

Email address: your_email
Password: your_new_password
Retype password:
Starting pgAdmin 4. Please navigate to http://localhost:5050 in your browser.

위의 명령은 포트 5050에서 서버를 시작하고 localhost만 수신합니다. 네트워크 외부에서 서버에 액세스하려면 일부 구성을 변경해야 합니다. pgAdmin 구성 파일을 복사합니다.

sudo cp ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config.py ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config_local.py

이제 선호하는 편집기를 사용하여 구성 파일의 로컬 사본을 편집하십시오.

sudo nano ./pgadmin4/lib/python2.7/site-packages/pgadmin4/config_local.py

기본 서버 값을 localhost에서 0.0.0.0으로 변경합니다. 원하는 경우 애플리케이션이 수신하는 포트도 변경할 수 있습니다.

DEFAULT_SERVER = '0.0.0.0'

# The default port on which the app server will listen if not set in the
# environment by the runtime
DEFAULT_SERVER_PORT = 5050

다음을 입력하여 서버를 다시 시작하십시오.

python ./pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py

이제 http://your_server_IP:5050에서 pgAdmin 인터페이스에 액세스할 수 있습니다.

결론

이제 서버에 PostgreSQL 및 pgAdmin이 설치되어 있어야 합니다. 이제 pgAdmin을 사용하여 PostgreSQL 서버에서 데이터베이스를 관리할 수 있습니다.