MySQL - SPARCS - SPARCS에 오신 것을 환영합니다!

Download Report

Transcript MySQL - SPARCS - SPARCS에 오신 것을 환영합니다!

MySQL
grandmarnier
Database
• 정보의 집합
• 주로 여러 사람들이 공유하고 사용할 때 유용함
• 파일 시스템의 단점을 극복하기 위해 만들어짐
DBMS
• 데이터베이스 관리 시스템
• 데이터베이스 내의 데이터를 관리
• 다수의 컴퓨터 사용자들이 데이터베이스 안에 데
이터를 기록하거나 접근할 수 있게 함
RDBMS
데이터를 테이블, 혹은 표의 형태로 저장하여 관리
Table
학번
이름
Id
비밀번호
특징
2011
최낙현
bbashong
*
2011
정종혁
sunguard
*
뿌잉뿌잉
2010
김재겸
noname
*
시바
2011
정창제
rodumani
*
막내
2011
유민정
alphamin
*
미스평창
2011
심규민
boolgom
*
Column
Record
or
Tuple
RDBMS
database in RDBMS = n * tables
Why MySQL?
1. Scalability and Flexibility
2. High Performance
3. High Availability
4. Robust Transactional Support
5. Web and Data Warehouse Strengths
6. Strong Data Protection
7. Comprehensive Application Development
8. Management Ease
9. Open Source Freedom and 24 x 7 Support
10. Lowest Total Cost of Ownership
라고 자기네들이 홍보합니다.
MySQL table type
ISAM
MYSQL 3.x버전까지의 테이블
테이블 최대용량은 4GB
5.0 버전부터 사라짐
MyISAM
MYSQL 4.x버전의 기본 테이블 타입
ISAM의 확장
용량은 OS에 달림
작은 규모의 DB에 적합
MERGE
여러 개의 MyISAM 테이블을 하나로 취급하여 MyISAM의 용량 제한을 극
복한 타입
MySQL table type
InnoDB ( ara에서 사용 )
트랜잭션, Foreign key, row-level locking 지원
용량 제한이 거의 없음
MyISAM에 비해 용량을 많이 사용함
대규모의 DB에 적합
BDB
트랜잭션, page-level locking 지원
데이터는 옮길 수 없음
HEAP
메모리를 저장공간으로 사용
엑세스 타임이 빨라 임시 테이블이나 검색결과 테이블 등으로 활용
SQL
Structured Query Language
• RDBMS에서 다음의 기능을 위해 고안된 컴퓨터 언어
– 자료의 검색과 관리
– 데이터베이스 스키마 생성과 수정
– 데이터베이스 객체 접근 조정 관리
• 명령어는 여러 줄에 나눠 쓰는 것도 가능하다
• 대소문자를 구분하지 않는다
• 명령어는 ; 으로 종료한다
Practice Session
• MySQL 설치
– #apt-get install mysql-common mysql-server mysqlclient
– 소스를 이용해 직접 설치하는 법은 reno의 mysql 세
미나 참고
– 설치 중에 root 의 비밀번호를 생성
– 설치가 끝나면 mysql 데몬(mysqld)이 바로 실행됨
Practice Session
• MySQL 실행 및 종료
– #/etc/init.d/mysql start|stop|restart
• apt로 설치한 경우
– 실행: /usr/local/mysql/bin/mysqld_safe &
– 종료: /usr/local/mysql/bin/mysqladmin -u root -p
shutdown
• 소스로 설치한 경우
Practice Session
• MySQL 설정
– /etc/my.cnf : MySQL 모든 프로그램에 대한 옵션
– DATADIR/my.cnf :서버에 관련된 옵션
• DATADIR 은 /etc/my.cnf 의 [mysqld]에 있음
– $HOME/.my.cnf : 개인 사용자의 옵션
Practice Session
• MySQL 로 서버에 접속하기
$mysql
-u [username]
default : connected username
-p(password)
confirm password needed
-h [host address] default : localhost
-P [port]
default : 3306
-S [socket address]
[database]
이후로는 mysql [login] [database]로 표기함
do) mysql –u sparcs –p –h wseminar6.sparcs.org
Practice Session
• MySQL 사용자 관리
– 사용자 추가하기
– use mysql;
1. GRANT
• grant all privileges on *.* to ‘[name]’@'[host]’ identified by
‘[password]’ with grant option;
2. INSERT (in 5.0, 버전마다 조금씩 다를 수 있음)
• INSERT INTO user
VALUES(‘[host]’, ‘[name]’, PASSWORD(‘[password]’), ‘Y’, ‘Y’, ‘Y’,
‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’,
‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘Y’, ‘’, ‘’, ‘’, ‘’, 0, 0, 0, 0);
• flush privilieges;
※ [host]는 접속을 허용할 위치, %는 *와 같은 의미입니다. ex) 143.248.%
do) 사용자 자기 아이디로 만들기, 권한은 일단 다 줍시다.
Practice Session
• MySQL 사용자 관리
– 필요한 Y/N의 개수는 mysql 의 테이블 구조에 달림
– use mysql; desc user;
Practice Session
• MySQL 사용자 관리
– 사용자 삭제하기
DELETE
• delete from user where user=‘[username]’;
• flush privileges;
don’t do) 다른 사람 아이디 삭제하지 마세요
Practice Session
• MySQL 사용자 관리
– 사용자 외부 접속 허용하기
/etc/mysql/my.cnf 에서
• bind address=127.0.0.1 을 주석처리
mysql 에서
• use mysql;
• select host, user, password from user;
• update user set host=‘%’ where user=‘[username]’ and
host=‘[old host]’
• flush privileges;
Practice Session
• MySQL 사용자 관리
– 사용자 외부 접속 허용하기
• 보통 외부 접속을 허용하기 위해서는 하나의 유저에 대해 2개
이상의 호스트를 추가하는 것이 좋다.
• 접속하는 곳에 따라 비밀번호와 권한을 다르게도 설정가능
• localhost
%option: 로컬 호스트의 호스트 이름 ex) wseminar6
• 외부의 접속을 허용하는 주소 (1개보다 많아도 됨)
do) 실습 때문에 이 설정은 미리 끝냈습니다.
use mysql; select host, user from user;로 자기 아이디의 호스트를 확인하세요.
Practice Session
• MySQL 사용하기
–
–
–
–
명령어는 항상 ; or \g 로 끝남
\q, ^D, quit, exit 명령어로 접속 종료
command clear는 \c
도움말은 \h
Practice Session
• MySQL 의 자료형
–
–
–
–
–
–
–
–
–
varchar(N) : 가변 길이 문자열
char(N) : 고정 길이 문자열
text : 최대 65536개의 문자 저장, case insensitive
blob : 최대 65536개의 문자 저장, case sensitive
int : 정수형
float : 실수형
date : 날짜 ( yy-mm-dd )
time : 시간 ( hh:mm:ss)
datetime
Practice Session
• SQL 주요 명령어들
–
–
–
–
–
–
–
–
–
create
insert
select
update
delete
show
explain
describe
alter
등등 많은 명령어들
Practice Session
• SQL 주요 명령어들
show, explain, describe
: DB 와 테이블에 대한 정보를 얻어옴
– show databases;
– show tables from [database];
– show columns from [table];
= explain [table];
= describe [table];
= desc [table];
•
Practice Session
• SQL 주요 명령어들
•
create
: DB, 테이블, 칼럼 생성
–
create database [db name];
–
–
use [db name]; 이후
create table [table name] ( [column name] type, … );
do) 자신의 데이터베이스, 테이블 만들기
테이블 내용은 가계부로. 내역 – 수입 – 날짜 정도?
testtable의 account를 참조하면 좋습니다.
Practice Session
• SQL 주요 명령어들
•
drop
: DB, 테이블,
–
drop database [db name] ;
–
–
use [db name]; 이후
drop table [table name];
do) 잘못 만들었으면 일단 이걸로 지우고 다시 만드세요.
수정하는 명령어는 나중에 나옵니다.
Practice Session
• SQL 주요 명령어들
•
insert
: 테이블에 레코드 추가
use [db name]; 이후
insert into [table name] ( [column1], [column2], …)
values ( [value1], [value2], …) ;
축약형
– insert into [table name] values ( [v1], [v2], …) ;
–
–
do) 레코드를 3개 이상 넣으세요
Practice Session
• SQL 주요 명령어들
•
select
: 테이블에서 레코드 검색
use [db name]; 이후
select [column1], [column2], … from [table name]
( where [conditions] );
– 칼럼을 적는 대신 * 으로 모든 칼럼을 볼 수 있다.
–
–
do) 이전에 레코드가 잘 입력되었는지 확인해보세요
Practice Session
• SQL 주요 명령어들
•
•
•
•
•
•
가능한
and(&&), or(||), not(!)
=, !=(same as <>), <, > , <=, >=
[a] in ( [b1], [b2], … )
이 외에도 여러가지가 있음
ex) select name, id, year, phone from nugu where
name=‘김%’ and year >= 2007
Practice Session
• SQL 주요 명령어들
•
update
: 레코드 수정
use [db name]; 이후
update [table name] set [column1]=[data1],
[column2]=[data2],… where [conditions];
where [conditions] 를 안 주면 칼럼의 모든 데이터가 바뀝
니다!
–
–
Practice Session
• SQL 주요 명령어들
•
delete
: 레코드 삭제
–
–
use [db name]; 이후
delete from [table name] where [conditions];
where [conditions] 를 안 주면 레코드가 모두 삭제됩
니다 주의!
Practice Session
• mysqladmin
•
–
–
–
–
–
–
–
Mysql 관리자
mysqladmin [login]
mysqladmin [login]
mysqladmin [login]
mysqladmin [login]
mysqladmin [login]
mysqladmin [login]
mysqladmin [login]
create [db_name]
drop [db_name]
ping : mysqld 가 돌아가는지 확인
status : mysql 상태
extended-status
shutdown
processlist
= mysqladmin [login] process : 실행중인 클라이언트 목록
–
mysqladmin [login] variables : 변수, 값 출력
Practice Session
• mysqldump
•
–
MySQL 백업 유틸리티
mysqldump [login] –A –-add-drop-table > [bak]
•
–
mysqldump [login] –B [options] [db1] [db2] … > [bak]
•
–
전체 데이터베이스 백업
선택한 데이터베이스 백업
mysqldump [login] [db name] [tb1] [tb2] … > [bak]
•
선택한 데이터베이스의 테이블 을 선택하여 백업
•
보통 .sql 확장자를 붙여서 백업함
do) 자기 데이터베이스 백업하세요 좀 있다 다 지웁니다.
Practice Session
• mysqldump
•
–
데이터 복구 시
mysql [login] < [bak]
•
–
여러 개의 데이터베이스 복구 ( -B로 백업한 경우)
mysql [login] [db_name] < [bak]
•
•
선택한 데이터베이스 백업(하나씩 백업한 경우)
db는 생성 되어있어야 함
한글이 깨지면 –-default-character-set 옵션을 이용하자.
혹은 mysql 옵션에서 ascii 코드 외의 문자를 ?로 표기하는
옵션이 켜져있을수도 있으니 확인!
do) 데이터베이스를 복구해보세요
Reference
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
wikipedia, terms
MySQL version 4.x , 베스트북
http://kr.blog.yahoo.com/yupymia/453
http://shapeace.tistory.com/99
http://www.mssql.org/LectureSQL/
http://barnak.tistory.com/52
http://whoisidc.com/board/read.php?bid=10&pid=76&page=1&ord=8&keyword=&field=
http://blog.naver.com/zakarum79?Redirect=Log&logNo=120033615643
http://4ellene.net/tt/218
http://radiocom.kunsan.ac.kr/lecture/mysql/mysqldump.html
http://www.mysql.com/why-mysql/topreasons.html
http://pneuma08.tistory.com/22
http://kldp.org/node/26673
http://kr.blog.yahoo.com/kwon37xi/1129894
http://osguru.tistory.com/entry/MySQL-DB-백업-및-복구-mysqldump
http://gudle.net/336
http://journae.springnote.com/pages/5936273
http://comnic.tistory.com/39
http://www.digimoon.net/blog/271
http://www.sojung.net/support/manual/mysqluse.html
http://koong.net/index.php?MenuID=1&cat=DB&list_count=50&mode=view&idx=429