접속 연결 및 해제
접속 연결 및 해제#
접속 연결(CONNECT)#
명시된 사용자 ID로 Altibase에 연결한다. 첫 연결 실패 시 CONNECT 명령어는 사용자 ID나 패스워드를 다시 프롬프트(prompt) 하지 않는다.
CONNECT [logon][nls] [AS SYSDBA];
logon: userID[/password]
nls: NLS=character_set
-
userID/password Altibase에 연결하고자 하는 사용자의 id와 패스워드
-
NLS=character_set 문자집합
iSQL> CONNECT sys/manager NLS=US7ASCII Connect success.
-
AS SYSDBA AS 절은 SYS 사용자가 sysdba 관리자 모드로 서버에 접속하는 것을 허용한다.
CONNECT가 성공하면 현재의 세션을 종료하고 명시된 사용자 ID와 패스워드, altibase.properties 내의 프로퍼티 정보를 사용해서 서버에 접속한다. 따라서 이전의 세션 정보는 없어진다.
예를 들어 altibase.properties의 AUTOCOMMIT 모드가 TRUE였고, iSQL에서 AUTOCOMMIT 모드를 FALSE로 변경하여 쿼리를 수행하다가 이 CONNECT문을 수행하였다면 AUTOCOMMIT 모드는 altibase.properties 의 AUTOCOMMIT 프로퍼티에 의하여 TRUE로 변경된다.
CONNECT가 실패한다면 이전의 세션은 종료되고 서버와의 연결이 끊어진 상태가 된다. 즉, 이후에 수행되는 SQL문의 결과는 모두 "Not connected." 이다. 만약, 다시 서버와 연결을 시도할 때는 CONNECT userID/password [AS SYSDBA];를 수행한다.
$ isql ------------------------------------------------------- Altibase Client Query utility. Release Version 7.3.0.0.1 Copyright 2000, Altibase Corporation or its subsidiaries. All Rights Reserved. ------------------------------------------------------- Write Server Name (default:127.0.0.1) : Write UserID : SYS Write Password : ISQL_CONNECTION = TCP, SERVER = 127.0.0.1, PORT_NO = 20300 iSQL> SHOW USER; User : SYS iSQL> CREATE USER altiadmin IDENTIFIED BY altiadmin1234; Create success. iSQL> CONNECT altiadmin/altiadmin1234; Connect success. iSQL> SHOW USER; User : ALTIADMIN iSQL> CREATE TABLE altitbl(i1 INTEGER, i2 CHAR(5)); Create success. iSQL> SELECT * FROM tab; TABLE NAME TYPE --------------------------------------------- ALTITBL TABLE . . . 33 row selected. iSQL> CONNECT sys/manager; Connect success. iSQL> SHOW USER; User : SYS iSQL> CREATE TABLE systbl(i1 INTEGER, i2 CHAR(5)); Create success. iSQL> SELECT * FROM tab; USER NAME TABLE NAME TYPE ----------------------------------------------- SYSTEM_ SYS_COLUMNS_ SYSTEM TABLE SYSTEM_ SYS_CONSTRAINTS_ SYSTEM TABLE . . . ALTIADMIN ALTITBL TABLE SYS SYSTBL TABLE . . . 93 rows selected.
주의사항#
사용자 이름에 소문자, 특수 문자 또는 공백이 포함된 경우 큰따옴표를 사용해야 한다.
iSQL> CONNECT "user name";
SSL 접속#
서버 전용 모드#
서버 전용 모드(SSL_CLIENT_AUTHENTICATION 프로퍼티 값이 0으로 설정)에서 개인 인증서를 사용하는 경우, 서버에서 클라이언트의 인증을 수행하지 않기 때문에 클라이언트 인증서와 개인키 파일의 위치를 지정할 필요가 없다.
서버에서 제공하는 인증서를 검증하기 위해서 -ssl_verify 옵션을 활성화시키고, 서버의 공개키(public key)가 포함된 CA 인증서 파일의 위치를 지정해야 한다.
$ export ISQL_CONNECTION=SSL
$ isql -s localhost -u sys -p MANAGER
$ isql -s localhost -u sys -p MANAGER -ssl_verify -ssl_ca ~/cert/ca-cert.pem
상호 인증 모드#
상호 인증 모드(SSL_CLIENT_AUTHENTICATION 프로퍼티 값이 1로 설정)로 개인 인증서를 사용하는 경우, 서버에서 클라이언트 인증을 수행한다. 따라서 서버에 제공하는 클라이언트의 인증서와 개인키 파일의 위치를 지정해야 한다.
서버에서 제공하는 인증서를 검증하기 위해서는 -ssl_verify 옵션을 활성화시키고, 서버의 공개키가 포함된 CA 인증서 파일의 위치를 지정해야 한다.
$ export ISQL_CONNECTION=SSL
$ isql -s localhost -u sys -p MANAGER \
-ssl_cert ~/cert/client-cert.pem \
-ssl_key ~/cert/client-key.pem
$ isql -s localhost -u sys -p MANAGER \
-ssl_verify -ssl_ca ~/cert/ca-cert.pem \
-ssl_cert ~/cert/client-cert.pem \
-ssl_key ~/cert/client-key.pem
접속 해제#
현재 세션을 종료하고 서버와의 연결을 끊는다. 이후에 수행되는 SQL문의 결과는 모두 "Not connected."이며, 다시 서버와 연결을 시도할 때는 CONNECT userID/password;를 수행한다.
DISCONNECT;
iSQL> INSERT INTO systbl VALUES(1, 'A1');
1 row inserted.
iSQL> INSERT INTO systbl VALUES(2, 'A2');
1 row inserted.
iSQL> SELECT * FROM systbl;
SYSTBL.I1 SYSTBL.I2
--------------------------
1 A1
2 A2
2 rows selected.
iSQL> DISCONNECT;
Disconnect success.
iSQL> INSERT INTO systbl VALUES(3, 'A3');
[ERR-91020 : No Connection State]
iSQL> SELECT * FROM systbl;
[ERR-91020 : No Connection State]
iSQL> CONNECT sys/manager;
Connect success.
NOLOG 옵션으로 iSQL 실행#
'/NOLOG' 옵션은 대상 데이터베이스에 접속하지 않고 iSQL을 실행하기 위해 제공된다. 이 옵션을 사용하려면, 서버에 접속하지 않더라도 서버 IP 주소와 포트 번호를 반드시 입력해야 한다 .
isql -s localhost -port 20300 /NOLOG
iSQL을 구동한 후 SQL 구문을 수행하려면, CONNECT 명령어로 대상 데이터베이스 사용자 계정과 비밀번호를 입력하여 데이터베이스에 접속한 이후 가능하다.