- /etc/rc.d/rc.local 파일에 등록
-
rpm으로 설치한 경우 자동 등록
3.2 권한 설정
- MySQL을 처음 설치하면 root 만이 MYSQL 을 사용가능하도록 권한이 설정됨
- 현재 상태에서 설정된 데이타베이스를 확인 :mysqlshow 명령 사용
border=1>
% mysqlshow -u root
+-----------+
| Databases |
+-----------+
| mysql |
| test |
+-----------+
- " -u root " : root 가 사용 한다는 옵션
- 최초 설치시 : mtsql과
test 두개의 데이블이 존재
- mysql 데이타베이스의 테이블 확인 : mysqlshow 명령 사용
border=1>
% mysqlshow -u root mysql
Database: mysql
+--------------+
| columns_priv |
| db |
| func |
| host |
| tables_priv |
| user |
+--------------+
- user 테이블이 사용자 권한에 관한 테이 블임
- user 테이블의 레코드 확인
border=1>
% mysql -u root
Welcome to the MySQL monitor.
Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 3.22.22
Type 'help' for help.
mysql> use
mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select *
from user;
+-----------+------+-
---------+-------------+-------------+-------------+------+
| Host | User | Password | Select_priv | Insert_priv |
Update_priv | Delet|
+-----------+------+----------+-------------+-------------+----------
---+------+
| localhost | root | | Y |
Y | Y | Y |
| orange | root | | Y |
Y | Y | Y |
| localhost | | | N |
N | N | N |
| orange | | | N |
N | N | N |
+-----------+------+----------+-------------+-------------+----------
---+------+
4 rows in set (0.01 sec)
mysql>
- "*.priv" 컴럼: 사용 권한에 대한 설정, Y 이면 권한을 가짐을, N이면 권한이 없음을
의미
- "Password" 컬럼 : 암호의 설정 상태를 의미, 현제 root는 암호가 없음
- root 사용자에 대하여 암호를 설정
border=1>
mysql>
update user set password = password('apple1234') => 암호 설정
-
> where
user='root' ;
Query OK, 2 rows
affected (0.13 sec)
Rows matched: 2 Changed: 2 Warnings: 0
mysql> quit
=> 종료
Bye
% mysqladmin -u root
reload => 권한이
변경된 경우 변경된 권한을 다시 읽어 들임
% mysql -u root -p
=> 암호가 있는 경
우 -p 옵션을 붙여서 mysql을 수행
Enter password:
XXXXXXXXXX
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8 to server version: 3.22.22
Type 'help' for help.
mysql> select *
from user;
+-----------+------+------------------+-------------+-------------+--
----------+
| Host | User | Password | Select_priv |
Insert_priv | Update_priv|
+-----------+------+------------------+-------------+-------------+--
----------+
| localhost | root | 32b157395f7543c0 | Y |
Y | Y |
| orange | root | 32b157395f7543c0 | Y |
Y | Y |
| localhost | | |
N | N | N |
| orange | | |
N | N | N |
+-----------+------+------------------+-------------+-------------+--
----------+
4 rows in set (0.01 sec)
mysql>
3.3 사용자 추가
- "INSERT .. INTO" 명령을 이용 해서 mysql 데이타베이스의 user 테이블에 추가
border=1>
% mysql -u root -p mysql
Enter password:XXXXXXXXXX
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 11 to server version: 3.22.22
Type 'help' for help.
mysql> insert into user
values('localhost', 'wiseo', ==> 사용자 wiseo에게 모든 권한
-> password('apple2000'), 'Y', 'Y', 'Y', 'Y',
-> 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y',
-> 'Y', 'Y');
Query OK, 1 row affected (0.01 sec)
mysql> select * from
user;
+-----------+-------+------------------+-------------+-------------+-
----------+
| Host | User | Password | Select_priv |
Insert_priv | Update_pri|
+-----------+-------+------------------+-------------+-------------+-
----------+
| localhost | root | 32b157395f7543c0 | Y |
Y | Y |
| orange | root | 32b157395f7543c0 | Y |
Y | Y |
| localhost | | |
N | N | N |
| orange | | |
N | N | N |
| localhost | wiseo | 6da73b5d2ab9ea69 | Y |
Y | Y |
+-----------+-------+------------------+-------------+-------------+-
----------+
5 rows in set (0.01 sec)
mysql>
- 권한을 부여 하고자 한다면 해당 컬럼 의 값을 'Y'로 아니면 'N'으로 설정
- SELECT, INSERT, DELETE에 대한 권한만 주고자 한다면
border=1>
mysql> insert into user values('localhost', 'wiseo',
-> password('apple2000'), 'Y', 'Y', 'Y');
Query OK, 1 row affected (0.01 sec)
mysql>
- "GRANT" 명령을 이용해서 mysql 데이타베이스의 user 테이블에 추가
border=1>
mysql> grant all priviledges on *.* to wiseo@localhost
==> 사용자 wiseo에게 모든
권한
-> identified by 'apple2000' with grant
option;
Query OK, 0 rows affected
(0.01 sec)
mysql>
- "GRANT" 명령을 이용해서 RELOAD와 PROCESS 권한 만을 설정
border=1>
mysql> grant reload,process on *.* to wiseo@localhost
-> identified by 'apple2000' with grant
option;
Query OK, 0 rows affected
(0.01 sec)
mysql>
- 권한을 변경한 경우 반드시 권한을 적용 하여야 함(2가지 방법)
border=1>
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
% mysqladmin -u root -p reload
Enter password:
XXXXXXXX
3.4 암호
- root 암호를 잊어버린 경우
- MySQL 데몬의 실행을 중지
- 권한에 대한 검사를
하지 않고 데몬을 실행 : safe_mysql -Sg &
- mysql을 사용하여 암호를 제거
- mysqladmin
reload를 이용해서 변경된 권한을 적용하고, 데몬을 다시 수행
- 암호의 저장
- 암호가 설정된 경우 모든 명령을 사용하기 위해서는 -p 옵션을 붙여 야
하고, 암호를 입력하여야 함
- 암호 입력을 생략하려면 홈디렉토리에 .my.cnf 파일을 다음과 같이 만들어야 함.
border=1>
% cat > .my.cnf
[client]
password=암호
^D
% chmod
600 .my.cnf => 다른 사람이 보지 못하도록 파일 접근 권한을 설정
%
3.5 컬럼의 유형
- 컬럼(Column)
- 데이타베이스를 구성 하는 최소 단위
- 컬럼들이 모여서
테이블(Table)을 구성
- 컬럼의 유형
border=1>
TYNYINT
- 부호 있는 정수 -128 ~ 127
- 부호 없는 정수 0 ~255
- 1 Byte
SMALLINT
- 부호 있는 정수 -32768 ~ 32767
- 부호 없는 정수 0 ~65535
- 2 Byte
MEDIUMINT
- 부호 있는 정수 -8388608 ~ 8388607
- 부호 없는 정수 0 ~16777215
- 3 Byte
INT 또는 INTEGER
- 부호 있는 정수 -2147483648 ~ 2147483647
- 부호 없는 정수 0 ~4294967295
- 4 Byte
BIGINT
- 부호 있는 정수 - 9223372036854775808 ~
9223372036854775807
- 부호 없는 정수 0 ~18446744073709551615
- 8 Byte
FLOAT
- 단일 정밀도를 가진 부동 소수 점
- -3.402823466E+38 ~3.402823466E+38
DOUBLE
- 2 배 정밀도를 가진 부동 소수 점
- -1.79769313486231517E+308 ~
1.79769313486231517E+308
DATE
- 날짜를 표현하는 유형
- 1000-01-01 ~ 9999-12- 31
DATETIME
- 날짜와 시간을 표현하는 유형
- 1000-01-01 00:00:00 ~ 9999- 12-31
23:59:59
TIMESTAMP
- 1970-01-01 00:00:00 부터 2037년 까지 표현
- 4 Byte
TIME
- 시간을 표현하는 유형
- -839:59:59 ~ 838:59:59
YEAR
- 년도를 표현하는 유형
- 1901 년 ~ 2155년
CHAR(M)
- 고정길이 문자열을 표현하는 유형
- M = 1 ~255
VARCHAR(M)
- 가변길이 문자열을 표현하는 유형
- M = 1 ~ 255
TINYBLOB
TINYTEXT
- 255개의 문자를 저장
- BLOB : BINARY LARGE OBJECT 의 약자
BLOB
TEXT
- 63535개의 문자를 저장
MEDIUMBLOB
MEDIUMTEXT
- 16777215개의 문자를 저장
LONGBLOB
LONGTEXT
- 4294967295(4Giga)개의 문자 를 저장
- 부호 있는 정수 -128 ~ 127
3.6 데이타베이스 생성
- mysqladmin을 이용하는 방법
border=1>
% mysqladmin create super
Database "guestbook" created.
% mysqlshow
+-----------+
| Databases |
+-----------+
| mysql |
| guestbook |
| test |
+-----------+
%
- mysql을 이용하는 방법
border=1>
% mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4 to server version: 3.22.22
Type 'help' for help.
mysql> create
datatbase guestbook;
Query OK, 1 row affected (0.01 sec)
mysql> show
databases;
+-----------+
| Databases |
+-----------+
| mysql |
| guestbook |
| test |
+-----------+
Query OK, 1 row
affected (0.01 sec)
mysql>
3.7 테이블 생성
- 테이블의 예 : 고객 테이블
border=1>
테이블 명 : guest
컬럼 명 : 일련번호(no) -> 자동으로 부여되는 일련 번호, 키
이름(name)
나이(age)
전화번호(phone)
전자우편주소(email)
주소(address)
- 테이블 생성 방법 : mysql 명령 모드에 서 CREATE 문을 사용
border=1>
CREATE TABLE 테이블명 (컬럼의 형 식)
;
- 테이블 생성 예제
border=1>
% mysql
mysql> use
guestbook;
Database
changed
mysql> CREATE
TABLE guest(no INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
-> name CHAR
(20), age TINYINT, phone VARCHAR(20),email VARCHAR
(30),
-> address
VARCHAR(50));
Query OK, 0 rows
affected (0.01 sec)
mysql> SHOW
TABLES; => 생성
된 테이블을 확인
+--------------------
-+
| Tables in guestbook |
+---------------------+
| guest |
+---------------------+
1 row in set (0.00 sec)
mysql>
- PRIMARY KEY : 주 키로 설정
- NOT NULL : 반드 시 값을 가져야 함을 의미
-
size=2>AUTO_INCREMENT : 레코드가 삽입될 때 마다 자동으로 값을 증가
3.8 레코드 삽입
- 삽입할 레코드 정보
border=1>
size=2>no
size=2>name
size=2>age
size=2>phone
size=2>email
size=2>address
size=2>1
size=2>홍길동
size=2>20
size=2>510-0001
href="mailto:hong@jisan.ac.kr"
target=_blank>hong@jisan.ac.kr
size=2>부산
size=2>2
size=2>김유신
size=2>22
size=2>510-1004
size=2>경주
size=2>3
size=2>강감찬
size=2>23
size=2>510-9000
href="mailto:gang@jisan.ac.kr"
target=_blank>gang@jisan.ac.kr
size=2>대구
size=2>4
size=2>이순신
size=2>21
size=2>560-8000
size=2>여수
size=2>5
size=2>임꺽정
size=2>30
size=2>800-7000
size=2>대전
size=2>6
size=2>유관순
size=2>21
size=2>700-5555
size=2>서울
size=2>7
size=2>윤봉길
size=2>28
size=2>288-5757
href="mailto:youn@jisan.ac.kr"
target=_blank>youn@jisan.ac.kr
size=2>인천
size=2>8
size=2>안중근
size=2>33
size=2>566-4545
size=2>수원
size=2>9
size=2>박문수
size=2>25
size=2>767-9090
href="mailto:park@jisan.ac.kr"
target=_blank>park@jisan.ac.kr
size=2>충주
size=2>10
size=2>정철수
size=2>55
size=2>777-9999
href="mailto:jung@jisan.ac.kr"
target=_blank>jung@jisan.ac.kr
size=2>광주
- 레코드 삽입 방법 : mysql 명령 모드에 서 INSERT 문을 사용
border=1>
INSERT INTO 테이블명 VALUES(컬럼의 데 이터 값...)
;
- 레코드 삽입 예제:
border=1>
mysql> INSERT INTO guest VALUES(1,'홍길
동',20,'510-0001',
-> 'hong@jisan.ac.kr','부산');
Query OK, 1 row affected (0.05 sec)
mysql> INSERT
INTO guest VALUES(NULL,'김유신',22,'510-1004',
-> 'kim@jisan.ac.kr','경
주');
Query OK, 1 row affected (0.05 sec)
(중략)
mysql> select *
from guest;
+----+--------+------+----------+------------------+---------+
| no | name | age | phone | email |
address |
+----+--------+------+----------+------------------+---------+
| 1 | 홍길동 | 20 | 510-0001 | hong@jisan.ac.kr | 부산 |
| 2 | 김유신 | 22 | 510-1004 | kim@jisan.ac.kr | 경주 |
| 3 | 강감찬 | 23 | 510-9000 | gang@jisan.ac.kr | 대구 |
| 4 | 이순신 | 21 | 560-8000 | lee@jisan.ac.kr | 여수 |
| 5 | 임꺽정 | 30 | 800-7000 | lim@jisan.ac.kr | 여수 |
| 6 | 유관순 | 21 | 700-5555 | you@jisan.ac.kr | 서울 |
| 7 | 윤봉길 | 28 | 288-5757 | youn@jisan.ac.kr | 인천 |
| 8 | 안중근 | 33 | 566-4545 | ann@jisan.ac.kr | 수원 |
| 9 | 박문수 | 25 | 767-4545 | park@jisan.ac.kr | 충주 |
| 10 | 정철수 | 55 | 777-9999 | jung@jisan.ac.kr | 광주 |
+----+--------+------+----------+------------------+---------+
10 rows in set (0.00 sec)
mysql>
3.9 레코드 수정
- 레코드 수정 방법 : mysql 명령 모드에 서 UPDATE 문을 사용
border=1>
UPDATE 테이블명 SET 컬럼명=식 ,... [ WHERE 조건
];
- 레코드 수정 예제:
border=1>
mysql> Update guest SET address='대전'
where name='임꺽정';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select *
from guest where name='임꺽정';
+----+--------+------+----------+-----------------+---------+
| no | name | age | phone | email | address |
+----+--------+------+----------+-----------------+---------+
| 5 | 임꺽정 | 30 |800-7000 | lim@jisan.ac.kr | 대전 |
+----+--------+------+----------+-----------------+---------+
1 row in set (0.00 sec)
mysql>
3.10 레코드 검색
- 검색 조건
border=1>
- guest 테이블의 모든 레코드 검색하여 이 름과 나이 필드만 출력
- guest 테이 블의 모든 레코드 검색하여 25살 이하인 사람들의 이름만 출력
- guest 테이블의 모든 레코드를 나 이가 큰 순서로 정렬하여 이름과 나이 필드만 출력
- 전체 나이의 평균 출력
- guest 테이블의 모든 레코드 검색하여 이 름과 나이 필드만 출력
- 레코드 검색 방법 : mysql 명령 모드에 서 SELECT 문을 사용
border=1>
SELECT 컬럼명 [AS 구문] ,..
FROM 테이블명
[WHERE 조건]
[ORDER BY 정렬기준 컬럼 ACS|DESC ]
[GROUP BY 구룹화 기준 컬럼 ];
- 레코드 검색 예제:
border=1>
mysql> SELECT name,age from
guest;
+--------+------+
| name | age |
+--------+------+
| 홍길동 | 20 |
| 김유신 | 22 |
| 강감찬 | 23 |
| 이순신 | 21 |
| 임꺽정 | 30 |
| 유관순 | 21 |
| 윤봉길 | 28 |
| 안중근 | 33 |
| 박문수 | 25 |
| 정철수 | 55 |
+--------+------+
10 rows in set (0.00 sec)
mysql> SELECT
name,age from guest where age <= 25 ;
+--------+------+
| name | age |
+--------+------+
| 홍길동 | 20 |
| 김유신 | 22 |
| 강감찬 | 23 |
| 이순신 | 21 |
| 유관순 | 21 |
| 박문수 | 25 |
+--------+------+
6 rows in set (0.00 sec)
mysql> SELECT
name,age from guest ORDER BY age DESC; size=2>
+--------+------+
| name | age |
+--------+------+
| 정철수 | 55 || 안중근 | 33 |
| 임꺽정 | 30 |
| 윤봉길 | 28 |
| 박문수 | 25 |
| 강감찬 | 23 |
| 김유신 | 22 |
| 이순신 | 21 || 유관순 | 21 |
| 홍길동 | 20 |
+--------+------+
10 rows in set (0.01 sec)
mysql> SELECT AVG
(age) from guest ;
+----------+
| AVG(age) |
+----------+
| 27.8000 |
+----------+
1 row in set (0.07 sec)
mysql> SELECT AVG
(age) AS '평균 연령' from guest ;
+-----------+
| 평균 연령 |
+-----------+
| 27.8000 |
+-----------+
1 row in set (0.01 sec)
mysql>
3.12 파일로 부터 레코드 입력받기와 결과를 파일 로 저장하기
3.12.1 파일에서 데이터를 테이블로 읽어 들이기
- 방법 : mysql 명령 모드에서
border=1>
LOAD DATA INFILE '파일 경로명'
INTO TABLE 테이블명 FIELDS TERMINATED BY '필드구분자';
- 예제 :
border=1>
% cat > guest.txt size=2>
NULL,서태지,22,666-
9999,seo@jisan.ac.kr,진주
NULL,신승훈,33,999-6666,shin@jisan.ac.kr,청주
% mysql
guestbook
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15 to server version: 3.22.22
Type 'help' for help.
mysql> LOAD DATA
INFILE '/home/prof/wiseo/guest.txt' INTO TABLE guest
-> FIELDS TERMINATED BY ',';=> 파일명은 반드시 절대경로명
Query OK, 2 rows affected (0.03 sec)
Records: 2 Deleted: 0 Skipped: 0 Warnings: 2
mysql>
3.12.2 테이블에서 데이터를 검색하여 파 일로 출력하기
- 방법: mysql 명령 모드에서
border=1>
SELECT 문 INTO OUTFILE '출력파일의 경로명';
- 예제 :
border=1>
mysql> SELECT * from guest where age
<= 25
-> INTO
OUTFILE 'out.txt'
-> FIELDS
TERMINATED BY ',' ; => 상대경로명을 사용하면 기준
은 DB가 존재하는 디렉토리
mysql>
3.13 테이블의 이름 변경과 컬럼 구조 변경(ALTER 문)
3.13.1 테이블 이름 변경
- 방법: mysql 명령 모드에서
border=1>
ALTER TABLE 테이블명 RENAME 새테이블명 ;
3.13.2 테이블 컬럼 구조 변경
- 방법: mysql 명령 모드에서
border=1>
ALTER TABLE 테이블명 ADD 컬럼명 컬럼 유형; => 새로운 컬럼을 추가
ALTER TABLE 테이블명 DROP COLUMN 컬럼명; => 컬럼을 삭제
3.13 테이블의 삭제
- 방법: mysql 명령 모드에서
border=1>
DROP TABLE 테이블명 ;

Comments List
醫