MySQL Installation Guide November 24, 2004 sunnykwak@hanmail.net sunnykwak@egloos.com
Copyrights 2004 Sunny Kwak. All rights reserved. Other disclaimers The names of actual companies and products mentioned herein may be the trademarks of their respective owners. Version History Version 0.1 (draft) November 24, 2004 First created.( version 0.1 ) 2 / 10
Table of Contents 1. INTRODUCTION...4 1.1 설치전점검사항... 4 2. MYSQL...4 2.1 개요... 4 2.2 다운로드및버전정보... 4 2.3 요구사항... 4 3. 설치...5 3.1 WIN32기반설치... 5 3.1.1 Win32에서실행및접속...5 3.2 LINUX기반설치... 5 3.2.1 설치시작...5 3.2.2 Linux에서실행및 MySQL Server 설정...6 3.3 새로운데이타베이스생성과사용자연결... 7 3.3.1 데이터베이스 root 비번설정...7 3.3.2 데이터베이스의생성...8 3.3.3 데이터베이스와 mysql 관리테이블과의연결및사용자등록및특권정의...8 4. MYSQL BACKUP AND RESTORE...9 4.1 BACKUP... 9 4.2 RESTORE... 9 5. 한글문제...9 5.1 WIN32 MYSQL SERVER 한글문제해결 (MY.INI)... 9 6. MYSQL SERVER UNINSTALL...10 6.1 MYSQL SERVER UNINSTALL...10 3 / 10
1. Introduction 이문서는 MySQL Installation Guide 입니다. 1.1 설치전점검사항 사용가능한 OS 는 Window NT 기반, Unix, Linux 등이다. 2. MySQL MySQL 서버에접속하여편리하고다양하게서버를관리할수있으며, 다양한질의방법으로시간과노력을절약할수있는공개데이터베이스이다. MySQL 클라이언트를설치하지않아도간단하게 TCP/IP로접속할수있고, 여러 MySQL 서버에동시에접속 ( 멀티세션 ) 할수있으므로여러대의서버를관리할수있다. 2.1 개요 3.x 와비교해기존의기능들의성능향상, 새로운기능추가, 미래지향적인 Mysql 아키텍쳐의변경을중심으로개발된것이기때문에 Mysql 4.x 를사용하길권한다. 지금의 Mysql 4.x는다른상용데이터베이스에서지원하는기능을아직모두는지원하고있지는않는실정이지만다른대부분의상용데이터베이스에서지원하는기능을가지고있다. 2.2 다운로드및버전정보 MySQL 공식홈페이지는 www.mysql.com이며, http://dev.mysql.com/downloads/mysql/4.1.html 에서최신버전을다운로드받을수있다 2004년 12월최신버전은 4.1.7 이다. 최신버전은항상릴리즈된다는것을알아야한다. 그렇다고항상최신버전을사용한다는것은아니다. 버전이릴리즈될때마다그사용법, 환경설정이틀려진다. 항상이런점을상기하여가장알맞은버전을선택한후사용하기를바란다. 2.3 요구사항 Win32 TCP/IP protocol 사용 / named pipe사용접속 32-bit 윈도우시스템 ( NT 기반포함 ) 200MByte 여유공간필요테이블크기가 4GB 이상일때는 NTFS 또는그이상의 FS(filesystem) 을사용 Linux 압축툴 : GNU gunzip 컴파일러 : ANSI C++ compiler. gcc 2.8.1 이상, egcs 1.0.2 이상 Make 툴 : GNU make 3.75 이상 4 / 10
3. 설치 3.1 Win32 기반설치 처음다운로드받으면 (mysql-4.1.7-gamma-win.zip).zip파일편한디렉토리에압축을풀고 Setup.Exe를실행그리고 MySQL Server Instance Configuration Wizsrd설명에따라설치 3.1.1 Win32에서실행및접속실행 1. 시작 실행 cmd & command 에서 net start mysql A. 프로그램 install시자동으로서비스에등록됨 (Base on NT) 2. 시작 프로그램 mysql 프로그램시작사용 A. Mysqld.exe실행 접속 C:\Documents and Settings>mysql -u root p password database_name 3.2 Linux 기반설치 3.2.1 설치시작 모든설치는 root 계정으로한다. 그리고 RPM이나바이러니설치보다소스설치가 mysql성능향상에도움이된다. 소스풀기 (root 권한으로실행 ) 1. http://dev.mysql.com/downloads/mysql/4.1.html 에서최신버전소스를다운로드한다. 2. 보안을위해서 mysql 그룹과사용자를만든다. Shell> groupadd mysql Shell> useradd g mysql ktech 3. root 권한으로압축을푼다. GNU tar을사용한다면 Shell> tar zxvf mysql-4.1.7.xx.tar.gz tar을사용한다면 shell> gunzip < mysql-4.1.7.xx.tar.gz tar xvf- RPM 소스를가져와사용한다면 shell> rpm Uvh mysql-4.1.7.xx.src.rpm 환경설정 (root 권한으로실행 ) 1. configure 실행하기예 5 / 10
shell>./configure prefix=/usr/local/mysql with-innodbr shell>./configure with-charset=eunkr [ euc_kr에서 eunkr로변경됬음 ] shell>./configure help [ 자세한환경설정을위함 ] shell>./configure without-server [ Client로만사용 ] shell>./configure prefix=/usr/local \ -- localstatedir=/usr/local/mysql/data 기본설치디렉토리를 /usr/local 로데이터베이스디렉토리를 /usr/local/mysql/data 로사용 2. 기본적인 configure 실행 shell>./configure prefix=/usr/local/mysql with-innodbr 컴파일 (root 권한으로실행 ) 1. shell> make 인스톨 (root 권한으로실행 ) 1. shell> make install 3.2.2 Linux 에서실행및 MySQL Server 설정 실행파일 mysql mysql client 프로그램 mysqladmin Mysql 관리자프로그램으로데이터베이스추가삭제할수있고데이터베이스의변동 사항을다시읽어들일수있다 mysqld Mysql 데몬으로이데몬이실행중일때에만 Mysql 에접속할수있다 mysqlshow Mysql 안에존재하는데이터베이스, 테이블그리고칼럼들을보여주는프로그램이다 safe_mysqld mysqld 를좀더안전하게실행시키는스크립트파일이다 mysql demon 실행 shell> mysqld shell> safe_mysqld mysql port 변경 MySQL 은 3306 번포트를사용하며. 포트를변경할시다음과같이하면된다 Shell> mysqld -P 3333 MySQL Server 설정 Mysql 을설정하는곳은크게 2 군데가있는데데이터베이스의접근에대한설정과 Mysql 서버의설 정이그것이다. Mysql 서버설정파일은 /etc/my.cnf 이며아래의파일들중에현재의자신의컴퓨터의 환경에맞는하나의파일의이름을바꾸어서사용한다 1. my-huge.cnf : Mysql 서비스가주된서비스인가용메로리사이즈가 1 GB 큰서버를사용할경우 2. my-large.cnf : Mysql 서비스가주된서비스인가용메모리사이즈가 512 MB 의크기를가지는 6 / 10
서버를사용할경우 3. my-medium.cnf : 다른서비스들과공유하는메모리크기가 128 MB 의크기를가지는서버를사용할경우 ( 대부분이이에해당 ) 4. my-small.cnf : 다른서비스들과공유하는메모리크기가 64 MB 의크기를가지는서버를사용할경우 5..cnf 설정 A. key_buffer 얼마나많은메모리를인덱스데이터가캐싱하는데사용하게할지를결정하는것으로이 값을증가하면상당한속도향상을가져올수있지만너무많이올리면거꾸로역효과가 날수있다. B. table_cache Mysql 이동시에열어서가질수있는테이블의수를결정한다 C. sort_buffer 쿼리결과값의정렬할경우에사용되는버퍼의크기를결정하는것로쿼리문에 ORDER BY 나 GROUP BY 을자주사용할계획이라면이값을늘리는것이속도향상에도움이된다. D. myisam_sort_buffer_size 인덱스테이블을생성하거나 REPAIR TABLE 문실행될경우에사용되어지는버퍼의크기 을결정한다 MySQL 실행 1. 소유권부여 shell> chown R root /mysql shell> chown R ktech /usr/local/mysql/var shell> chown R ktech /usr/local/mysql 2. my.cnf 파일생성 shelcll> cp support-files/my-medium.cnf /etc/my.cnf 3. mysql 구동 shell> /mysql/bin/mysqld_safe user=ktech & 4. mysql 종료 shell> /mysql/bin/mysqladmin shutdown 3.3 새로운데이타베이스생성과사용자연결 3.3.1 데이터베이스 root 비번설정 Mysql이설치되고나서는 root의비밀번호가없다. 잘못하면다른사용자가쉽게 root권한으로데이터베이스를접근할경우가생길수있다. 이것은보안상좋지않은결과를낳는다. 그렇기때문에설치후바로 root의비밀번호설정을한다. Shell> mysql u root p Enter password: ******* Welcome to the MySQL monitor. Commands end with ; or \g. 7 / 10
Your MySQL connection id is 8 to server version: 4.1.6-gamma-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> use mysql Database changed mysql> update user set password=password('xxx') where user='root'; mysql> flush privileges; mysql메모리를초기화하고다시읽어들인다. 3.3.2 데이터베이스의생성 데이터베이스생성의방법은두가지가있다. mysqladmin 프로그램을이용하여 root 아이디로 shell 상 에서생성하는방법과또하나 mysql 프로그램상에서생성하는방법이다 mysqladmin create groupware mysql> create database groupware --> 이경우 groupware 라는데이타베이스생성 3.3.3 데이터베이스와 mysql 관리테이블과의연결, 사용자등록및특권정의 먼저이 groupware 데이타베이스는모든호스트상에서접근이가능하도록만들기로한다. 그리고 사용자는 id 로 ktech 라는 DB user 를생성한다고하자..sql 문은다음과같다 shell>mysql -u root -p mysql Enter password: ******* Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 9 to server version: 4.1.6-gamma Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> mysql> insert into db -> (host,db,user,select_priv,insert_priv,update_priv,delete_priv, -> create_priv,drop_priv) -> values ('%','groupware','ktech','y','y','y','y','y','y') -> ; Query OK, 1 row affected (0.00 sec) mysql> ktech 라는 db 사용자에대한등록 mysql> insert into user -> (host,user,password) -> values ('localhost','ktech',password('password')) -> ; Query OK, 1 row affected (0.00 sec) 테이블에서사용자정보를다시읽어서 MySQL 을다시실행시켜준다. myaqladmin -u root -p reload mysql>flush privileges; 8 / 10
여기까지됐으면.. ktech 라는유저가 ubiplus 라는 DB 에접속하여모든컨트롤을할수있게된다. 그러나 Mysql의특성중하나가해당 DB서버에접속하기위해해당유저들 ( 유저들의 server IP) 을일일이등록을해주어야한다. 즉원격에서 mysql서버에접속하고싶은사용자는모두 user테이블과 db테이블에등록을해야하는것이다. 등록시유의사항은 host를 insert하는부분에해당사용자의서버 ip를넣어주어야한다는것. 4. MySQL Backup And Restore 데이터베이스관리자와개발자들은정기적인데이터백업의중요성을잘알것이다. 만약디스크나서버가고장날경우백업을미리해뒀는지여부는 1년치업무결과를잃어버리느냐아니면몇시간만에정상으로복귀하느냐를결정한다. 4.1 Backup MySQL 데이터베이스백업의기본은데이터베이스파일자체를복사하는것이다. MySQL은이기종플랫폼에서도동일한테이블포맷을사용하므로 MySQL 테이블과인덱스파일을플랫폼을넘나들며쉽게복사할수있다. ( 물론양쪽플랫폼에동일한 MySQL 버전이설치돼있어야한다 ). 테이블을텍스트파일로저장하기 mysqldump h DB서버명 u 유저명 p 패스워드 [ 백업할테이터베이스명 ] > [ 외부로저장할파일명 ] ex) mysqldump -hdb1.guideline.co.kr -udbuser -ppassword MyDB > MyDB.sql 4.2 Restore mysqldump 명령의결과물은일련의 SQL 명령어로구성돼있기때문에, MySQL 클라이언트가간단하게기존데이터베이스구조와컨텐트를재구축할수있다. 텍스트백업파일로 MySQL 테이블복구하기 mysql -hdb 서버명 -u 유저명 -p 패스워드 [ 복구할테이터베이스명 ] < [ 외부로저장된파일명 ] ex) mysql -hdb1.guideline.co.kr -udbuser -ppassword MyDB < MyDB.sql 5. 한글문제 5.1 Win32 mysql Server 한글문제해결 (my.ini) [client] port=3306 default-character-set=euckr default-collation=euckr_korean_ci # SERVER SECTION # ---------------------------------------------------------------------- # # The following options will be read by the MySQL Server. Make sure that 9 / 10
# you have installed the server correctly (see above) so it reads this # file. # [mysqld] # 에러메시지를한글로출력 language=c:/mysql/share/korean # The TCP/IP Port the MySQL Server will listen on port=3306 #Path to installation directory. All paths are usually resolved relative to this. basedir=c:/deco/mysql/ #Path to the database root datadir=c:/deco/mysql/data/ # The default character set that will be used when a new schema or table is # created and no character set is defined default-character-set=euckr default-collation=euckr_korean_ci 6. MySQL Server Uninstall 6.1 MySQL Server Uninstall shell> mysqladmin shutdown shell> make uninstall shell> make clean shell> rm -rf /mysql_server shell>./configure --prefix=/usr/local/etc/mysql -- sysconfdir=/usr/local/etc/mysql --exec-prefix=/usr/local/etc/mysql --withunix-socket-path=/usr/local/etc/mysql/tmp/mysql.sock --with-mysqlduser=mysql --with-innodb 10 / 10