728x90

sql plus에서 하자면 


create table tablename(

b_idx        number,

b_id          varchar2(20)

)


create sequence seq_b_idx 


이렇게 했을것이다 


그런데 SQL Developer 에서는 어떻게 하는지 몰라서 찾다보니





여기서 만든다음에


currval은 current value를 뜻하며 최근값을 말합니다.

nextval은 next value를 뜻하며 현재값에 증분으로 설정한 값(지금은 디폴트로 설정하였기때문에 1)을 더한값을 말합니다.

nextval은 currval과 달리 select할때마다 값이 달라집니다. 확인해보시기바랍니다.

dual 테이블은 가상의 테이블입니다. 

  ※ currval을 출력하기 위해서는 먼저 최초로 nextval이 호출되어야 합니다.


String sql = "INSERT INTO BOARD "+
 
           "(IDX, TITLE, WRITER, REGDATE, COUNT, CONTENT) "+
 
           "VALUES (board_seq.nextval, '"+title+"', '"+writer+"' , sysdate, "+count+", '"+content+"')";


이렇게 value값을 넣어줄때 시퀀스 값을 넣어주면 되더라고요.


참고출처: http://cusmaker.tistory.com/77



Posted by 앗뜨거
,
728x90

jdbc 에서 thin 드라이버로 오라클에 접속할 때는 SID를 알아야 한다.
최근에는 SID로 직접 기술하여 접근하는 것보다는 service name 이라는 것을 tnsname.ora 파일에 지정해 놓고 이것을 사용한다. 아무래도 SID가 공개되는 것이 문제가 될 수 있을 것이다. 

<tnsname.ora 의 작성 예>

PRODDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 152.25.24.15)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = ORCL)
    )
  )



서비스명과 인스턴스명과 데이타베이스명과 SID는 서로 비슷한 듯 하면서 약간 다르다.

1. 오라클 데이타베이스명을 확인하는 방법

SELECT NAME, DB_UNIQUE_NAME FROM v$database;

2. 오라클 SID를 확인하는 방법

SELECT instance FROM v$thread;



일반적인 경우 데이타베이스가 하나만으로 구성 되어 있다면 데이타베이스명이 SID가 된다. 하지만 RAC 로 구성하여 데이타베이스 두개가 동시 가동되는 경우라면 이 SID 가 서로 다를 수 있기 때문에 중복 확인해야 한다.

JDBC 로 접속할 때 url 정보 작성 방법 :
    url=jdbc:oracle:thin:@ip주소:포트:SID
   (url=jdbc:oracle:thin:@192.168.20.1:1521:ORCL)

아래의 예제에서 보면 RAC로 묶여 있는 경우 DATABASE NAME 과 실제 INSTANCE NAME 은 서로 다를 수 있다. 데이타베이스명은 ORCL 이지만 인스턴스명은 ORCL1 과 ORCL2 로 이름이 다름.  thin 드라이브 URL 에서는 이 인스턴스명을 사용해야 한다. 

사용자명 입력: system/manager@PRODDB

다음에 접속됨:
Oracle Database 11g Release 11.2.0.3.0 - 64bit Production
With the Real Application Clusters option

SQL> SELECT NAME, DB_UNIQUE_NAME FROM V$DATABASE;

NAME               DB_UNIQUE_NAME
------------------ ------------------------------------------------------------
ORCL               ORCL

SQL> SELECT INSTANCE FROM V$THREAD;

INSTANCE
--------------------------------------------------------------------------------
ORCL1
ORCL2

SQL>


출처 : http://pangate.com/665

Posted by 앗뜨거
,
728x90

0. MySQL 콘솔 접속

MySQL에서 사용자를 관리하려면 root@localhost 아이디로 접속해야 합니다.

$ mysql -uroot -p
Enter password: 비밀번호입력
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16465
Server version: 5.5.28-0ubuntu0.12.04.3 (Ubuntu)

Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

1. MySQL 전체 사용자 목록 보기

MySQL에 설치된 전체 사용자를 보려면 명령어로 직접 확인할 수는 없고 mysql 데이테베이스를 선택해 user 테이블의 레코드를 봐야 합니다.

mysql> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> SELECT User, Host from user;
+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| root             | 127.0.0.1 |
| root             | ::1       |
|                  | localhost |
| debian-sys-maint | localhost |
| root             | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

MySQL에서 사용자란 “아이디@호스트”의 결합입니다.

여기서 호스트는 MySQL 서버에 접속하는 컴퓨터를 의미합니다. root@localhost 사용자와 root@127.0.0.1 사용자는 서로 다릅니다. localhost와 127.0.0.1 주소는 네트워크상 같은 의미이지만 MySQL은 서로 다른 호스트에서 접속하는 것으로 간주합니다. 이 점은 MySQL의 사용자를 이해하는데 있어 상당히 중요합니다.

Host는 위와 같이 IP 주소이거나 도메인 이름일 수 있습니다. 아니면 % 같은 기호로 모든 호스트를 나타낼 수도 있으며 이 경우 MySQL 서버에 접속할 수 있는 컴퓨터에 제한을 두지 않는다는 의미입니다. 이는 보안상 추천하지 않습니다.

2. 사용자 만들기

test@localhost라는 사용자가 “test” 비밀번호로 접속할 수 있도록 만듭니다.

mysql> CREATE USER test@localhost IDENTIFIED BY 'test';
Query OK, 0 rows affected (0.00 sec)

3. 사용자에게 데이터베이스 권한 부여

test@localhost 사용자에게 test 데이터베이스 안의 모든 테이블(test.*)에 관한 모든 권한을 부여합니다. 특정 데이터베이스 안의 모든 테이블을 나타내려면 * 문자를 사용합니다.

mysql> GRANT ALL PRIVILEGES ON test.* TO test@localhost;
Query OK, 0 rows affected (0.00 sec)

4. 사용자에 부여된 권한 확인

test@localhost 사용자의 모든 권한을 확인합니다.

mysql> SHOW GRANTS FOR test@localhost;
+---------------------------------------------------------------------------------+
| Grants for test@localhost                                                       |
+---------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'localhost' IDENTIFIED BY PASSWORD '*94BDCEBE1908' |
| GRANT ALL PRIVILEGES ON `test`.* TO 'test'@'localhost'                          |
+---------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

5. 사용자에게서 권한 박탈

test@localhost 사용자에게서 test 데이터베이스 안의 모든 테이블에 대해서 모든 권한을 박탈합니다.

mysql> REVOKE ALL PRIVILEGES ON test.* FROM test@localhost;
Query OK, 0 rows affected (0.00 sec)

mysql> SHOW GRANTS FOR test@localhost;
+---------------------------------------------------------------------------------+
| Grants for test@localhost                                                       |
+---------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test'@'localhost' IDENTIFIED BY PASSWORD '*94BDCEBE1908' |
+---------------------------------------------------------------------------------+
1 row in set (0.00 sec)

GRANT ALL PRIVILEGES 명령어를 주기 이전으로 test@localhost 사용자는 아직 로그인이 가능합니다.

만약 위의 USAGE 권한까지 박탈하려면 다음과 같이 명령합니다.

mysql> REVOKE USAGE ON *.* FROM test@localhost;
Query OK, 0 rows affected (0.00 sec)

USAGE 권한이 없으면 로그인이 안 됩니다.

다시 USAGE 권한을 주고 싶다면 아래와 같이 명령해야 합니다.

mysql> GRANT USAGE ON *.* TO test@localhost IDENTIFIED BY 'test';
Query OK, 0 rows affected (0.00 sec)

6. 사용자 삭제

test@localhost 사용자를 삭제합니다.

mysql> DROP USER test@localhost;
Query OK, 0 rows affected (0.00 sec)

부가적으로 해당 사용자에게 부여된 권한(GRANTS)까지 모두 삭제됩니다. 별도로 권한을 박탈하는 과정을 거칠 필요가 없습니다.

이상 MySQL 데이터베이스에서 사용자 관리하는 방법을 살펴봤습니다. 사용자 생성, 삭제 그리고 권한 부여, 박탈 이렇게 생각할 수 있습니다.

Posted by 앗뜨거
,