우당탕탕 늑개 Database #9 - 사용자 관리

12918 단어 sqlAPIDatabaseAPI

권한

  • 사용자에 따라서 접근할 수 있는 데이터와 사용할 수 있는 기능을 제한

GRANT

  • 사용자를 생성하고 권한을 부여하는 명령어

문법

GRANT 권한 ON database.table TO `ID`@`HOST` IDENTIFED BY 'password'

사용자의 제한

  • 데이터 베이스 서버에 접속하는 사용자 제한
  • ID@host
    • host : 접속자가 사용하는 머신의 IP
    • IP를 특정하지 않으려면 '%' 사용
    ID@123.100.100.100 // IP가 123.100.100.100인 머신에서 접속한 ID에게만 권한 부여
    ID@% // IP 관계 없이 접속한 ID에게 권한 부여

대상의 제한

  • 사용자가 제어할 대상이 되는 데이터베이스나 테이블 지정
  • 모든 데이터베이스와 테이블을 제어 대상으로 할 때는 '*' 사용
GRANT ON class.student; // class 데이터베이스의 student 테이블 제어
GRANT ON class.*; // class 데이터베이스의 모든 테이블 제어
GRANT ON *.*; // 모든 데이터 베이스와 테이블 제어

권한(기능)의 제한

  • 사용할 수 있는 권한을 제한
권한
개발자SELECT, INSERT, UPDATE, DELETE
설계자ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT
DBAALL
GRANT DELETE, INSERT,SELECT, UPDATE ON class.* TO `dev`@`%` IDENTIFIED BY '1234';
// ID가 dev, PASSWORD가 1234인 사용자에게 class 데이터베이스의 개발자 권한 부여
GRANT ALTER, CREATE, DELETE, DROP, INDEX, INSERT, SELECT, UPDATE ON *.* TO `archi`100.100.100.100` IDENTIFIED BY '1234';
// ID가 archi, PASSWORD가 1234인 클라이언트 IP가 100.100.100.100에서 사용자에게 모든 데이터베이스의 설계자 권한 부여

SHOW GRANTS

  • 특정 사용자의 권한을 열람

문법

SHOW GRANTS [FOR USER] // USER 미 입력 시 자기 자신의 권한 확인

예제

SHOW GRANTS FOR dev; dev 사용자의 권한 열람

REVOKE

  • 사용자의 권한을 제거

문법

REVOKE 권한 ON DATABASE.TABLE FROM [USER]

예제

REVOKE DELETE ON class.* FROM dev; // dev 사용자의 class 데이터베이스의 모든 테이블의 DELETE 권한 제거

DROP USER

  • 사용자 삭제

문법

DROP USER user [, user]... 

예제

DROP USER `dev`@`%`;

권한 테이블(참고용)

Privilege권한이 적용되는 대상설명
CREATEdatabases, tables, or indexes데이터베이스, 테이블 생성
DROPdatabases, tables, or views데이터베이스,테이블 삭제
GRANT OPTIONdatabases, tables, or stored routines사용자들의 권한을 부여하거나 제거
LOCK TABLESdatabases테이블 잠그기
ALTERtables테이블의 구조를 변경
DELETEtables테이블의 행을 삭제
INDEXtables인덱스를 생성하거나 삭제
INSERTtables or columns행 추가
SELECTtables or columns행 조회
UPDATEtables or columns행 변경
CREATE TEMPORARY TABLEStables임시 테이블의 생성
CREATE VIEWviews뷰의 생성
SHOW VIEWviewsSHOW CREATE VIEW
ALTER ROUTINEstored routines프로시저, 함수의 변경 삭제
CREATE ROUTINEstored routines프로시저, 함수의 생성
EXECUTEstored routines프로시저, 함수의 실행
FILEfile access on server host- LOAD DATA INFILE
- SELECT..INTO OUTFILE
- LOAD_FILE()
CREATE USERserver administration
- CREATE USER
- DROP USER
- RENAME USER
- REVOKE ALL PRIVILEGES
PROCESSserver administration타인의 thread 실행 상태를 열람
- SHOW PROCESSLIST
- mysqladmin processlist
자신의 thread는 언제든지 열람가능
RELOADserver administration
- flush-hosts
- flush-logs
- flush-privileges
- flush-status
- flush-tables
- flush-threads
- refresh
- reload
REPLICATION CLIENTserver administration
- SHOW MASTER STATUS
- SHOW SLAVE STATUS
REPLICATION SLAVEserver administration리플리케이션에 참가하고 있는 슬레이브
서버들이 마스터 서버(권한을 부여하는 서버)
접속해서 마스터의 변경사항을 동기화
SHOW DATABASESserver administration
- SHOW DATABASES
SHUTDOWNserver administration
- mysqladmin shutdown
SUPERserver administration다른 클라이언트를 종료하거나, 서버의 동작 변경
- CHANGE MASTER TO
- KILL
- mysqladmin kill
- PURGE BINARY LOGS
- SET GLOBAL
- 기타등등
ALL [PRIVILEGES]server administration모든 권한 허용

좋은 웹페이지 즐겨찾기