본문 바로가기

SQL

[MySQL/MariaDB] 사용자 관리

모든 사용자에게 root의 비밀번호를 알려준다면, 고의든 실수든 문제발생시 데이터가 모두 유출되거나 증발하는 일이 생길수 있다. 따라서 각 DB에 알맞은 사용자와 그에 따른 권한을 부여할 필요성이 있다.

1. Navigator > Management > Users and Privileges

2. Add Account

3,4. 사용자 아이디/비밀번호 설정

 

 

왼쪽에 사용자가 생성되고, Account Limits 탭을 통해 최대 쿼리 수, 최대 업데이트 수, 시간당 최대 접속 수, 실시간 동시접속 최대 수 등을 설정할 수 있다. 모두 0이라면 특별히 제한이 없다는 의미.

 

Administrative Roles : MySQL 자체에 대한 권한을 설정한다. Director는 모든 권한을 부여하려면 DBA는 모든 권한이 있으므로 DBA만 체크해도 나머지가 모두 체크된다.

 

 

 

위처럼 명령어모드로도 동일한 결과를 얻을 수 있다.

 

Ceo를 생성하여 select만 체크하면 custom으로 읽기 권한만 줄 수 있다.

> CREATE USER ceo’%’ IDENTIFIED BY ‘패스워드’;

> GRANT SELECT ON *.* TO ceo@’%’;

 

1. 일반직원(staff)사용자를 생성하여 shopdb에 모든 테이블에 읽기,쓰기 권한을 부여하고 프로시저 생성, 수정할 권한을 주고, employees 데이터베이스에 읽기 권한을 부여하자.

2~6. 순서대로 선택

 

1,2. 해당 DB에 맞는 권한부여하면 3번에 결과를 볼 수 있다.

 

동일한 방법으로 employees DBselect 권한만 부여

CREATE USER staff@’%’ IDENTIFIED BY ‘패스워드’;

GRANT SELECT, INSERT, UPDATE, DELETE ON ShopDB.* TO staff@ ‘%’;

GRANT SELECT ON employees.* TO staff ‘%’;

 

워크벤치를 재실행하여 새로운 연결을 만들어도 되지만 Local instance MySQL 에서 마우스 우클릭으로 Edit Connection 을 선택한다.

 

사용자명을 변경하여 close

 

사용자 바뀐거 확인하고 접속

 

DBA권한을 준 사용자 이므로 데이터베이스 생성 및 삭제 가능

 

커넥션 끊고 ceo로 접속

 

CEO는 읽기 권한만 있으므로 DELETE는 안되는거 확인. Staff로 접속

 

Staff2개의 데이터베이스에만 권한을 줬으므로 2개만 보임

 

staff역시 권한이 주어진대로 되는게 있고 안되는게 있음.