본문 바로가기

프로그래밍/mySQL

[mySQL] 보안(암호, 계정, 권한, 역할)

암호 설정


ROOT 사용자


SET PASSWORD FOR 'root'@'localhost' = PASSWORD ('0000qwerty');

// root : 루트 사용자

// localhost : 소프트웨어 실행위치



계정생성


CREATE USER jsm

IDENTIFIED BY '000asd';

// 새로운 계정과 비밀번호 생성



권한부여


GRANT SELECT ON my_table

TO jsm;

// jsm계정에 my_table 테이블의 SELECT 권한 부여


GRANT INSERT ON my_table

TO jsm, jsm2;


GRANT INSERT, DELETE ON my_table

TO jsm

WITH GRANT OPTION;

// INSERT,DELETE의 권한을 부여 할 수 있는 권한을 부여..


GRANT SELECT(last_name) ON my_table

TO jsm;


GRANT ALL ON my_table

TO jsm;

//모든 권한 부여


GRANT INSERT ON db_test.*

TO jsm;

// .*는 데이터베이스의 모든 테이블의 INSERT권한 부여



권한취소


REVOKE SELECT ON my_table

FROM jsm;


REVOKE GRANT OPTION ON

SELECT ON my_table

FROM jsm;

// SELECT의 GRANT OPTION만 권한 취소

// 즉 권한을 주는 권한만 없애고 SELECT의 권한은 유지


REVOKE SELECT ON my_table

FROM jsm CASCADE;

// CASCADE : jsm이 권한을 준 모든 대상을 가리킴

// 즉, jsm의 권한과 연결된 대상의 권한을 전부 취소


REVOKE SELECT ON my_table

FROM jsm RESTRICT;

// RESTRICT : jsm과 연결된 권한이 있으면 제거할 시 에러 발생

// 연결된 권한의 유무를 알 수 있다.



역할(ROLE)

 - 그룹을 만들어서 데이터베이스를 관리 할 수 있다.


CREATE ROLE role_update;

// role_update라는 이름의 역할 생성


GRANT INSERT, DELETE ON my_table

TO role_update;

// ROLE에 권한 부여


GRANT role_update

TO jsm;

// jsm계정에게 role_update의 권한을 부여


GRANT role_update

TO jsm

WITH ADMIN OPTION;

// 역할을 부여하는 권한을 부여


REVOKE role_update

FROM jsm

CASCADE;

// 연결된 모든 권한 취소


REVOKE role_update

FROM jsm

RESTRICT;

// 연결된 계정이 있으면 취소 불가 에러 출력




계정생성과 권한부여의 결합


CREATE USER jsm

IDENTIFIED BY '0000';

+

GRANT ALL ON my_table

TO jsm;



GRANT ALL ON my_table

TO jsm

IDENTIFIED BY '0000';

// 위의 두 코드를 합한 코드