MySQL 기본

By | 2009년 3월 26일

MySQL Server의 설치가 완료됐으면 이제 MySQL 사용법을 익혀보기 위해 Windows “명령 프롬프트”를 실행하자. “명령 프롬프트”는 XP의 경우 “시작 -> 모든프로그램 -> 보조프로그램 -> 명렬 프롬프트”를 통해 실행하거나 또는 “시작 -> 실행” 창에서 “cmd”를 입력하면 실행할 수 있다.

우리가 설치한 MySQL Server는 OS(Windows 또는 UNIX)가 부팅될 때 자동으로 시작되는 범용 DBMS이며, 서버와 클라이언트 구조로 나뉜다. 서버는 데이터를 터리하는 핵심이 되는 프로그램으로 명령 또는 쿼리를 받으면 그에 합당하게 데이터를 조작하는 역할을 한다. 서버는 사용자가 직접 조작할 수 없으며, 클라이언트 프로그램을 통해 서버에 명령을 전달하고 서버로부터 처리된 결과 역시 클라이언트를 통해 전달 받는다. 그러므로 서버를 설치할 때 문자 기반의 “mysql”이란 클라이언트 프로그램을 함께 설치한다. “mysql”을 이용 서버에 접속하는 방법은 여러가지가 있으나 일반적으로 다음과 같은 방법을 사용한다.


mysql   -u  사용자ID  -p


“-u” 옵션 뒤에는 데이터베이스 사용자 ID를 준다. 그리고 해당 사용자 ID로 데이터베이스 서버에 접속할 때 비밀번호가 필요하면 “-p” 옵션을 줘야 한다.

그러면 데이터베이스 서버에 관리자로 접속하기 위해 다음 명령을 입력해 보자.


mysql  -u  root  -p

위에서 사용자 ID로 주어진 “root”는 MySQL 에서 관리자 아이디를 의미한다. 그리고 “-p”옵션이 있으므로 비밀번호를 필요로한다. 비밀번호는 MySQL Server 설치시 설정한 관리자 비밀번호를 입력하면 된다. 접속에 성공하였다면 다음 그림과 같은 화면이 출력된다.

사용자 삽입 이미지
위 화면에서 메세지와 함께 프롬프트 “mysql>”이 출력되는데 이 것은 클라이언트가 새로운 명령을 기다리고 있음을 의미한다. 그러면 다음 명령을 입력해 보자.


show databases;

사용자 삽입 이미지
이 명령은 현재 서버가 관리하고 있는 데이터베이스의 목록을 나열해 준다. 출력 결과는 현재 서버가 총 세 개의 데이터베이스 “information_schema”, “mysql”, “test”를 관리하고 있음을 보여준다. 여기서 “mysql”이란 이름의 데이터베이스는 사용자, 접근권한 등과 같이 서버에 의해 특별하게 관리되는 정보를 위한 데이터베이스다.

현 시점에서는 세 개의 데이터베이스 중 어느 것도 사용할 수 없는 상태다. 그러므로 데이터베이스 중 사용하고자 하는 하나의 데이터베이스를 선택해야 한다. 데이터베이스 선택을 위한 명령은 다음과 같다.


use   데이터베이스이름 ;


그러면 다음 명령을 이용 서버과 특별하게 관리하는 데이터베이스인 “mysql”를 선택해 보자.


use  mysql ;

사용자 삽입 이미지
“Database changed”란 메세지가 출력되면 “use mysql;” 명령이 올바르게 처리된 것이다. 각 데이터베이스는 여러개의 테이블을 관리한다. 따라서 임의의 데이터베이스가 관리하는 테이블을 확인하려면 다음 명령으로 확인할 수 있다.


show tables ;

사용자 삽입 이미지
이 명령은 현재 사용 중인 데이터베이스가 관리하는 테이블 목록을 출력한다. 그러므로 “show tables;” 명령의 결과 화면은 “use mysql;”명령에 의해 현재 사용 중인 데이터베이스 “mysql”이 관리하는 테이블의 목록으로 “columns_priv” 부터 “user”까지 총 17 개의 테이블들을 관리하고 있음을 알 수 있다.

데이터베이스 테이블은 필드와 레코드들로 구성되어 있다. 따서서 테이블 필드의 구조를 확인하기 위한 명령은 다음과 같다.


desc 테이블명 ;


만약 “mysql”이 관리하고 있는 테이블 중 “host” 테이블의 필드 구조를 확인하고 싶으면 다음 명령을 입력한다.


desc  host ;

사용자 삽입 이미지
위 화면은 “host” 테이블의 구조를 보여주고 있다. 이 결과를 통해 “host” 테이블은 19 개의 필드로 구성되어 있음을 확인할 수 있으며, 각 필의의 타입과 속성 등도 함께 확인할 수 있다. 예를 들면 “Host” 필드의 경우 타입은 char(60)이고, null 값을 허용하지 않으며, 주키(Primary Key)로 설정돼 있다. 또 하나의 필드 “Index_priv”의 경우 타입 emun(‘N’,’Y’)에 의해 가질 수 있는 값은 문자 ‘N’ 또는 ‘Y’이며, null 값을 가질 수 없고, null 값이 주어지면 기본값 ‘N’을 갖게된다.

데이터베이스 “mysql”이 관리하는 테이블 중 “user”는 데이터베이스 사용자 정보를 저장 관리하는 테이블이다. 이 테이블은 사용자아이디와 비밀번호 및 MySQL Server가 관리하는 모든 데이터베이스에 대한 사용자의 접근권한 등의 정보를 가지고 있다. 이 테이블의 내용을 보기 위해서는 SQL 중 검색을 위한 “SELECT” 문을 이용해 확인할 수 있다. 다음 명령을 입력해 보자.


SELECT host, user from user ;

사용자 삽입 이미지
위 명령은 테이블 “user”에 저장된 사용자 정보 중 “host”, “user” 필드의 내용을 보여주고 있다. 설치 옵션에 따라 다르겠지만 위 결과를 살펴보면 “user” 테이블은 세 개의 레코드를 가짐을 알 수 있다. 그리고 “user” 필드는 데이터베이스 사용자 아이디를 저장하는 필드로 “root”는 데이터베이스 관리자를 의미한다. “host” 필드는 데이터베이스서버로 접속할 수 있는 컴퓨터를 지정하는데, 이 값이 “%”이면 인터넷상의 모든 컴퓨터를 의미하며, “localhost”는 데이터베이스 서버 자신을 의미한다. 그러므로 “root” 즉 관리자는 데이터베이스 서버에 접속할 때 데이터베이스 서버가 실행 중인 컴퓨터에서만 접속이 가능하고 인터넷 상의 다른 컴퓨터에서는 접속이 불가능 하다. 이 외에도 기타 권한은 “user” 테이블의 다른 필드값에 의해 결정된다.

또 다른 테이블 “db”의 내용을 확인하기 위해 다음 SQL 문을 실행하자.


SELECT host, user, db from db ;

사용자 삽입 이미지
“db” 테이블은 특정 사용자와 특정 데이터베이스 사이의 접근권한 등의 관계 정보를 저장하는 테이블이다. 위 결과를 살펴보면 익명의 사용자와 “test”란 이름의 데이터베이스 또는 “test_”로 시작되는 모든 데이터베이스 사이의 관계된 정의를 하고 있다. 둘 사이의 정확한 관계는 “db” 테이블의 다른 필드에 정의되어 있지만 여기서는 생략하도록 한다.

자 그러면 실습을 위해 새로운 데이터베이스 “jsp”를 만들어보자. 새로운 데이터베이스를 만들기 위한 SQL 문은


CREATE DATABASE  database-name ;

이므로 database-name 부분을 jsp로 바꾸면 데이터베이스 “jsp”를 만들 수 있다.


CREATE  DATABASE  jsp ;

사용자 삽입 이미지
“Query OK, 1 row affected (0.00 sec)” 메세지가 나오면 데이터베이스 “jsp”가 만들어진 것이다. 확인을 위해 앞에서 배웠던 “show databases ;”를 입력해 보자.

사용자 삽입 이미지
결과를 확인해 보면 데이터베이스 “jsp”가 추가되었음을 알 수 있다. 실습을 위한 데이터베이스 “jsp”를 추가했으면 다음 쿼리를 이용하여 실습을 위한 새로운 사용자를 추가해 보자. 여기서 기울임체로 된 your_password 부분은 자신이 원하는 비밀번호로 대치한다.


GRANT SELECT, UPDATE, INSERT, DELETE, CREATE, DROP, ALTER
ON jsp.* TO ‘jsp’@’localhost’
IDENTIFIED BY ‘your_password‘ ;

사용자 삽입 이미지
위 쿼리는 “localhost”에서 접근 가능한 데이터베이스 사용자 “jsp”를 등록하였다. 이 사용자 “jsp”는 데이터베이스 서버에 접속할 때 “your_password“를 사용해 접속해야 하며, 접속 후 데이터베이스 “jsp”에 대한 접근권한과 연관된 관계를 정의하고 있다. 이 쿼리에서 데이터베이스 사용자 “jsp”는 데이터베이스 “jsp”에 대해 “SELECT”, “UPDATE”, “INSERT”, “DELETE”, “CREATE”, “DROP”, “ALTER” 등의 쿼리를 실행할 수 있도록 권한이 설정되었다.

그러면 올바르게 데이터베이스 사용자가 추가 되었는지 “user” 테이블을 살펴보자.


SELECT host, user FROM user ;

사용자 삽입 이미지
결과를 살펴보면 “LOCALHOST”에서 접속 가능한 사용자 “jsp”가 등록되었음을 확인할 수 있다. 또한 사용자와 데이터베이스와의 관계를 정의하고 있는 “db” 테이블을 살펴보자.


SELECT host, user, db FROM db ;

사용자 삽입 이미지
결과를 살펴보면 데이터베이스 사용자 “jsp”가 “localhost”에서 접속했을 때 데이터베이스 “jsp”에 대한 관계를 정의하고 있다. 결과에서는 관계를 알 수 없지만 이 관계는 “db” 테이블의 다른 필드에 정의되어 있으므로


SELECT * FROM db ;


쿼리를 통해 확인할 수 있다. 관계를 확인했으면


exit ;


명령을 통해 MySQL Client 프로그램을 종료하자.

사용자 삽입 이미지
이제 새롭게 등록한 사용자로 “명령 프롬프트” 상에서 다음 명령을 이용 재 접속을 시도해 보자.


mysql  -u  jsp  -p

이 때 비밀번호는 “GRANT”를 이용 사용자 “jsp”를 등록할 때 주어진 비밀번호를 입력한다.

사용자 삽입 이미지
접속에 성공하면 다음 명령을 순서대로 입력하여 그 결과를 확인해 보자.


show  databases ;
use  jsp
show tables ;

사용자 삽입 이미지
MySQL과 관련된 더 자세한 내용을 공부하고 싶다면 다른 참고서적을 찾아보도록 하자.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.