모든 사용자에게 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 DB에 select 권한만 부여
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로 접속
Staff는 2개의 데이터베이스에만 권한을 줬으므로 2개만 보임
staff역시 권한이 주어진대로 되는게 있고 안되는게 있음.
'SQL' 카테고리의 다른 글
[Mysql MariaDB] 테이블_개체생성규칙_테이블삭제 (0) | 2021.03.08 |
---|---|
[MySQL_MariaDB] Ansi_데이터베이스,테이블,열조회_알리아스 (0) | 2021.03.07 |
[MySQL] 모델링_워크벤치ERD (0) | 2021.03.05 |
[MySQL_MariaDB] 백업_복사_insert_삭제 (0) | 2021.03.04 |
[MySQL_MariaDB] 트리거 (0) | 2021.03.03 |