■ DCL (Data Control Language)
=> 데이터의 접근 허용 또는 거부에 관련된 명령
※ mysql 데이타베이스 알아보기(show databases ; 명령에서 볼 수 있는 데이터베이스)
=> mysql 계정 및 권한에 대한 정보를 저장하고 있는 DB
=> 데이터베이스는 폴더의 개념. 데이터는 테이블에 저장되어 있다.
주목해서 알아두어야할 테이블
user 테이블 => mysql 계정에 대한 정보 테이블
모든 DB에보의 권한 정보
db 테이블 ==> 특정 DB에서의 권한 정보
1. 권한 부여
=>대상계정이 없으면 계정이 자동으로 생성
형식)
grant 권한 on DB이름 to 계정명;
계정사용자에게 DB이름에 권한을 부여한다.
mysql> grant all privileges on *.* to kim@localhost identified by ‘1234’ with grant option;
설명)
all privileges : 모든 명령어 사용 권한 부여, 단 grant는 제외. privileges는 안써도 됨.
*.* : DB명.table명 의미. 예를 들면 mysql.user 를 쓰면 mysql db에 있는 user 테이블에 권한 부여.
kim@localhost : 계정사용자 이름@클라이언트. 클라이언트에 IP주소 입력 가능
identified by ‘ ‘ : 계정 사용자에 패스워드 부여
with grant option : grant 권한을 강제로 부여
=>mysql.user 테이블에 저장
=>해석 : 로컬호스트에서 로그인할 수 있는 kim이란 계정을 만들고 비밀번호는 1234로 부여하며 grant 명령까지 가능한 권한을 부여한다.
mysql> grant all on test.* to lee identified by ‘5678’
lee : 계정명입력시 @클라이언트가 생략되면서 모든 컴퓨터에서 접속할 수 있도록 설정, 네트워크로 접속할 수 있음
==>test 데이터의 모든 테이블에 모든 권한을 갇는 비밀번호는 5678을 갇는 lee란 계정을 만든다.
접속하는 방법
> mysql -u lee -h IP주소 -p
mysql > show databases;
를 하면 mysql 데이타베이스는 안보인다. 왜냐하면 권한을 test에만 주었기 때문.
mysql> use mysql
mysql> grant select,insert on user to park identified by ‘1234’ ;
mysql의 user 테이블에만 권한을 갖는 park 계정 생성
mysql> select * from user;
mysql> select * from tables_priv;
2. 권한 삭제
=> 권한만 변경 (계정은 삭제가 되지 않는다)
형식)
revoke 권한 on DB이름 from 계정명;
mysql > revoke all on *.* from kim@localhost ;
all : grant를 제외한 옵션
mysql > revoke grant option on *.* from kim@localhost ;
grant option : grant 명령어 권한만 삭제
mysql > revoke insert on *.* from kim@localhost;
insert 명령어 사용권한만 삭제
mysql> select * from user;
3. 권한 확인
형식)
mysql> show grants for 계정명;
ex)
mysql> show grants for root@localhost;
mysql> show grants for lee;
mysql> show grants for current_user;
4. 계정 삭제
형식)
mysql> delete from 테이블이름 where 필드명=’계정명’;
mysql> flush privileges;
mysql> use mysql
mysql> delete from user where user=’kim’;
user 테이블에서 user 필드에서 kim이란 데이터를 삭제하라.
mysql> flush prvileges;
권한 적용 => 권한을 변경하면 반드시 실행.(grant와 revoke는 제외)
마지막 단계에서 한번만 실행
■ DDL (Data Definition Language)
1. 데이타 베이스 생성
형식)
create database DB명;
ex)
mysql> create database db12;
mysql> show databases;
mysql> create database if not exists db12;
db12라는 데이터베이스가 없으면 생성하라.
2. 데이타 베이스 삭제
형식)
drop databese DB명;
ex)
mysql> drop databse test;
mysql> drop database if not exists test;
※ DB의 table까지 모두 삭제하니 유의해야 하는 명령어.
3. 테이블 생성
형식)
create table 테이블이름(필드명 자료형 옵션,필드명 자료형 옵션, ….)
옵션은 생략 가능 -> 디폴트값으로 생성.
자료형 : 필드에 저장가능한 데이터 형태 (숫자형, 날자형,문자형)
char (30) ==>고정
varchar(30) ==>가변
enum(‘값’,’값’, …) 여러개의 값 중 한 개 값
set(‘값’,’값’,…) 여러개의 값 중 임의 선택 값
ex) 테이블 구조
num | name | birthday |
int | varchar(20) | date |
mysql> create table saram(num int,name varchar(20),birthday date);
mysql> show tables;
mysql> desc saram;
mysql> create table if not exists saram(num int,name varchar(20),birthday date);