반응형

DBMS의 목적 중 하나는 데이터 베이스에 저장된 정보를 안전하게 보호하는 것이다.

이를 수행하기 위한 수단으로

추가 로그인

암호화 => 민감한 정보

사용자 관리 => 등록된 계정만

권한 관리

가 있다.

 

사용자 관리

사용자가 DB를 이용하기 위해선 계정이 필요함

사용자가 DBMS에 로그인하면 DBMS는 등록된 사용자인지 검사함

따라서 이를 위해 사전에 계정생성이 필요하다.

 

root

최고권한을 가진 사용자 계정으로 데이터베이스 및 DBMS에 대한 모든 권한을 가진다.

따라서 비밀번호가 노출되면 위험하고 일반 사용자에게 root권한을 주는 것은 위험하다.

그러므로 일반 사용자들은 별도의 계정을 만들어 사용하도록 해야한다.

 

사용자계정 생성시

localhost => DBMS 서버에 직접 접근 -> 원격접속 불가

% => DBMS에 원격 접속 ->직접접근 불가

 

서버에 직접 접속, 원격접속 둘다 하려면 같은이름의 local, remote계정 두가지 많들어야한다. 

 

권한은

1. 모든 DB

2. 패턴에 매칭되는 DB(이름으로 검색), 선택한 DB

에 접근할 수 있는 권한을 줄 수 있고,

select, insert, update, delete, execute, show view, create, alert, index, drop..... 와 같은 권한을 줄 수 있다

 

 

Mysql workbench는 DB단위로 권한을 부여하고 회수한다. => 세부적으로 되지 않는다.

따라서 sql 명령문 (grant, revoke)를 이용하여 테이블 단위로 권한을 부여하고 회수할 수 있다.

 

GRANT select ON my_db.emp TO user_1@localhost;
GRANT select, insert, update ON my_db.dept TO user_1@localhost;

 

 

root 사용자일 경우 sql문을 사용하여 사용자를 생성하고 권한부여, 회수가 가능하다.

localhost 사용자의 경우'

create user user_2@localhost identifited by '4321';

 

원격접속 사용자의 경우

create user 'user_2'@'%' identified by '4321';

 

생성된 사용자 확인

SELECT * from mysql.user;

mysql => system 카탈로그 정보가 있는 데이터 베이스

user => user테이블에 사용자 정보가 저장

 

 

권한의 부여

my_db에 대한 모든 권한 부여
grant all privileges on my_db.* to user_2@localhost;


일부 권한 부여
grant select, insert on my_db.* to user_1@localhost;


테이블에 대한 모든 권한 부여
grant all privilleges on my_db.emp to user_1@localhost;


테이블에 대한 일부 권한 부여
grant select, insert on my_db.emp to user_1@localhost;

 

 

with grant option

자신의 권한을 다른 user에게 부여할 수 있게 된다.

grant all privileges on my_db.* to user_2@localhost with grant option;

user_2로 로그인하여 다른 유저에거 자신의 권한을 grant 할 수  있다.

 

부여된 권한을 확인하려면

flush privileges; //변경된 내용을 메모리에 반영(권한 적용)
show grant for user_1@localhost;

 

 

권한 회수 => revoke

revoke delete on my_db.emp from user_2@localhost;

 

사용자 삭제

drop user user_2@localhost;

 

 

사용자 관리 - role

ex) 영업업무를 하는 user1, user2, user3이 있고 필요한 권한은 select, update일 경우

create role sales_role; //역할 생성
grant select, update on my_db.emp to sales_role; //역할에 권한 부여

grant sales_role to user1@localhost;
grant sales_role to user2@localhost;
grant sales_role to user3@localhost;

user1,2,3에 각각 역할을 준다.

 

 

728x90
반응형

'공부 > 데이터베이스' 카테고리의 다른 글

파이썬 연동 예제  (0) 2021.06.02
index  (0) 2021.06.02
DB 파이썬 연동  (0) 2021.05.18
저장 함수 예제  (0) 2021.05.15
저장 프로시저 예제  (0) 2021.05.15
블로그 이미지

아상관없어

,