반응형


https://www.postgresql.org/download/


일단 리눅스를 선택한다.
그럼 바로 아래에 OS선택이 뜨는데 난 centos7이니 Red Hat을 선택했다.

그럼 이 페이지로 이동하는데
https://www.postgresql.org/download/linux/redhat/
조금만 스크롤 하면 이런 화면이 나온다.

어떤 버전을 다운받을지 플랫폼은 뭔지 아키텍쳐는 뭔지 선택하면 설치 스크립트가 나오는데
난 최신 버전 16과 CentOS7 선택했고 아키텍쳐 확인은 리눅스(centos 7)에서 아래 명령어로 확인한다.
uname -m
난 x86_64가 나왔다.
그럼 아래와 같은 스크립트가 나온다. 복사한다.

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql16-server
sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
sudo systemctl enable postgresql-16
sudo systemctl start postgresql-16

리눅스에서 su권한을 획득한 상태에서 첫번째 스크립트 yum을 실행한다.
yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

일단 성공.

두번째 스크립트 실행
yum install -y postgresql16-server

Error가 뜬다. 썩을
yum list | grep postgresql16 명령어로 postgresql16을 설치할 수 있는패키지 항목을 조회해 보았으나 아무것도 없었다.

yum list | grep postgresql15명령어로 확인해보니 뜬다.

계획을 바꿔서 15를 설치해보겠다.
yum install -y postgresql15-server

성공

postgresql15-server 설치가 완료됬다면 /usr/pgsql-15 경로에서 확인이 가능하다.

데이터베이스 setup을 진행한다.
/usr/pgsql-15/bin/postgresql-15-setup initdb
cd /usr/pgsql-15/bin/명령어로 이동해서 실행을 해도 된다.

PostgreSQL 기동
systemctl start postgresql-15
(재기동은 restart를 쓰면된다.)

일단 기초 설치는 이걸로 끝이다.
이제 su계정에서 postgres 계정으로 전환하고 나머지 설정을 손보려한다.

su - postgres
pwd를 실행해보면  현재 위치가 /var/lib/pgsql로 나타난다.

원격접속 설정을 위해 /var/lib/pgsql/15/data/pg_hba.conf 를 vi에디터로 편집한다.
vi /var/lib/pgsql/15/data/pg_hba.conf
아래로 스크롤 해보면 local connection 설정부분이 나온다.

# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256  요 아래에 0.0.0.0/0... 을 추가한다.
host    all             all             0.0.0.0/0               scram-sha-256


다음은 postgresql.conf파일이다.
마찬가지로 vi에디터로 편집해주자.
vi /var/lib/pgsql/15/data/postgresql.conf

listen_addresses를 보면 localhost가 있는데 이를 *로 바꿔준다.
저장하고 나와서 exit명령어를 입력하여 su계정으로 전환하자.
환경 설정이 바뀌었으니 su계정으로 postgreSQL을 재시작해주자.
exit를 입력하면 다시 su 상태가 된다.

systemctl restart postgresql-15


참고로 처음 제공된 스크립트들 중  systemctl enable postgresql-15는 OS가 기동될때 자동으로 postgresql 서버가 실행되도록 하는 설정이다.
실행하면 이런 처리 결과를 확인할 수 있게 된다.



어찌 저찌 외부 접속까지는 다 됐는데 그럼 남은건 외부에서 어떤 계정을 사용해서 접근하게 만들지를 설정할 단계다.
다시 postgres계정으로 전환하자
su - postgres

그리고 psql을 실행 후 postgres=# 상태가 확인된다면
\du  명령어를 입력해 사용자명, 권한, 소유한 데이터베이스 등의 정보를 표시해 본다.

나님이 슈퍼유저란 뜻이다.
당연히 계정 생성이 가능하다.
외부 접속을 하려면 새로운 db user 를 생성하거나 postgres(관리자)의 password 를 설정해야 한다.
난 둘 다 하겠다.

먼저 관리자 password 설정
alter user postgres with password '원하는비밀번호입력';
ALTER ROLE 라고 뜨면 성공이다.

다음은 외부 접속용 아이디 생성
create user tester with password ' 원하는비밀번호입력 ';
CREATE ROLE 라고 뜨면 성공이다.

DB도 만들어주자
createdb testdb;
간단하다.


이제 내 PC(맥)에서 접속을 해보자.
(솔직히 이 부분에서 몇 시간을 소비해버렸다. 난 분명히 postgresql.conf 파일의 설정을 외부 접속 가능하도록 위에서 진행했는데... 한참 삽질 하다보니 바뀌어 있지 않았다. -_-)

pgAdmin4를 실행해서 Servers에서 마우스 오른쪽을 눌러보니 Register가 보인다. 그 옆엔 Server가 있으니 이를 선택하자


그럼 Register 새창이 뜨고 여기에 Name에 내가 원하는 식별 이름을 적어주자.


그 옆 탭은 Connection 당연히 postgreSQL이 설치된 ip를 host name/address에 적어주고
port는 기본 port인 5432
db는 내가 생성한 db인 testdb 
username도 내가 일전에 생성한 userid
password도 아까 user생성할 때 함께 적었던 그 비번을 넣으면 된다.
그리고 Save

그럼 생성한 user를 이용해 외부 DB에 최종적으로 연결된 모습을 확인할 수 있다.


다음엔 생성된 계정 tester를 이용해 testdb에 접근하여 데이터를 조회해오는 샘플 프로젝트를 진행해 볼 예정이다.
https://hippalus.tistory.com/650

반응형
Posted by Hippalus
,

반응형

생각해보자.
DB에 프로그램이 접속해서 CRUD 행위가 가능하려면 이용자가 있어야 하는 법
그런데 난 postgreSQL을 처음 설치할 때 이용자는 만들었는데 프로그램이 접속해서 사용하는 이용자는 만든 기억이 없다.

그러니 일단 만들자.
Databases아래에 Login/Group Roles가 있다. 여기서 또 마우스 우측 버튼을 누르고 Create > Login/Group Roles를 선택


그러면 늘 그러하듯 새창이 뜬다.
이름을 지정해주자 난 programuser라고 하련다.


우측탭으로 이동하면 Password를 입력할 수 있다.
그 아래 expires는 그냥 놔두면 never expire라 하니 건드리지 말아야겠다.
Connection limit는 -1인걸로 미루어 이게 현명한 처사 같다.
접속 제한이 없단 말 이겠지. 웹같은 환경에선 다수가 동시 접속이 일어날테니 -1로 놔두는게 맞지 싶다.


Save하면 끝.
그런데 이렇게 하고 프로그램 구현을 하면 제대로 안 된다.
이유는 각 테이블의 권한이 없기 때문이다.
따라서 이번 포스팅은 그냥 pgAdmin으로 계정 생성하는 목적 정도로만 공유하고 다음 포스팅에서 제대로 어플리케이션에서 사용 될 계정을 만들고 설정도 다뤄보려 한다.

반응형
Posted by Hippalus
,

반응형

일단 내 상황은 이렇다.
사용해본 DB는 MSSQL을 15년 이상 주력사였고 최근 Oracle(과거 SI 잠깐 했을 당시에 2년 정도 토드사용해본게 전부였지만 최근 다시 사용) 그 외 잡다한 MySql, MSACCESS(ㅋㅋㅋ), DB같지도 않은 파라독스(S모 카드사에서 처음 접하고 개깜놀) 대충 이렇다.

이 상황에서 처음 PostgreSQL을 설치해보았다.
그리고 첫 실행을 하고자 설치된 폴더로 이동해보니 딱 저렇게 보인다.
느낌적으로 pgAdmin 4라는 툴이 MSSQL의 SQL Server Management Studio스러워 보인다.
SQL Shell은 아마 커맨드 라인으로 실행해주는 paAdmin 4일듯 싶다.

 

pgAdmin 4를 냅다 실행해본다.

 

음 역시나가 역시다.
탭 영역을 보니 대시보드가 있고 그 옆에 프로퍼티, 시퀄 등등등이 있다. 
눈깔을 좌측 트리로 이동해보자 Servers가 있다.


MSSQL처럼 UI가 마음에 드는구나.
트리를 펼쳐서 PostgreSQL 16을 눌러보자.
팝업윈도우가 뜬다.


아까 설치할 때 기록한 비번을 넣어준다.


이러니 Databases와 Roles, Tablespaces 등등 기본 시스템 DB쪽으로 추정된다.


자 그럼 이제 내 디비를 만들어봐야겠제?
PostgreSQL 16에서 마우스 오른쪽을 눌러본다. Create가 있다 그 옆에 Database가 있구나.
정말 직관적이다.(MSSQL 이용자라면 너무 쉽다.)
있어야 할 곳에 기능이 있다. 그게 MS의 최대 장점 아닌가?


Database를 선택하니 역시나 창이 하나 뜬다.
뻔하다. DB명 만들어주고 저장하면 그만이다.
그 옆 Definition, Security 등을 눌러봤지만 뭘 하는건진 아직 모르겠다. 
일단 DB나 만들자. Save 전에 SQL탭이 눈에 들어온다.
뻔하다. 내가 만드는 액션의 SQL문이겠지. 그리고 저 SQL문은 SQL Shell 프로그램에서 동작시키거나 SQL management처럼 쿼리분석기에서 실행시킬 수 있을것이다.
그냥 저런것도 보여주는구나 하고 넘기자. SAVE

 

Save를 하고 나니 내 첫 PostgreSQL DB가 생성된게 보인다.


그럼 테이블을 만들어 보자.
테이블이야 뭐 뻔하다 Schemas에 있겠지
역시나 Tables가 있다.
만들려면? 뻔하지 마우스 오른쪽 눌러보자.
Create가 나온다. 그리고 Table


그러면 Database 처럼 Table 생성창이 뜬다.
이름은 게시판이 제일 만만하니 board_tbl이라 정해준다.
그다음은? 당연히 컬럼이다. General 옆에 Columns가 보인다. 그거 누른다.


난 매우 간단하게 기준키 필드는 integer, 제목은 varchar, 내용은 text나 varchar로 만들고자 한다.
그런데 varchar가 안보인다.
이건 좀 당황스럽다.


chatGPT센세에게 물어보고 싶지만 내가 쓰는 버전은 3.5버전이므로 최신 정보는 알 수 없을 것 같다.
claude.ai 티쳐에게 물어보자.

16버전에선 varchar대신 text를 사용하는게 좋단다.
초기 버전엔 varchar를 제공했지만 요즘은 그냥 닥치고 text쓰란다.
그럼 varchar와 text가 아무런 차이점이 없다란 말인데... 흠..일단 믿어보자.

그런데 text[] 이건 뭐지? 배열인데...
또 claude.ai 티쳐에게 퀘스쳔

{'태그1', '태그2'...}이런식을 저장하는 자료형이란다.
대충 PostgreSQL이 일반적인 RDBMS가 아니라는말은 익히 들어왔었던지라 지리정보나 그따위 정보에 특화된 필드가 아닐까 추측해본다.
조금 구글링 해보니 JSON형도 있던데... 음... 그렇군 
옥히 도키

b_idx는 integer로 PK로 설정하고 다른 제목과 내용 역시 Not NULL로 설정한다. 기본값은 없다.

Save


저장하고 나니 역시나 좌측 트리 영역에 테이블과 필드가 잘 나타난다.


이제 데이터를 insert해보자
ANSI문법은 언제나 통하니 간단하게 insert문을 실행해보자.
드래그 후 F5(execute script)를 실행하니 error가 뜬다.


이런.. b_title인데 필드명 오타를 냈나보다.
보자.. 테이블 스키마 수정은... 뭐 뻔하지 마찬가지로 테이블의 board_tbl에서 마우스 우측 눌러 Properties를 누르면 되겠지


역시나다. b_titile 오타 i를 하나 제거하자
Save


저장하기 전 SQL문을 구경해보자
좀 특이하다. 이게 ANSI문법인가.
MSSQL과는 좀 다르다.
ALTER TABLE IF EXISTS.... RENAME 뭐 그런가보다.


다시 SQL문을 실행하자.
그 전에 나는 그냥 select 문도 추가하고 F5를 실행하였는데 오류가 난다.
아마 오라클처럼 ;를 넣어줘야 할 것 같다.


정상적으로 insert, select가 실행된다.
다시 한 번 실행해보면 b_idx값이 똑같이 1로 넣으니 당연히 duplicate 오류가 뜬다.


2로 바꾸고 실행하면 잘 넣어지고 잘 보여진다.

일단 첫인상.
매우 직관적이다.
MSSQL을 사용해봤다면 토드를 사용할 때와 다르게 친숙한 느낌을 받을 수 있다.
여기에 뭐랄까 script같은 느낌도 들고...
조만간 회사 오라클 DB를 PostgreSQL로 바꾸게 될 지 모르겠다.
대공사겠지만.

반응형
Posted by Hippalus
,

반응형

Download the installer 링크를 누르면 아래 페이지로 이동된다.

https://www.enterprisedb.com/downloads/postgres-postgresql-downloads

다운로드 페이지에서 자신에게 맞는 버전을 다운받으면 된다.
난 일전에 windows용을 다운받았다가 개피를 보았으므로 맥용으로 다운받았다.

설치하기는 매우 쉽다.

계속 Next만 누르면 그만이다.

계속 Next

계속 Next

계속 Next

여기선 암호만 넣어주고 계속 Next

포트도 5432그대로 입력된 상태에서 계속 Next

난 UTF-8 KR을 선택했다.
계속 Next

계속 Next

그럼 끝이다.

반응형
Posted by Hippalus
,

반응형

다운로드 페이지로 이동한다.
https://www.postgresql.org/download/windows/


Download the installer 링크를 누르면 아래 페이지로 이동된다.

https://www.enterprisedb.com/downloads/postgres-postgresql-downloads


여기서 원하는 인스톨러를 다운받음 된다.


난 16.2 Windows X86-64로 다운받았다.
그리고 실행
그리고 에러 ㅋㅋㅋㅋ

검색해보니 관리자권한으로 실행을 해야 한다느니 cmd창에서 net user administrator로 실행을 하고 runas /user:administrator postgresql-16.2-1-windows-x64.exe 어쩌고 저쩌고 -_-
뭔짓을 해도 내 PC에는 설치가 안됐다.

더 검색해보니 하위버전을 설치해야 한다라는것 같아서
하나 하나씩 다운 받아봤지만 다 동일했고
누구는 이 링크로 다운 받아 설치하면 동작한다고 하는데 실제로 인스톨되는걸 확인했다.
https://get.enterprisedb.com/postgresql/postgresql-11.2-1-windows-x64.exe


그런데 버전도 마음에 안 들고 영 못마땅해서 난 그냥 맥용 16.2 버전 다운받아 맥에다 설치해버렸다.

반응형
Posted by Hippalus
,

반응형

이클립스는 정말이지 단축키가 너무 불편하다.
MS처럼 윈도우 기반의 단축키가 전혀 매칭되지 않아 여간 불편한게 아니다.
정성스럽게 키바인딩을 해둬도 workspace가 바뀌면 도루묵이길래 찾아보니 단축키 설정을 내보내고 갖고오기가 가능했다.

방법은 아래와 같다.

내보내기
File > export > General > Preferences (선택 후 Next) > Keys Preferences 체크 후 하단의 To preference file에서 원하는 위치로 파일명과 함께 지정 후 Finish

갖고오기
File > import> General > Preferences (선택 후 Next) > Keys Preferences 체크 후 상단의 From preference file에서 export해둔 파일명 지정 후 Keys Preferences 체크 후 Finish를 선택하면 재시작하라고 나오고 재시작하고 나면 내가 설정해둔 단축키가 정상적으로 동작한다.

반응형
Posted by Hippalus
,

반응형

이클립스(Eclipse)에서 Ctrl + h로 검색하고 나며서 더블클릭하면 결과가 계속 같은 탭을 바꿔가며 보여주므로 여간 불편한게 아니다.
열려있지 않은 파일이라면 매번 새로운 탭에서 파일을 열 수 있다.

1. Window > Preferences 메뉴로 이동

2.  Perferences창이 뜨면 좌측에서 Search를 찾아 선택

4. 우측 Search에서 첫번째 Reuse editors to show matches가 체크되어 있을것이다. 이걸 언체크하고 Apply and close시키면 된다.

반응형
Posted by Hippalus
,

반응형

1. SVN Server와 SVN Client의 소스 동기화
이클립스 프로젝트에서 마우스 우클릭 후 Team > Synchronize with Repository

2. Synchronize 탭에서 보여지는 아이콘 의미

 
local에서는 수정되지 않았고, 서버에서만 수정된 파일로 Update하면 local이 수정됨


local에서만 수정하고, 서버에서는 수정되지 않은 파일로 Commit하면 서버가 수정됨


local에서도 수정되었고, 서버에서도 수정된 파일이므로 어디가 최신인지 확인해서 Update 또는 Commit을 해야 함


3. 로컬 소스를 서버로 Commit 또는 서버 소스를 로컬로 Update 하기

Commit : 서버로 내 로컬 소스를 올리는 작업으로 보통 작업 전에 Syncronize를 먼저해 본 후 본인이 작업하는 동안 다른 작업자가 작업을 해서 반영했는지 확인을 해야 충돌이 발생하지 않음

Update : 서버의 소스를 로컬로 옮기는 작업

Override and Update는 SVN 서버의 소스를 내 로컬 소스로 overwrite (SVN소스가 오리지널)
Override and commit는 내 로컬 소스를 SVN으로 overwrite (내소스가 오리지널)
요 두개는 일전에도 다루었었음
https://hippalus.tistory.com/621


















 

eclipse에서 SVN: Override and Update, Override and Commit

SVN으로 형상관리시 수정된 또는 수정할 소스를 충돌현상이 발생할 경우 먼저 대상 소스를 마우스 우클릭 Team > Synchronize with Repository 선택 update or commit시 충돌인 conflict가 발생하게 된다. 이때 Over

hippalus.tistory.com

 

반응형
Posted by Hippalus
,

반응형

ulimit -a 명령어를 실행해보면 아래와 같이 나타남

여기서 주의깊게 봐야 하는 정보는 file size로 소켓이 최대 접속 가능한 개수를 나타난다.
보통 1024개가 기본 설정인데 어지간한 소켓 서버라면 1024로는 턱없이 부족할터
 
파일 오픈 개수를 늘려야 한다.

root 권한으로 접속하여 /etc/security/limits.conf 열어서 아래처럼 수정하면 된다.

vi /etc/security/limits.conf
* soft nofile 400000
* hard nofile 400000

저장 후 터미널을 새로 로그인 하여 ulimit -a 명령어를 실행해보면 지정한 대로 접속 개수가 증가되어 있음을 확인할 수 있고 client socket의 connection역시 성공적으로 연결됨을 확인할 수 있을 것이다.

반응형
Posted by Hippalus
,

반응형

일전에 cent os에 node.js 설치하기 글을 작성한적 있다.
https://hippalus.tistory.com/607

 

cent os에 node.js 설치하기

linux cent os에 node.js를 설치하기 위해선 yum을 이용하여야 한다. root권한이 있는 계정으로 접속한 후 yum repolist를 실행해보면 아래 스샷처럼 보통 초기엔 epel이란게 없기 마련이다. EPEL 저장소가 없

hippalus.tistory.com


이 방법 말고 더 나은 방법으로 linux에서 node.js를 설치하고자 한다.

먼저 node.js 홈페이지의 다운로드로 이동한다.
https://nodejs.org/en/download

 

Node.js — Download

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

여기서 Linux Binaries가 두 버전이 있는데 일반적이면 x64를 설치하면 된다.
x64: 대부분의 데스크톱 및 서버 시스템에서 사용된다. 일반적으로 인텔 또는 AMD의 64비트 아키텍처를 사용하는 시스템에 적합.
ARM: ARM 아키텍처를 사용하는 시스템에 대한 바이너리로 Raspberry Pi와 같은 임베디드 장치나 ARM 기반의 서버에 설치할 때 적합.

위 화면에서 64-bit의 링크를 마우스 우측으로 눌러 링크 주소 복사하기를 눌러 복사 한다.

복사해보면 2024년 2월 현재 다운로드 주소는 다음과 같다.
https://nodejs.org/dist/v20.11.1/node-v20.11.1-linux-x64.tar.xz

이제 리눅스로 접속 후 su명령어로 관리자 권한으로 진행한다.

노드가 설치될 폴더를 생성 후 해당 폴더로 이동한다.
cd /opt
mkdir nodejs
cd nodejs

앞서 복사했던 주소로 다운로드를 실행한다.
wget https://nodejs.org/dist/v20.11.1/node-v20.11.1-linux-x64.tar.xz

이제 다운로드 된 압축을 푼다.
파일명은 ls명령어로 확인하여 각자 맞는 파일명을 적어주면 된다.
다시 말하지만 파일명 등은 2024년 2월 현재 시점의 파일명이다.
xz -d node-v20.11.1-linux-x64.tar.xz
tar xf node-v20.11.1-linux-x64.tar

심볼릭 링크를 생성한다.
ln -s /opt/nodejs/node-v20.11.1-linux-x64 /opt/nodejs/node
ln 명령어는 심볼릭 링크를 생성하는 명령어로 -s 옵션은 심볼릭 링크를 생성하라는 것을 나타낸다.
그 뒤에는 실제 파일이나 디렉토리의 경로를 지정하고, 마지막에는 생성될 링크의 경로를 지정한다.

/opt/nodejs/node-v20.11.1-linux-x64 경로에 있는 디렉토리를 가리키는 심볼릭 링크를 /opt/nodejs/node라는 이름으로 생성하게 된다.
이렇게 하면 /opt/nodejs/node라는 경로로 접근하면 실제로 /opt/nodejs/node-v20.11.1-linux-x64에 있는 내용을 볼 수 있게 되므로 이는 더 간단하고 직관적인 경로로 Node.js를 사용할 수 있도록 도와준다.

끝으로 환경 변수에 등록해 준다.
vim ~/.bashrc

제일 마지막 라인에 아래 라인을 추가 한다.
export PATH="$PATH:/opt/nodejs/node/bin"

저장 하고 나온 후 추가한 내용을 즉시 적용시킨다.
source ~/.bashrc

이제 아무 디렉토리에 가서 node -v를 실행해보면 현재 설치된 node의 버전이 확인 될 것이다.

반응형
Posted by Hippalus
,