DCL (Data Control Language)
- grant: 사용자 계정에 대한 권한을 주는 구문
- revoke: 사용자 계정에 대한 권한을 회수하는 구문
- commit: insert,update,delete 대한 데이터베이스에 실제 반영해주는 구문
- rollback: insert,update,delete 대한 복구
계정 생성
- create user '아이디'@'ip' identified by '비밀번호';
create user 'karns'@'%' identified by '1234';
select * from user;
권한
- 권한 주기 (grant)
#권한 주기
grant select,insert,delete,update,create,alter,drop on *.* to 'karns'@'%';
select * from user;
# grant 제외한 모든 권한 주기
grant all privileges on *.* to 'karns'@'%';
select * from user;
- 권한 회수 (revoke)
revoke select,insert,delete,update,create,alter,drop on *.* from 'karns'@'%';
select * from user;
계정 생성
- drop
drop user 'karns'@'%';
select * from user;
# 오토커밋 해제
select @@autocommit;
set autocommit = 0;
use shop; #데이터 베이스 선택하는거
select * from tb_user;
delete from tb_user
where user_id = 4;
# 복구하기
select * from tb_user;
rollback;
select * from tb_user;
# 오토커밋 활성화
set autocommit = 1;
select @@autocommit;
delete from tb_user
where user_id = 4;
select * from tb_user;
rollback; # 복구 안됨
select * from tb_user;
오토커밋이 뭔데 ㅋㅋㅋ 알려줘야할꺼 아님
자동으로 commit을 해주는거
commit
- 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어
- 트랜젝션의 처리 과정을 데이터베이스에 반영하기 위해서, 변경된 내용을 모두 영구 저장함
- 수행 과정
- commit을 수행하면, 하나의 트랜젝션 과정을 종료함
- TRANSACTION(INSERT, UPDATE, DELETE) 작업 내용을 실제 DB에 저장
- 이전 데이터 UPDATE
- 모든 사용자가 변경한 데이터의 결과 관측
autocommit
- DB 기본 설정에서 자동을 commit을 해줌
rollback
- 문제 발생시, 데이터 작업을 다시 이전의 상태로 돌리는 것
- TRANSACTION(INSERT, UPDATE, DELETE)작업 내용을 취소
- 이전 COMMIT한 곳까지만 복구
- 하나의 논리적인 작업 단위로 구성하기 (문제가 발생하면, 논리적인 작업의 단위를 모두 취소할려고)
실서버에서 주의할 점
commit이 되고 나면 데이터 복구가 어렵기 때문에 주의
항상 트랜잭션을 걸고 DB 작업을 사용 (실수 오류 터짐 예방)