1. MySQL 시작하기
MySQL 구동 하기.
$ /etc/init.d/mysql start
MySQL 접속하기
$ mysql -uroot -p1234567890
-u 다음에는 접속하고자 하는 ID, -p 다음에는 접속하고자 하는 계정의 패스워드를 입력한다.
MySQL에서 데이터 베이스 생성하기
mysql> create database test;
생성한 데이터 베이스 확인하기
mysql> show databases;
MySQL에서 데이터 베이스 선택하기
mysql> use test;
use 다음에 사용하고자 하는 데이터 베이스를 입력한다.
선택한 데이터베이스에서 테이블 만들기
mysql> CREATE TABLE student (
-> name varchar(10),
-> korean int,
-> math int,
-> english int
-> );student 라는 이름의 테이블을 생성하는 쿼리이다. 테이블 생성 후, Data Directory 를 확인하면, 데이터 베이스 디렉토리 속에 student라는 이름을 가진 파일들이 생성된 것을 확인할 수 있다.
root@jonathan-laptop:/var/lib/mysql/test# pwd
/var/lib/mysql/test
root@jonathan-laptop:/var/lib/mysql/test# ls -slh|grep student
rw-rw—- 1 mysql mysql 0 2011-06-30 10:59 student.MYD
rw-rw—- 1 mysql mysql 1.0K 2011-06-30 10:59 student.MYI
rw-rw—- 1 mysql mysql 8.5K 2011-06-30 10:59 student.frm
생성한 테이블 확인하기
mysql> show tables;
+—————-+
| Tables_in_test |
+—————-+
| address |
| student |
| test |
+—————-+
테이블 정보 확인하기
mysql> explain student;
+———+————-+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+———+————-+——+—–+———+——-+
| name | varchar(10) | YES | | NULL | |
| korean | int(11) | YES | | NULL | |
| math | int(11) | YES | | NULL | |
| english | int(11) | YES | | NULL | |
+———+————-+——+—–+———+——-+
4 rows in set (0.00 sec)
2. 사용자 설정
2-1. 사용자 암호 바꾸기
MySQL에서 사용자의 암호를 변경하는 방법은 세가지가 있다.
– UPDATE 문을 이용
– SET PASSWORD 이용
– mysqladmin 이용
2-1-1 UPDATE 문 이용하기
jonathan@jonathan-laptop:/var/lib$ mysql -uroot -p mysql
mysql> update user set password=password(‘1234’) where user = ‘root’;
Query OK, 3 rows affected (0.09 sec)
Rows matched: 3 Changed: 3 Warnings: 0mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)
-p 다음에 mysql은 mysql이란 데이터 베이스를 사용하라는 것을 의미한다. mysql 프롬프트에서 use db_name을 이용하여 사용하고자 하는 데이터베이스를 변경할 수도 있다. UPDATE 문을 이용하여 암호를 변경할 경우에는 꼭 flush privileges; 를 실행해야 한다.
이유는 MySQL은 속도를 조금이나마 빠르게 하기 위해 mysql 데이터베이스에 있는 사용자 권한에 관련딘 내용을 처음 MySQL 시작시에 메모리로 읽어 들이는데(메모리가 하드 디스크에 비해서 속도가 빠르므로 이렇게 해서 사용자 인증 부분에 속도를 향상시킬 수 있는 것이다), UPDATE문을 사용하여 암호가 바뀌었을 때는 flush privileges; 를 이용하여 사용자 관련 테이블에 변경된 내용이 있으니 다시 읽으라고 서버에 알려야 한다.
2-1-2 SET PASSWORD 이용하기
mysql> SET PASSWORD for root=password(‘1234’);
이 방법은 flush privileges; 를 할 필요가 없음. 그러나 MySQL 5.1 버전에서는 제대로 되지 않는것을 확인했음.
2-1-3 mysqladmin 이용하기
$ mysqladmin -u root password new-password
2-2 새로운 사용자 등록하기
MySQL에서 새로운 사용자를 추가하는 방법은 GRANT를 이용하는 방법과 직접 mysql의 user 테이블에 INSERT 하는 방법 두가지가 있다.
2-2-1 GRANT문 이용
mysql> grant all privileges on *.* to pchero@localhost identified by ‘1234’ with grant option;
Query OK, 0 rows affected (0.04 sec)
localhost의 pchero에게 (to pchero@localhost) 1234라는 암호로(identified by ‘1234’) MySQL의 모든 데이터베이스에 있는 모든 테이블에(on *.*) 모든 권한 (all privileges)을 부여하는 것을 의미한다.
위의 쿼리문은 모든 데이터베이스를 사용할 수 있도록 하는 쿼리인데, 이를 특정 데이터베이스에 한정하기 위해서는 다음의 쿼리문을 사용하도록 한다.
mysql> grant all privileges on test.* to pchero@localhost identified by ‘1234’;
위의 쿼리문은 localhost의 pchero에게 test 데이터베이스의 모든 테이블에 모든 권한을 부여하는 것을 나타낸다. 특정 데이터베이스에 특정 권한만을 부여하기 위해서는 다음의 쿼리문을 수행한다.
mysql> grant select, insert on test.* to pchero@localhost identified by ‘1234’;
이 외에도 특정 테이블이나 특정 컬럼에만 권한을 주는 방법도 있다.
2-2-2 INSERT문 이용하기
insert into user values(‘localhost’, ‘pchero’, password(‘1234’), ‘N’, ‘N’, ‘N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’,’N’);