Useful MySQL commands à-

Other MySql
최종 업데이트: Apr 22 2010


Korean translation by Seungyoon Lee.


MySQL은 MYSQL AB 사에서 개발한 배우 강력한 오픈소스 데이터베이스 서버입니다. 데이터베이스 서버 시장 에서 가장 잘 나가는 것들 중 하나이죠.
MySQL에 대해 보다 자세한 정보를 알고 싶다면 위키피디아 웹사이트 를 봐 주십시요.

logo mysql 이 글에서는 MySQL 데이터베이스와 그것을 백업하는 방법에 대한 간략한 정보를 제공하려고 합니다.
MySQL을 사용하는 가장 자세한 방법을 알고 싶다면 MySQL 웹사이트 를 찾아가 주세요.

MySQL 에서는 ISAM, MyISAM, HEAP, InnoDB 그리고 Berkeley와 같은 다양한 테이블 엔진을 사용합니다.
기본적으로 새로 만들어진 테이블은 MyISAM 테이블 엔진을 사용하게 됩니다. MyISAM 테이블 엔젠은 /var/lib/mysql/database_name/ 디렉터리에 3개의 파일을 생성합니다. MyISAM 테이블이 엔진에 생성하는 파일은 다음과 같습니다.
table_name.mrd
table_name..myd
table_name..myi
- 구조 (structure)
- 데이터(data)
- 인덱스 (index)


1. 그래픽 인터페이스
2. 기본 명령어들
3. 루트 사용자 비밀번호 복원
4. MySQL 백업


그래픽 인터페이스

Phpmyadmin 은 MySQL을 관리하기 위한 인터페이스 중에서 가장 유명합니다. Phpmyadmin 은 PHP 프로그래밍 언어로 작성되었으며 실행하기 위해서는 아파치 웹 서버를 필요로 합니다.
Phpmyadmin 은 SQL 데이터베이스와 테이블, 그리고 MySQL 서버 그 자체를 다루는데 익숙치 못한 사용자들에게 매우 유용할 것입니다. Phpmyadmin 툴을 설치하시길 강력히 권장해 드립니다. apt-get을 사용할 수 있는 리눅스상에서 다음의 명령어를 통해 Phpmyadmin을 설치하실 수 있습니다.

#apt-get install phpmyadmin


기본 명령어들

기본적으로 루트 사용자를 위해 설정된 비밀번호는 없습니다. MySQL을 설치한 뒤 가장 처음 해야 할 것은 바로 루트 사용자의 비밀번호를 설정해 주는 것입니다.
사용자 비밀번호 변경하기:

#mysqladmin -u root password new_root_password
새로운 데이터베이스를 만들기:

#mysqladmin -u root -p create database_name
SQL 파일을 데이터베이스에 넣기.(SQL 파일에는 하나 이상의 SQL 문이 저장되어 있습니다.)

#mysql -u root -p database_name < file.sql
데이터베이스 접속하여 어떤 사용자(newuser)에게 선택된 데이터베이스(database_name)에 대해 모든 권한을 부여하기:

#mysql -u root -p database_name
>grant all on database_name.* to newuser@localhost identified by 'userpassword';
>flush privileges;
>exit
선택된 데이터베이스(database_name)에 들어있는 모든 테이블의 목록 가져오기. 그리고 어떤 테이블(table_name)의 모든 내용을 보기:

#mysql -u root -p
>use database_name;
>show tables;
>select * from table_name;
MySQL의 모든 사용자의 목록을 보여주기:

#mysql -u root -p
>use mysql;
>select * from user;
MySQL 서버를 재시작하기:

#/etc/init.d/mysql restart
MySQL 설정을 다시 적용하기:

#/etc/init.d/mysql reload


루트 사용자 비밀번호 복원하기

MySQL 정지하기:

#/etc/init.d/mysql stop
비밀번호 없이 MySQL 서버 시작하기:

#mysqld_safe --skip-grant-tables &
MySQL 에 루트 사용자로 로그인하기:

#mysql -u root
>use mysql;
>update user set password=PASSWORD("NEW-ROOT-PASSWORD") where User='root';
>flush privileges;
>quit
MySQL 서버 재시작하기:

#/etc/init.d/mysql restart
새로 설정한 루트 사용자 비밀번호를 테스트 해봅시다:

# mysql -u root -p


MySQL 백업

당신의 모든 데이터베이스를 백업받기:
인수 : -u = 사용자, -p = 비밀번호(-p 키워드와 실제 비밀번호 사이에는 공백이 없어야 합니다.)

#mysqldump -u root -prootpassword --all-databases > mysql_databases_backup.sql
특정한 데이터베이스를 백업받기:

#mysqldump -u root -prootpasssword --databases database_name > mysql_database_backup.sql
mysqldump 명령어에 대한 보다 자세한 설명.

MySQL 백업을 복구하기:

#mysql -u root -proot < sql_backup.sql
강조 : MySQL 백업에서 사용자 계정 정보는 제외됩니다.
사용자 정보는 mysql 데이터베이스의 user 테이블에 별도로 저장되므로 mysql 데이터베이스를 따로 백업받는 것은 괜찮은 생각입니다.


아래는 주기적으로 MySQL 데이터베이스를 백업하기 위한 예제입니다.

우선 백업을 하기 위해 적절히 제한된 권한을 가진 사용자를 생성합니다.

#mysql -u root -p
>GRANT SELECT , SHOW DATABASES , LOCK TABLES ON * . * TO backupuser@localhost IDENTIFIED BY 'password' ;
그리고 mysqlbackup.sh 이라는 쉘 스크립트를 생성합니다. 아래의 예제에서 /home/sam 디렉터리의 sam은 당신이 선택한 사용자입니다.

#vi /home/sam/mysqlbackup.sh
date=`date -I`; mysqldump --all-databases -u backupuser --password="password" > databasebackup-$date.sql
백업을 실행한 날짜가 파일명 뒤에 추가될 것입니다. 예를 들어 2007년 1월 4알이라면 파일명은 databasebackup-2007-01-04.sql이 될 것 입니다.

#chown sam /home/sam/mysqlbackup.sh
#chmod 700 /home/sam/mysqlbackup.sh
백업 파일에 적당한 권한을 설정합시다. 파일 소유자는 모든 권한을 갖도록 합니다.(읽기, 쓰기, 실행)

세 번째로 리눅스 사용자의 crontab 파일에 아래의 줄을 추가합니다.

#crontab -e -u sam
30 00 * * * /home/sam/mysqlbackup.sh
mysqlbackup 쉘 파일은 매일 0시 30분에 실행되며 MySQL의 데이터베이스들을 백업할 것입니다.