PostgreSQL DBMS를 Linux(CentOS)에 설치하고 기본 설정하는 방법에 대해서 설명합니다.
PostgreSQL 버전은 필요한 버전을 선택하고 그에 따라 아래 설치 내용을 변경하여 설치합니다. 이 문서는 PostgreSQL 13 버전을 기준으로 설명합니다.
// 기본 설치된 구 버전 PostgreSQL 삭제 : 기존에 설치된 오래된 버전을 삭제
yum removie postgresql
// PostgreSQL 다운로드 페이지에서 설치할 버전을 선택하고 생성된 yum 설치 script 확인(다음 단계 yum install 내용 복사)
https://www.postgresql.org/download/linux/redhat/
// Install the repository RPM: PostgreSQL 13 버전 설치 선택 및 script 복사 실행(윗 단계 선택한 버전에 따라 다른 내용)
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
// # Install PostgreSQL 13
sudo yum install -y postgresql13-server
// Initialize the database and enable automatic start
sudo /usr/pgsql-13/bin/postgresql-13-setup initdb sudo systemctl enable postgresql-13 sudo systemctl start postgresql-13
sudo systemctl status postgresql-13
// PostgreSQL 방화벽 포트 설정(기본 포트 5432)
firewall-cmd --permanent --add-port=5432/tcp
또는 firewall-cmd --permanent --zone=public --add-port=5432/tcp
firewall-cmd --reload
// # postgres(수퍼유저) 계정의초기 암호 변경
sudo su - postgres
psql -c "alter user postgres with password 'StrongDBPassword'"
// 데이터베이스 초기화
postgresql-setup initdb // /etc/locale.conf에 LC_ALL 설정필요(Cloudera)
// 변경한 암호로 psql 접속 및 확인
psq -h localhost -p 5432 -U postgres // postgres 계정으로 DB 정보 확인
postgres=#\l // 데이터베이스 목록 확인 - postgres
// 다음 파일 설정 편집(접속 호스트 주소) - /var/lib/pqsql/13/data/postgresql.conf (line 59)
listen_addresses = '192.168.0.159' // or localhost psql -h에 들어갈 주소
또는 listen_addresses = '*' // 외부에서 접속 가능하도록 설정
port = 5432 // 필요한 경우 포트 번호 변경
max_connection = 100 // 최대 연결수 설정
// 다음 파일 설정 편집(접속 네트워크 설정) - /var/lib/pqsql/13/data/pg_hba.conf
host all all 192.168.0.0/24 md5 /192.168.0.x 망에서만 접근 허용
host all all 0.0.0.0/0 md5 // Accept from anywhere(권장안함)
host all all 127.0.0.1/32 md5 // Cloudera Setting
// Connect PostgreSQL-13 Server with psql
psql -h 192.168.0.159 -p 5432 -U postgres // listen address 설정에 따라 -h 옵션에 서버 IP 주소 설정 필요
psql -h localhost -p 5432 -U postgres // listen address 설정에 따라 -h 옵션에 서버 IP 주소 설정 필요
// postgres 계정(수퍼유저)에서 사용자 생성(hadoop)
sudo -u postgres psql // postgres 계정으로 psql 실행
또는 아래 방식으로
su - postgres
psql
postgres=#\du // 현재 생성된 PostgresSQL 사용자 계정 조회 - postgres 계정이 유일
postgres=#create user hadoop password 'test00'; // 사용자(role) 생성
postgres=#alter role hadoop superuser createdb; // hadoop 계정에게 수퍼유저와 DB 생성 권한 부여
postgres=#du // 새로 hadoop 계정이 생성된 것을 확인
postgres=#drop user hadoop; // 사용자 계정 삭제
// PostgreSQL ALTER ROLE syntax
ALTER ROLE name [ [ WITH ] option [ ... ] ]
where option can be:
SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION | NOREPLICATION | CONNECTION LIMIT connlimit | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | VALID UNTIL 'timestamp'
ALTER ROLE name RENAME TO new_name
ALTER ROLE { name | ALL } [ IN DATABASE database_name ] SET configuration_parameter { TO | = } { value | DEFAULT } ALTER ROLE { name | ALL } [ IN DATABASE database_name ] SET configuration_parameter FROM CURRENT ALTER ROLE { name | ALL } [ IN DATABASE database_name ] RESET configuration_parameter ALTER ROLE { name | ALL } [ IN DATABASE database_name ] RESET ALL
// Database 생성(postgres 계정 혹은 createdb 권한이 있는 사용자 계정)
create database hadooptest with owner hadoop; // hadoop 계정을 소유주로 hadooptest라는 데이터베이스 생성
drop database hadooptest; // hadooptest 데이터베이스 삭제
alter database movielens owner to hadoop; // movielens 데이터베이스의 소유자를 hadoop으로 변경
// 데이터베이스 액세스 권한 부여(참조 - 추가 strudy 필요)
- \l 목록에 표시되는 데이터베이스 권한을 설정
GRANT CONNECT ON DATABASE movielens TO movie;
GRANT USAGE ON SCHEMA public TO movie;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO movie;
// 재시작 없이 수정사항 반영(reload)
pg_ctl reload
// 새로 생성한 계정과 데이터베이스에 접속
psql -h localhost -p 5432 -U hadoop -d hadooptest
psql -h localhost -p 5432 -U postgres -d hadooptest
Comentários