Transcript Document
Wheel Seminar
MySQL
yasik
목차
데이터베이스?
간략소개
SQL?
MySQL?
간략소개
다운로드
MySQL 사용
NoSQL?
간략소개
데이터 베이스?
Database?
정의
여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 정보
의 집합이다.
특징
실시간 접근성
지속적인 변화
동시 공유
내용에 대한 참조
DBMS(DataBase Management System)
데이터베이스 관리 시스템
다수의 컴퓨터사용자에게 데이터로 접근, 기록을 가능케 함
데이터 베이스?
Database?
RDBMS(Relational Database Management System)
데이터를 테이블, 혹은 표의 형태로 저장하여 관리
학번
이름
ID
..
..
Record
Or
Tuple
Table
Column
데이터 베이스?
Database
RDBMS(Relational Database Management System)
Table * n 으로 구성되어있다.
Table * n
데이터 베이스?
SQL?
SQL(Structured Query Language)
개체 관계형 데이터베이스 지원
연산 집합을 가짐
RDBMS에서 다음의 기능을 위해 고안된 컴퓨터 언어
자료의 검색과 관리
데이터베이스 스키마 생성과 수정
데이터베이스 객체 접근 조정 관리
MYSQL?
Why MySQL?
Scalability and Flexibility
High Performance
High Availability
Robust Transactional Support
Web and Data Warehouse Strengths
Strong Data Protection
Comprehensive Application Development
Management Ease
Open Source Freedom and 24 x 7 Support
Lowest Total Cost of Ownership
MYSQL?
MySQL Table Type
ISAM
MyISAM
1MYSQL 3.x버전까지의 테이블
테이블 최대용량은 4GB
5.0 버전부터 사라짐
MYSQL 4.x버전의 기본 테이블 타입
ISAM의 확장
용량은 OS에 달림
작은 규모의 DB에 적합(관계가 복잡하지 않은 db)
MERGE
여러 개의 MyISAM 테이블을 하나로 취급하여 MyISAM의 용량
제한을 극복한 타입
MYSQL?
MySQL Table Type
InnoDB ( ara에서 사용 )
트랜잭션, Foreign key, row-level locking 지원
용량 제한이 거의 없음
MyISAM에 비해 용량을 많이 사용함
대규모의 DB에 적합(복잡한 관계의 db)
BDB
트랜잭션, page-level locking 지원
데이터는 옮길 수 없음
HEAP
메모리를 저장공간으로 사용
엑세스 타임이 빨라 임시 테이블이나 검색결과 테이블 등으로
활용
MYSQL?
설치하기 전에
MySQL 설치 이전에 /tmp 폴더 퍼미션 777 로 변경하기
자세한내용은
https://sparcs.org/wheel/wiki/Processes/ICUBEHowTo
MYSQL?
MySQL 설치
#apt-get install mysql-common mysql-server mysqlclient
설치중에 root 비밀번호를 생성
소스를 통해 다운받는 법은 Reno의 mysql 세미나를 참
조합시다.
MYSQL?
MySQL 설치후?
MySQL 기본값으로 서버단, 클라이언트단에서 사용하
는 인코딩을 UTF-8 로 설정해주도록 합니다.
/etc/mysql/my.cnf 파일의 [mysqld] 섹션에 아래의 내
용을 추가합니다.
init_connect='SET collation_connection =
utf8_general_ci; SET NAMES utf8;' character-setserver=utf8 collation-server=utf8_general_ci
자세한 내용은
https://project.sparcs.org/arara/wiki/ARAraEngine/En
vironmentHowto 최하단
MYSQL?
MySQL 실행 및 종료
#/etc/init.d/mysql start|stop|restart
MYSQL?
MySQL 설정
/etc/my.cnf : MySQL 모든 프로그램에 대한 옵션
DATADIR/my.cnf :서버에 관련된 옵션
DATADIR 은 /etc/my.cnf 의 [mysqld]에 있음
$HOME/.my.cnf : 개인 사용자의 옵션
MYSQL?
MySQL 로 서버에 접속하기
$mysql
-u [username] default : connected username
-p(password)
confirm password needed
-h [host address]
default : localhost
-P [port]
default : 3306
-S [socket address]
이후로는 mysql [login] [database]로 표기
MYSQL?
MySQL 로 서버에 접속하기
mysql –u [id] –p –h localhost
MYSQL?
MySQL 사용자 관리하기
User 생성
1.
grant [권한] on [db명].[table] to [ID]@[host] identified by
‘[password]’ with grant option;
flush privileges;
User 삭제
2.
delete from user where user=‘[username]’;
flush privileges;
MYSQL?
MySQL 사용자 관리하기
일단 권한을 다 줘서 만들어보자
된다
MYSQL?
MySQL 사용자 관리하기
이제 삭제
다시 로그인하려든다면 에러메시지를 보게 될것이다.
MYSQL?
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;
MYSQL?
MySQL 사용자 관리하기
사용자관리
사용자 외부 접속 허용하기
보통 외부 접속을 허용하기 위해서는 하나의 유저에 대해 2개이
상의 호스트를 추가하는 것이 좋다.
접속하는 곳에 따라 비밀번호와 권한을 다르게도 설정가능
localhost
%option: 로컬 호스트의 호스트 이름 ex) wseminar4
외부의 접속을 허용하는 주소 (1개보다 많아도 됨)
MYSQL?
MySQL 사용하기
명령어는 항상 ; or \g 로 끝남
\q, ^D, quit, exit 명령어로 접속 종료
command clear는 \c
도움말은 \h
MYSQL?
MySQL 의 자료형
varchar(N) : 가변 길이 문자열
char(N) : 고정 길이 문자열
text : 최대 65536개의 문자 저장, case insensitive
blob : 최대 65536개의 문자 저장, case sensitive
int : 정수형
float : 실수형
date : 날짜 ( yy-mm-dd )
time : 시간 ( hh:mm:ss)
datetime
MYSQL?
SQL 주요 명령어들
create
insert
select
update
delete
show
explain
describe
alter
MYSQL?
SQL 주요 명령어들
show, explain, describe
: DB 와 테이블에 대한 정보를 얻어옴
show databases;
show tables from [database];
show columns from [table];
= explain [table];
= describe [table];
= desc [table];
MYSQL?
역시 된다
MYSQL?
MYSQL?
SQL 주요 명령어들
create
: DB, 테이블, 칼럼 생성
create database [db name];
use [db name]; 이후
create table [table name] ( [column name] type,
… );
MYSQL?
해보자
MYSQL?
MYSQL?
SQL 주요 명령어들
insert
: 테이블에 레코드 추가
use [db name]; 이후
insert into [table name] ( [column1], [column2], …)
values ( [value1], [value2], …) ;
축약형
insert into [table name] values ( [v1], [v2], …) ;
MYSQL?
MYSQL?
MYSQL?
SQL 주요 명령어들
select
: 테이블에서 레코드 검색
use [db name]; 이후
select [column1], [column2], … from [table name]
( where [conditions] );
칼럼을 적는 대신 * 으로 모든 칼럼을 볼 수 있다.
MYSQL?
MYSQL?
SQL 주요 명령어들
update
: 레코드 수정
use [db name]; 이후
update [table name] set [column1]=[data1],
[column2]=[data2],… where [conditions];
MYSQL?
MYSQL?
SQL 주요 명령어들
•
•
•
•
•
가능한
and(&&), or(||), not(!)
=, !=(same as <>), <, > , <=, >=
[a] in ( [b1], [b2], … )
Etc etc
MYSQL?
SQL 주요 명령어들
drop
: DB, 테이블,
drop database [db name] ;
use [db name]; 이후
drop table [table name];
MYSQL?
Bye
MYSQL?
MYSQL?
Mysqladmin
록
Mysql 관리자
mysqladmin [login] create [db_name]
mysqladmin [login] drop [db_name]
mysqladmin [login] ping : mysqld 가 돌아가는지 확
인
mysqladmin [login] status : mysql 상태
mysqladmin [login] extended-status
mysqladmin [login] shutdown
mysqladmin [login] processlist
= mysqladmin [login] process : 실행중인 클라이언트 목
mysqladmin [login] variables : 변수, 값 출력
MYSQL?
MYSQL?
NOSQL!
NoSQL?
Not SQL? Not Only SQL?
기존의 RDBMS와는 다른 DMBS
신뢰성과 확장성에 중점을 둔 빠르고 쉬운 DB
테이블, 로우, 컬럼등이 존재x
컬렉션, 데이터 베이스로 관리한다
CouchDB, MongoDB
얼랭으로 만들어짐
NOSQL!
끗
수고하셨습니다.