태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.

Sequence 란?

  • Oracle 내부에서 순차적으로 증가되는 값을 가지는 유일(Unique) 객체임.
  • 시퀀스를 생성하게 되면 이것을 이용하여 순차적으로 증가되는 관리번호같은 것등을 자동생성함.
  • 메모리에 cache되었을때에 Sequence 값의 액세스 효율이 증가함.
  • 테이블과 독립적으로 생성되므로 여러테이블에서 사용될수 있음.

---------------------------------------------------------------------------
SEQUENCE 생성 구문:
---------------------------------------------------------------------------

CREATE SEQUENCE [시퀀스이름]
START WITH
[n]
INCREMENT BY [n]
MAXVALUE    [n] |     NOMAXVALUE
MINVALUE     [n] |     NOMINVALUE
CYCLE                 |      NOCYCLE


  • START WITH [n] - n으로 시퀀스 시작값을 설정한다.
  • INCREMENT BY [n] - n 만큼 시퀀스가 증가한다.
  • MAXVALUE, MINVALUE - 지정된 숫자만큼 최대값 최소값이 정해진다.
---------------------------------------------------------------------------

테이블을 운영하다보면 어떠한 필드가 1씩 증가해야 하는 상황이 필요하다. 이러한 경우 사용하는 방식으로 sequence 를 만들어서 사용하는 방식이 있다.

다음은 1 부터 시작하여 한번에 1씩 증가하는 sequence 를 생성한다.

create sequence autonum
     increment by 1   -- 1씩 증가하라는거고요
     start with 1        -- 1부터 시작이고요 100 시작할려면 100 이라고 쓰시면 됩니다.
     nomaxvalue       -- 최대값 제한이 없다
     nocycle            
     nocache;

 간단하게 1부터 1씩 증가를 원하면 다음과 같이 사용해도 된다.

create sequence friend_seq;

--> 기본적으로 1부터 시작하여 1씩 증가하게 된다.

 접근:

-- 시퀀스명.nextval

-- 시퀀스명.curval

 

insert into friend values(friend_seq.nextval,'박신양','노래');
insert into friend values(friend_seq.nextval,'장동건','수영');

 

유의할 사항은
- 시퀀스명.Nextval 하면 전에 값으로 되돌릴수 없습니다.
                       └> 해결책: 삭제하고 다시 만들어줘야 함!

 

SEQUENCE 삭제(필요시)
drop sequence
member_seq;
drop sequence friend_seq;



참조 : http://opensourceforge.tistory.com/264

#. Toad 에 Oracle 10g XE 버전 TNS 설정하기

(오라클 설치경로)\app\oracle\product\10.2.0\server\NETWORK\ADMIN\tnsnames.ora

위의 경로 파일을 에디터로 연다..

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = JH-VAIO-NOTE)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

EXTPROC_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
  )

ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )


기본사항으로 위의 내용이 있다..(나의 노트북 기준)

첫번째 구문 아래에 아래내용 추가(접속사항에 맞게 수정후 사용)

# 주석(어쩌구저쩌구)
(데이터베이스이름) =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 호스트IP)(PORT = 포트번호))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = 서비스명)
    )
  )

Toad의 연결설정에서 TNS탭 선택후

User / Schema : 에 유저명 입력, Password : 에 비밀번호 입력,

Database : 부분에서 위의 데이터베이스 이름을 찾아서 선택후 Connect...


Tag // OracleXE, Toad
오라클 내장 함수
from D.B./Oracle 2007/11/05 15:37
오라클 내장 함수
오라클의 함수에는 단일행 함수복수행 함수(그룹함수)가 있다.


숫자 함수(number function)
ABS ACOS ASIN ATAN
ATAN2 BITAND CEIL COS
COSH EXP FLOOR LN
LOG MOD POWER ROUND(number)
SIGN SIN SINH SQRT
TAN TANH TRUNC(number) WIDTH_BUCKET

문자 함수(character function)
CHR CONCAT INITCAP LOWER
LPAD LTRIM NLS_INITCAP NLS_LOWER
NLSSORT NLS_UPPER REPLACE RPAD
RTRIM SOUNDEX SUBSTR TRANSLATE
TREAT TRIM UPPER ASCII
INSTR LENGTH, LENGTHB, LENGTHC, LENGTH2, LENGTH4

날짜와 날짜 처리함수(date, datetime function)
ADD_MONTHS CURRENT_DATE CURRENT_TIMESTAMP DBTIMEZONE
EXTRACT(datetime) FROM_TZ LAST_DAY LOCALTIMESTAMP
MONTHS_BETWEEN NEW_TIME NEXT_DAY NUMTODSINTERVAL
NUMTOYMINTERVAL ROUND(date) SESSIONTIMEZONE SYS_EXTRACT_UTC
SYSDATE SYSTIMESTAMP TO_DSINTERVAL TO_TIMESTAMP
TO_TIMESTAMP_TZ TO_YMINTERVAL TRUNC(date) TZ_OFFSET

데이터 형변환 함수(conversion function)
ASCIISTR BIN_TO_NUM CAST CHARTOROWID
COMPOSE CONVERT DECOMPOSE HEXTORAW
NUMTODSINTERVAL NUMTOYMINTERVAL RAWTOHEX RAWTONHEX
ROWIDTOCHAR ROWIDTONCHAR TO_CHAR(character) TO_CHAR(datetime)
TO_CHAR(number) TO_CLOB TO_DATE TO_DSINTERVAL
TO_LOB TO_MULTI_BYTE TO_NCHAR(character) TO_NCHAR(datetime)
TO_NCHAR(number) TO_NCLOB TO_NUMBER TO_SINGLE_BYTE
TO_YMINTERVAL TRANSLATE ... USING UNISTR
참조로 형변환 관계표를 참조하면 편리하다.
기타함수(miscellaneous single row function)
BFILENAME COALESCE DECODE DEPTH
DUMP EMPTY_BLOB
EMPTY_CLOB
EXISTSNODE EXTRACT(XML)
EXTRACTVALUE GREATEST LEAST NLS_CHARSET_DECL_LEN
NLS_CHARSET_ID NLS_CHARSET_NAME NULLIF NVL
NVL2 PATH SYS_CONNECT_BY_PATH SYS_CONTEXT
SYS_DBURIGEN SYS_EXTRACT_UTC SYS_GUID SYS_TYPEID
SYS_XMLAGG SYS_XMLGEN UID UPDATEXML
USER USERENV VSIZE XMLAGG
XMLCOLATTVAL XMLCONCAT XMLFOREST XMLSEQUENCE
XMLTRANSFORM XMLELEMENT CASE

그룹함수 집계(Aggregate) 함수
AVG CORR COUNT COVAR_POP
COVAR_SAMP CUME_DIST DENSE_RANK FIRST
GROUP_ID GROUPING GROUPING_ID LAST
MAX MIN PERCENTILE_CONT PERCENTILE_DISC
PERCENT_RANK RANK REGR function STDDEV
STDDEV_POP STDDEV_SAMP SUM VAR_POP
VAR_SAMP VARIANCE GROUPING SETS
분석(Analytic) 함수
AVG CORR COUNT COVAR_POP
COVAR_SAMP CUME_DIST DENSE_RANK FIRST
FIRST_VALUE LAG LAST LAST_VALUE
LEAD MAX MIN NTILE
PERCENT_RANK PERCENTILE_CONT PERCENTILE_DISC RANK
RATIO_TO_REPORT REGR_(linear regression) function ROW_NUMBER STDDEV
STDDEV_POP STDDEV_SAMP SUM VAR_POP
VAR_SAMP VARIANCE TOP_N 분석

윈도우(windowing) 분석 함수

윈도우 분석함수부분 합을 계속 더해 나감, sum은 전체 합계를 구함


객체 참조 함수
DEREF MAKE_REF REF REFTOHEX VALUE
PseudoColumn을 의미하는 것
ROWIDEach row in the database has an address
ROWNUM테이블에서 select 되어진 행의 순서번호
LEVEL테이블에서 행(row)의 계층관계를 가리키는 일련번호 순서


출처 : http://radiocom.kunsan.ac.kr/lecture/oracle/function/function_start.html


ERROR 1016: Can`t open file:[Tablename].MYD (errno: 145) 


☆. 하드웨어의 오류 및 기타 이유로 table file이 손상된 경우
     Myisamchk 나 check table명령어를 사용하여 수동으로 복구

     # myisamchk -r [Tablename].MYI  

 

☆. 자동복구 방법

    이 기능은 MySQL기동시 table 이 crash marking이 되어 있는지 혹은 적절히
    close 되지 않았는지 체크하는 기능으로 mysqld 의 파라메터로 지정해주도록 되어 있다.

    --myisam-recover = {default | backup | force | quick }

    DEFAULT : 이 옵션은 아무 옵션도 주지 않은 것과 동일한 의미로 자동 복구를
         사용하지 않는다는 의미

    BACKUP : 추천하는 옵션으로 복구중 변경되는 테이블은 BAK확장자를 붙여서
         백업을 해놓고 복구에 들어가는 옵션

    FORCE : 복구시 테이타 손실이 무시하고 강제로 복구
 
    QUICK: 테이블에 어떠한 삭제된 블락도 없다면 table에 row를 점검하지 않는다.
        속도는 빠르지만 완벽한 복구는 보장할 수 없다.

    /etc/rc.d/init.d/mysql 같은 startup script에 아래 부분을 수정해주시고 MySQL을 재시작
    .
    case \$mode\ in
    \start\)
    # Start daemon
    if test -x $bindir/safe_mysqld
    then
    $bindir/safe_mysqld --myisam-recover=backup (수정할 부분)
    ~~~~~~~~~~~~~~~~~~~~~~~
    .
   
    service mysql stop (MySQL중단)
    service mysql start (MySQL재시작)  
 
 
☆. mysql 서버의 중지 없이 하는방법
    mysql에 접속하여 check table,repair table명령문으로 해결할수도 있습니다. 



출처 : http://www.mysqlkorea.co.kr/gnuboard4/bbs/board.php?bo_table=community_03&wr_id=1490&page=2

Derby
from D.B./Derby 2007/08/20 15:15

Cloudscape와 Derby의 관계

IBM® Cloudscape™는 Java™ 및 SQL을 기반으로 하는 관계형 데이터베이스 관리 시스템입니다. Cloudscape는 ASF(Apache Software Foundation)의 오픈 소스 관계형 데이터베이스 프로젝트의 상업용 릴리스입니다. Apache 프로젝트를 Derby라고 합니다.

Cloudscape 제품은 기본 소스 코드를 전혀 수정하지 않은 Derby를 포함합니다. Cloudscape는 동일한 코어 Derby 엔진을 포함하나 설치 프로그램(JRE 있음), 번역된 매뉴얼 및 오류 메시지와 같이 Derby 소프트웨어에서 찾을 수 없는 몇 가지 기능을 제공합니다. 또한 기술 지원은 IBM을 통해 Cloudscape 제품을 구입한 경우에 사용 가능합니다.

Cloudscape 및 Derby에는 동일한 기능이 있으므로, Cloudscape 문서는 핵심 기능을 Derby로 지칭합니다. 이 문서에서 언급한 모든 "Derby"는 Cloudscape 제품에 포함된 Derby 코어 엔진을 지칭합니다.

Cloudscape 버전 10.1은 Derby 버전 10.1 릴리스에 기초를 두고 있습니다. Cloudscape 문서에서 언급한 "Derby"는 Apache Derby의 버전 10.1 릴리스를 지칭합니다.

 - 기술 지원
http://publib.boulder.ibm.com/infocenter/cscv/v10r1/index.jsp?topic=/com.ibm.cloudscape.doc/tadminapps811302.html
 
 /*
   String databaseURL = "jdbc:derby://localhost:1527/sample";
  // Load Derby Network Client driver class
  Class.forName("org.apache.derby.jdbc.ClientDriver");
  // Set user and password properties
  Properties properties = new Properties();
  properties.put("user", "APP");
  properties.put("password", "APP");
  // Get a connection
  Connection conn = DriverManager.getConnection(databaseURL, properties);
  */

Tag // Cloudscape, derby
Derby 소개
from D.B./Derby 2007/08/20 15:10

Derby 소개

프로그램관련/DB | 2006/08/01 08:00

요즘 Apache 프로젝트 중 DBMS 개발 프로젝트인 Derby에 대해 살펴보고 있다. Derby는 IBM의 Cloudscape DB의 오픈소스 버전이다. 실제로는 Derby와 Cloudscape는 같은 소스를 사용하고 있으며 매뉴얼도 동일하다. 차이점은 매뉴얼에 Derby라는 단어가 Cloudscape로 바뀌었을 뿐이다.

오라클과 같은 우리가 흔히 사용하는 DBMS의 경우 DB 서버를 구동시키고, 클라이언트는 SQL*Net과 같은 DBMS에 제공하는 네트워크(TCP/IP)기반의 도구를 이용하여 DB 서버에 접근하는 방법이다. Derby의 경우 이런 방식도 지원하지만 Embeded 모드도 지원한다.

- Network Server 또는 Client/Server 방식 : Oracle과 같이 네트워크 기반의 DBMS 서버 방식.

- Embeded 방식 : 데이터베이스를 사용하는 Application에 포함되어 해당 Application과 동일한 JVM에서 수행되는 방식이다. 이런 방식은 웹 애플리케이션 보다는 범용 애플리케이션(예를 들면 서브버전과 같은 형상관리 도구 또는 PC에 설치되는 비디오 대여점 관리 애플리케이션 등)에서 데이터 관리가 필요한 경우 사용될 수 있다. Embeded 방식의 경우 동시에 여러 Connection을 설정할 수 없다.

이 두가지 방식에 따라 클라이언트가 사용하는 JDBC 드라이버도 다르게 설정해야 한다. Network Server 방식의 경우 "org.apache.derby.jdbc.ClientDriver"를 Embeded 방식의 경우 "org.apache.derby.jdbc.EmbeddedDriver"를 사용한다.

Network Server 방식도 엄밀히 말하면 Embeded 방식이라고 할 수 있는데 이것은 org.apache.derby.drda.NetworkServerControl 이라는 Java Application을 만들어 여기에서 네트워크로부터 전송된 클라이언트의 요청을 처리하도록 구현되어 있다.
결과적으로 Derby는 기본적으로 DBMS에서 핵심이라고 할 수 있는 데이터 저장을 위한 파일 구조와 SQL 처리를 core로 구성한 후 이것을 필요에 따라서 쉽게 변경하여 사용할 수 있도록 구현되어 있는 것이다.
그렇다고 Network Server 방식이 기능적으로 떨어지지는 않는다. 4가지 모드의 Transaction Isolation Level을 지원하여 commit; rollback; 처리를 할 수 있다. 다만 조금 부족한 것은 오라클과 같은 상용 DBMS에서 제공하는 GUI 환경의 뛰어난 관리도구와 DBMS의 메타데이터를 관리하는 능력에서는 현저하게 떨어진다고 할 수 있다.

어제부터 설치와 관련된 주요 이슈는 다음과 같다.



1.환경 설정
derby의 경우 jdk1.4와 1.3으로 개발되었다. 소스내에 보면 enum을 변수로 사용하고 있는데 jdk1.5에서는 enum은 예약어라 변수명으로 사용할 수 없다. 따라서 jdk를 1.4로 사용할 것을 추천한다.


set path=C:j2sdk1.4.2_07?in;C:db-derby-10.1.3.1-binframeworksNetworkServer?in;%PATH%

set CLASSPATH=C:db-derby-10.1.3.1-binlibderbyclient.jar;
C:db-derby-10.1.3.1-binlibderby.jar;
C:db-derby-10.1.3.1-binlibderbynet.jar;
C:db-derby-10.1.3.1-binlibderbytools.jar;
C:db-derby-10.1.3.1-bin;%CLASSPATH%

set JAVA_HOME=C:j2sdk1.4.2_07


2. Network Server 시작
- java org.apache.derby.drda.NetworkServerControl start
- Network Server와 관련된 모든 내용은 NetworkServerControl 클래스를 이용한다.

사용자 삽입 이미지


위 화면은 아무런 옵션을 주지 않고 실행한 화면이다. 사용 가능한 옵션에 대한 정보를 보여준다. 서버를 종료하기 위해서는 shutdown 옵션을 사용한다.
-p 옵션은 DBMS 서버의 리스너 port를 지정하는데 사용한다. 기본 port는 1527 이다.

3. ij를 이용하여 서버 접속 테스트
Derby는 자체에 몇가지 도구를 제공하고 있는데 ij는 오라클의 SQL*PLUS에 해당하는 도구이다. 이 도구를 이용하여 DB에 접속하고 테이블 생성, SQL문 실행 등의 작업을 할 수 있다.
실행은 1번에서의 환경설정을 동일하게 한 후 ij.bat라고 치면 된다(Linux의 경우 ij.ksh)

DB에 연결하기 위해서는 먼저 DB를 생성해야 하는데 create database와 같은 명령은 존재하지 않고 connect할 때 없으면 만들도록 하는 옵션을 이용한다.

connect 'jdbc:derby://localhost:1527/testdb;create=true';

위의 connection 명령은 "testdb"라는 이름을 가진 database로 접속을 하는데 없는 경우 만들어라는 명령이다. testdb의 실제 저장 파일은 Derby 설치 디렉토리 하단에 생성된다. 별도의 디렉토리를 설정하고 싶은 경우 connection url을 다음과 같이 하면 된다.

jdbc:derby://localhost:1527/c:/my-db-dir/testdb;create=true
사용자 삽입 이미지

오라클의 desc와 같이 테이블 정보를 보는 기능을 제공하지 않는다. 이것은 Eclipse Database Plugin을 이용하거나 별도의 도구를 이용하는 방법밖에 없다.

ij에서 사용 가능한 명령어는 help; 를 치면 나타난다.

4. 사용자 설정
3번까지의 경우에는 연결할 때 별도의 사용자 인증 절차없이 로그인 하였다. DBMS 서버의 경우 데이터를 관리하고 있기 때문에 보안 관련하여 아주 민감한 서버라 할 수 있다. 따라서 반드시 DBMS에 접속하기 위해서는 사용자 인증을 받도록 해야 한다.
아직 이 부분에 대해서 좀 더 확인해야 하지만 현재까지 파악된 내용은 사용자 설정과 관련하여 몇가지 옵션을 제공하고 있으며 Property, OS, LDAP 사용자 등을 이용하는 방법이 있다.
여기서는 Property를 이용하여 설정하는 방법에 대해 설명한다.

먼저 derby.properties 파일을 Derby home에 만든다. 앞의 환경설정에서 Derby home 디렉토리 자체를 CLASSPATH 상에 두었는데 이 properties 파일을 인식하게 하기 위해서 였다.
derby.properties에서는 port와 같은 기본적인 설정뿐만 아니라 max thread 수와 같은 성능 관련된 내용도 설정할 수 있다.

derby.connection.requireAuthentication=true
derby.authentication.provider=BUILTIN
derby.user.dbuser=123456

위와 같이 설정하여 사용자 인증을 사용하도록 하고 인증 방법은 "BUILTIN"을 이용하고 사용자 ID는 "dbuser", 패스워드는 "123456"을 사용하도록 지정한 후 Derby Server를 다시 실행한다.

사용자 설정이 된 후 DB에 접속 하기 위해서는 다음과 같이 id, pwd를 준다.

jdbc:derby://localhost:1527/testdb;create=true;user=dbuser;password=123456

5. 원격 client에서 접속 가능하도록 설정
다른 장비 또는 PC에서 DB 서버에 접속하도록 하기 위해서는 host 설정을 반드시 해주어야 한다. host 설정은 DB Server 시작시 -h 옵션을 이용할 수고 있고, properties 파일에서 다음을 추가할 수 있다.

derby.drda.host=hostName

hostname이 없는 경우 ip를 주면 된다. 이렇게 구성한 다음에 서버에 접속할 때에는 반드시 여기서 설정된 hostname을 이용하여 접속해야 한다.


출처 : http://www.jaso.co.kr/91
 
MySQL Table 복구 - Got error 127 from storage engine

 

1. 에러 메세지

ERROR 1030 (HY000): Got error 127 from storage engine

2. 복구 절차

  1. Analyze Table `Table Name`
  2. Repair Table `Table Name`

3. 예제보기

mysql> SELECT COUNT(A.IDX) AS 'CNT' FROM PRO_QNA_T A WHERE A.TYPE > 0;
ERROR 1030 (HY000): Got error 127 from storage engine
mysql>
mysql>
mysql> Analyze PRO_QNA_T;
ERROR 1064 (42000): You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version
for the right syntax to use near 'PRO_QNA_T' at line 1
mysql> Analyze Table PRO_QNA_T;
+---------------------+---------+----------+----------+
|           Table             |     Op    | Msg_type | Msg_text |
+---------------------+---------+----------+----------+
| ihelpers.PRO_QNA_T | analyze  |   status   |      OK     |
+---------------------+---------+----------+----------+
1 row in set (0.01 sec)

mysql> Repair Table PRO_QNA_T; 
+--------------------+--------+----------+--------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+--------------------+--------+----------+--------------------------------------------+
| ihelpers.PRO_QNA_T | repair | info | Key 1 - Found wrong stored record at 24884 |
| ihelpers.PRO_QNA_T | repair | warning | Number of rows changed from 2187 to 2186 |
| ihelpers.PRO_QNA_T | repair | status | OK |
+--------------------+--------+----------+--------------------------------------------+
3 rows in set (0.17 sec)
mysql> Analyze Table PRO_QNA_T; 
+--------------------+---------+----------+-----------------------------+
| Table | Op | Msg_type | Msg_text |
+--------------------+---------+----------+-----------------------------+
| ihelpers.PRO_QNA_T | analyze | status | Table is already up to date |
+--------------------+---------+----------+-----------------------------+
1 row in set (0.00 sec)
mysql> SELECT COUNT(A.IDX) AS 'CNT' FROM PRO_QNA_T A WHERE A.TYPE > 0; 
+------+
| CNT |
+------+
| 2186 |
+------+
1 row in set (0.01 sec)

mysql>

출처 : http://blog.naver.com/entrv/100021821499
엑셀 데이터 -> MySQL
from D.B./Mysql 2007/08/20 15:04

엑셀 데이터 -> MySQL

*엑셀 데이터를 MySQL로 변환하기

엑셀로 데이터를 생성하고 저장시 [파일]-[다른 이름으로 저장]에서 "텍스트 (탭으로분리)(*.txt)"의
형식으로 저장한다. ("c:\mysql\Book1.txt" 로 저장했다고 가정해보자)

mysql>load data infile 'c:/mysql/Book1.txt' into table 테이블명 fields terminated by '\t';
  *경로의 구분에 역슬래쉬(\) 대신에 슬래시(/)를 사용해야 한다.
  *fields terminated by '\t'; 는 필드 공백을 탭키로 사용한다는 옵션. (\t 는 탭키를의미)

===========================================================================================

1.엑셀파일을 텍스트 파일로 저장

2.mysql 이있는 시스템으로 파일 옮긴다.

3. LOAD DATA INFILE 'text.txt' INTO TABLE 테이블이름 FIELDS TERMINATED BY '\n';

ex)  Load Data INFILE '/home/admin/hanja_definitions' INTO TABLE test FIELDS TERMINATED BY '\n';

이렇게 하시면 많은 엑셀파일의 데이타를 쉽게 테이블에 저장할 수 있겠죠!!!

===================================================================================

## CSV파일의 경우 ##

LOAD DATA INFILE '/home/ignc/domain.csv' INTO TABLE `ez_domain` FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '' LINES TERMINATED BY '\n';

Tag // excel, mysql
Mysql 백업 및 복구
from D.B./Mysql 2007/08/20 15:03

* 백업 하기!
    DB 백업은 콘솔상에서 mysql 빠져 나오신 다음에..
    => mysqldump -u ID -p TABLE명 혹은 DB명 > 백업할 파일이름.sql
    하고 비밀번호 입력하시면 백업이 되구요

* 복구하기
   => mysql -u ID -p < 백업한 파일이름.sql 하시고
   비밀번호 입력하시면 됩니다..
 

MySQL 접속]
mysql -hDB서버명 -uMySQL아이디 -pMySQL패스워드 데이타베이스명

[MySQL 백업하기]
MySQL 명령어로 백업받기 :
mysqldump -hDB서버명 -u유저명 -p패스워드 [백업할 테이터베이스명] > [외부로 저장할 파일명]
ex) mysqldump -hdb1.guideline.co.kr -uDBuser -pPassword MyDB > MyDB.sql

특정 테이블만 백업 할 경우 :
mysqldump -hDB서버명 -u유저명 -p패스워드 [테이타베이스명] [특정테이블명] > [외부로 저장할 파일명]
ex) mysqldump -hdb1.guideline.co.kr -uDBuser -pPassword MyDB MyTable > MyDB_MyTable.sql

[MySQL 복구하기]
mysql -hDB서버명 -u유저명 -p패스워드 [복구할 테이터베이스명] < [외부로 저장된 파일명]
ex) mysql -hdb1.guideline.co.kr -uDBuser -pPassword MyDB < MyDB.sql

1. mysqld 데몬을 죽입니다.(말이 무식해서리 ^^ )
#killall mysqld <엔터>
#ps -ef |grep mysql(엔터)로 데몬이 죽은 지 확인

2. mysql이 깔린곳으로 이동
# cd /usr/local/mysql

3. grant-table 미사용모드로 mysql시작
# ./bin/safe_mysqld –skip-grant &

4. mysql 실행
#mysql -u root -p mysql<엔터>
패스워드 물어도 그냥 엔터치세요

5.1 insert문으로 root에게 모든 권한부여
insert into user values(’localhost’, ‘root’, password(’1234′), ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’);

5.2 grant문으로 root에게 모든권한부여
mysql>GRANT ALL PRIVILEGES ON zboard.* TO 사용자id@localhost IDENTIFIED BY ‘비밀번호’ WITH GRANT OPTION;
이렇게 사용자id에게 zboard db에대한 권한만 부여하고 나니까 root 권한 접속 불가, 사용자id접속이 가능하나, db인 zboard에 대한 권한외 어떠한 것도 실행이 불가 했습니다.

6. user 테이블 정보가 변경되었으니 mysql에게 새로운 정보를 다시 읽게 한다.
mysql>flush privileges;<엔터>

7. exit명령으로 빠져나옴
mysql>exit

8. 실행중인 mysql 다시 종료
#killall mysqld <엔터>

9. 일반모드로 Mysql 재시작
# /usr/local/mysql/bin/safe_mysqld &

10. root 권한으로 접속하면 사용자권한 다시설정 등
모든 mysql의 모든권한으로 행사할 수 있음