MySQL grandmarnier
Database DBMS 정보의 집합 주로 여러 사람들이 공유하고 사용할 때 유용함 파일 시스템의 단점을 극복하기 위해 만들어짐 DBMS 데이터베이스 관리 시스템 데이터베이스 내의 데이터를 관리 다수의 컴퓨터 사용자들이 데이터베이스 안에 데이터를 기록하거나 접근할 수 있게 함
RDBMS 데이터를 테이블, 혹은 표의 형태로 저장하여 관리 Record Tuple Column Table 학번 이름 Id 비밀번호 특징 2011 최낙현 bbashong * 정종혁 sunguard 뿌잉뿌잉 2010 김재겸 noname 시바 정창제 rodumani 막내 유민정 alphamin 미스평창 심규민 boolgom Record or Tuple Column
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 라고 자기네들이 홍보합니다. 24/7 is an abbreviation which stands for "24 hours a day, 7 days a week", usually referring to a business or service available at all times without interruption. In the UK it may be known as round-the-clock service,
MySQL table type ISAM MYSQL 3.x버전까지의 테이블 테이블 최대용량은 4GB 5.0 버전부터 사라짐 MyISAM MYSQL 4.x버전의 기본 테이블 타입 ISAM의 확장 용량은 OS에 달림 작은 규모의 DB에 적합 MERGE 여러 개의 MyISAM 테이블을 하나로 취급하여 MyISAM의 용량 제한을 극복한 타입 24/7 is an abbreviation which stands for "24 hours a day, 7 days a week", usually referring to a business or service available at all times without interruption. In the UK it may be known as round-the-clock service,
MySQL table type InnoDB ( ara에서 사용 ) 트랜잭션, Foreign key, row-level locking 지원 용량 제한이 거의 없음 MyISAM에 비해 용량을 많이 사용함 대규모의 DB에 적합 BDB 트랜잭션, page-level locking 지원 데이터는 옮길 수 없음 HEAP 메모리를 저장공간으로 사용 엑세스 타임이 빨라 임시 테이블이나 검색결과 테이블 등으로 활용 locking 이란 어느 사용자가 데이터를 사용하기 위해 다른 사용자가 사용할 수 없도록 하는것 더 작은 규모의 locking을 할 수록 많은 쿼리를 처리하기에 효과적이다. foreign key 는 다른 테이블의 primary key를 참조하는 키이다. 트랜잭션은 여러 단계의 일들이 하나의 작업을 완성하는 것을 가리킨다. 여러 단계의 일 중 하나라도 실패하면 rollback 이라 하여 작업을 시작하기 전으로 되돌리고 성공하면 commit이라 하여 변경사항을 적용한다.
SQL Structured Query Language RDBMS에서 다음의 기능을 위해 고안된 컴퓨터 언어 자료의 검색과 관리 데이터베이스 스키마 생성과 수정 데이터베이스 객체 접근 조정 관리 명령어는 여러 줄에 나눠 쓰는 것도 가능하다 대소문자를 구분하지 않는다 명령어는 ; 으로 종료한다
Practice Session MySQL 설치 #apt-get install mysql-common mysql-server mysql-client 소스를 이용해 직접 설치하는 법은 reno의 mysql 세미나 참고 설치 중에 root 의 비밀번호를 생성 설치가 끝나면 mysql 데몬(mysqld)이 바로 실행됨 mysql-common : 모든 버전의 client library에 쓰이는 필수 파일들
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 -p 뒤에 공백없이 패스워드를 쳐도 접속은 가능합니다만 보안상 추천하지 않습니다
Practice Session MySQL 사용자 관리 사용자 추가하기 use mysql; GRANT grant all privileges on *.* to ‘[name]’@'[host]’ identified by ‘[password]’ with grant option; 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) 사용자 자기 아이디로 만들기, 권한은 일단 다 줍시다. flush privileges; 는 권한의 변경사항을 바로 적용시키는 구문 ( 새로고침 ) 정확히 쓰면 이러이러한 유저에게 각각의 기능을 실행할 권한을 이렇게 준다는 뜻입니다. INSERT INTO user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject, max_questions, max_updates, max_connections, max_user_connections) VALUES('localhost', 'newuser', PASSWORD('1234'), '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);
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) : 가변 길이 문자열 text : 최대 65536개의 문자 저장, case insensitive blob : 최대 65536개의 문자 저장, case sensitive int : 정수형 float : 실수형 date : 날짜 ( yy-mm-dd ) time : 시간 ( hh:mm:ss) datetime varchar 는 저장 시 낭비가 적지만 검색 속도가 느림 text, blob 역시 가변 길이, 만약 가변길이를 가지는 칼럼이 하나라도 있으면 char 가 varchar 로 바뀔 수 있음
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 create database [db name]; use [db name]; 이후 create table [table name] ( [column name] type, … ); do) 자신의 데이터베이스, 테이블 만들기 테이블 내용은 가계부로. 내역 – 수입 – 날짜 정도? testtable의 account를 참조하면 좋습니다.
Practice Session SQL 주요 명령어들 drop drop database [db name] ; use [db name]; 이후 drop table [table name]; do) 잘못 만들었으면 일단 이걸로 지우고 다시 만드세요. 수정하는 명령어는 나중에 나옵니다.
Practice Session SQL 주요 명령어들 insert use [db name]; 이후 : 테이블에 레코드 추가 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]; 이후 : 테이블에서 레코드 검색 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]; 이후 : 레코드 수정 use [db name]; 이후 update [table name] set [column1]=[data1], [column2]=[data2],… where [conditions]; where [conditions] 를 안 주면 칼럼의 모든 데이터가 바뀝니다!
Practice Session SQL 주요 명령어들 delete use [db name]; 이후 : 레코드 삭제 use [db name]; 이후 delete from [table name] where [conditions]; where [conditions] 를 안 주면 레코드가 모두 삭제됩니다 주의!
Practice Session 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 : 변수, 값 출력
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) 자기 데이터베이스 백업하세요 좀 있다 다 지웁니다. --add-drop-table 옵션은 이미 같은 이름의 데이터베이스가 있을경우 덮어쓰는 옵션입니다. -B 옵션으로 백업하는 경우에도 필요하면 넣을 수 있습니다.
Practice Session mysqldump 데이터 복구 시 mysql [login] < [bak] 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