View
데이터 베이스 생성
CREATE DATABASE [db이름] default CHARACTER SET UTF8;
SYS 계정
: 데이터베이스 내의 모든 권한을 갖는 최상위 레벨의 사용자
SYSTEM 계정
: SYS 계정으로부터 "DBA권한"을 받은 계정
새로운 계정을 추가, 변경, 삭제할 수 있다.
계정별 공간할당, 패스워드관리, 세션관리 등을 할 수 있다.
데이터베이스 오프젝트는 '계정별로' 생성된다.
해당 오브젝트를 생성한 사용자가 그 오브젝트의 소유자이다.
사용자 생성
CREATE USER [`계정 ID`@`호스트`] identified by ['패스워드']
+ '호스트'에 `%`을 넣으면 모든을 의미한다.
사용자 생성시 해당 사용자가 생성하는 객체가 저장될 테이블 스페이스 및 용량을 지정할 수 있다.
create user [`계정 ID`@`호스트`] identified by ['패스워드'] default tablespace [테이블스페이스명]
quota [용량] on appl_data [용량] on system;
사용자 정보 검색
SELECT host, USER, password FROM mysql.USER;
사용자 생성 이후
사용자 추가 삭제 권한 부여 등의 사용자 관련 변경사항이 있을 때는 이러한 변경사항을 적용하기 위한 명령어가 필요하다.
flush privileges;
사용자 권한 조회
SHOW grants FOR [`계정 ID`@`호스트`]
권한 부여
GRANT [priv_type] ON [DB명].[테이블명] TO [`계정 ID`@`호스트`];
+ 테이블명에 [*]을 넣으면 '모든'을 의미한다.
+ [DB명].[테이블명] 대신에 [*.*]을 넣으면 그냥 권한을 주는 것
+ [priv_type]에는 ALL PRIVILEGES, SELECT, INSERT, DELETE, UPDATE, CREATE, DROP, ALTER, INDEX, CREATE VIEW 등이 있다. 이는 개발자, 설계자, DBA 로 나눌 수 있는데 다음과 같다.
개발자 | DELETE, INSERT, SELECT, UPDATE |
설계자 | ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE, |
DBA | ALL |
+ 뒤에 IDENTIFIED BY를 이용하여 비밀번호를 적어 놓으면, 해당 계정의 비밀번호가 변경된다.
+[호스트]에 '168.100.%'을 넣으면 168.100.X.X등 168.100.으로 시작되는 모든 IP에서 원격 접속을 허용한다.
특정 컬럼을 지정하여 권한을 부여할 수도 있다.
예시 > GRANT UPDATE(컬럼1, 컬럼2, 컬럼3) ON [DB명].[테이블명] TO ['계정ID'@'호스트'];
사용자 삭제
DROP USER [`계정 ID`@`호스트`];
오류
종종 다음과 같은 오류가 뜬다.
There is no such grant defined for user `계정ID`on host`호스트`
이를 방지하기 위해 flush를 하는 것이다.
부여된 권환 제거
REVOKE [priv_type] ON [DB명].[테이블명] FROM [`계정 ID`@`호스트`];