일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 백준 1167 트리의 지름 파이썬
- 프로그래머스 등굣길
- 프로그래머스 여행경로
- 게임 개발 파이썬
- 등굣길 파이썬
- 가장 긴 바이토닉 부분 수열 파이썬
- 백준 1034 램프 파이썬
- 트리의 지름 파이썬
- 프로그래머스 베스트앨범
- 다리 만들기 파이썬
- 가장 긴 팰린드롬 파이썬
- 프로그래머스 순위 파이썬
- 백준 1613 역사
- 백준 1043 거짓말 파이썬
- SQL SERVER 장비교체
- SQL SERVER MIGRATION
- 백준 2352 반도체 설계 파이썬
- 베스트앨범 파이썬
- 반도체 설계 파이썬
- 백준 2146 다리 만들기
- 프로그래머스 순위
- 백준 1516 게임 개발
- 램프 파이썬
- 백준 11054.가장 긴 바이토닉 부분 수열
- 역사 파이썬
- 백준 1238 파티 파이썬
- 순위 파이썬
- 다중 컬럼 NOT IN
- SWEA
- 프로그래머스 가장 긴 팰린드롬
- Today
- Total
공부, 기록
[MySQL 8] 사용자 및 권한 본문
사용자
MySQL 은 사용자와 연결 호스트를 동시에 식별이 가능.
'user id'@'host name' 으로 계정을 생성한다. 이 계정이 어느 호스트에서도 접근이 가능하게 하고 싶다면
'user id'@'%' 형식으로 호스트 부분에 %(모든 IP 또는 호스트를 의미)를 기입하여 생성.
MySQL의 계정은 크게 시스템 계정(ADMIN) 과 일반 계정으로 나눈다.
시스템 계정은 SYSTEM_USER 권한을 가지고 있는 일반 계정으로 볼 수 있다. 시스템 계정은 당연히 일반 계정을 관리 할 수 있지만 일반 계정을 시스템 계정을 생성하거나 관리 할 수 없다.
다음과 같은 세가지 서버 관리와 관계된 중요한 작업은 시스템 계정으로만 사용 가능하다.
- 계정 관리
- 세션의 쿼리 강제 종료
- SP 생성시 DEFINER를 타 사용자로 지정
계정 생성 및 권한 부여의 경우 MS와 동일하게 CREATE USER, GRANT USER 로 나누어져서 사용된다(5버전까진 GRANT로 계정 생성도 가능).
계정 생성의 다양한 옵션들.
- IDENTIFIED WITH : 인증 옵션
- Native Pluggable Authentication : 단순한 해시(SHA-1) 알고리즘을 통한 패스워드 인증.
- Caching SHA-2 Pluggable Authentication : SHA-2 알고리즘을 통한 인증. SSL/TLS 또는 RSA 필요. (기본 인증)
- PAM Pluggable Authentication : 유닉스, 리눅스 패스워드 또는 LDAP 같은 외부 인증. 엔터버전에서만 가능
- LDAP Pluggable Authentication : LDAP를 통한 외부 인증. 엔터버전에서만 가능.
- REQUIRE : 서버에 접속할 때 SSL/TLS 채널의 사용 여부 설정.
- PASSWORD EXPIRE : 비밀번호 만료 정책. 따로 미 지정 시 시스템 변수에 지정된 기간으로 지정 됨.
- PASSWORD HISTORY : 과거 비밀번호를 재사용하지 못하게 하는 여부의 설정.
- PASSWORD REUSE INTERVAL : 비밀번호 재사용 금지 기간 설정
- PASSWORD REQIURE: 비밀번호 변경 시 현재 비밀번호의 필요 여부
- ACCOUNT LOCK / UNLOCK : 게정 생성 및 수정 시 계정의 잠금 여부
권한
기존 MySQL은 Global, 객체, 동적 권한으로 나누어져 있다.
Global : 데이터베이스나 테이블 이외의 객체에 적용되는 권한. (EX CREATE USER, DROP ROLE SHUTDOWN ..)
객체 : 데이터베이스나 테이블을 제어하는데 필요한 권한. (EX DROP, ALTER, EXECUTE ...)
동적 : MySQL 서버가 시작되면서 동적으로 생성하는 권한. (EX INNODB_EDO_LOG_ARCHIVE, BACKUP_ADMIN ..)
동적 권한으로 인하여 SPUER 라는 권한이 잘게 쪼개지어 관리가 되었다.
권한 부여는 GRANT privilege_list ON target TO 'user'@'host'; 쿼리로 입력가능하다. 권한 항목에 , 로 구분하여 여러 권한을 동시에 부여 가능. Target의 경우 *.* 를 통하여 특정 오브젝트 전체를 부여 가능.
ex ) GRANT EVENT ON *.* TO 'user'@'host'; GRANT EVENT ON dataTable.* TO 'user'@'host';
각 계정에 부여된 권한을 확인하는 방법은 SHOW GRANTS 또는 테이블 조회이다.
테이블 명 | 내용 |
mysql.user | 글로벌 권한 |
mysql.db | DB 단위로 부여된 권한 |
mysql.tables_priv | 테이블 단위 권한 |
mysql.columns_priv | 컬럼 단위 권한 |
mysql.procs_priv | SP 단위 권한 |
mysql.global_grants | 동적 글로벌 권한 |
Role
8버전 부터 Role 통하여 권한을 묶어서 관리가 가능하다.
CREATE ROLE 과 GRANT 권한 ON TARGER TO ROLE 로 관리.
권한 부여 후 SET ROLE 명령을 통하여 해당 역할을 활성화 해주어야 하는데. 이는 시스템 변수 activate_all_roles_on_login 을 통하여 자동으로 활성화되게 변경 가능.
참조
Real MySQL 8.0 개정판
'공부 > DATABASE' 카테고리의 다른 글
[SQL Server] 최근 튜닝 일지 (0) | 2023.02.05 |
---|---|
[MySQL 8] 아키텍처-1 (0) | 2022.12.24 |
[MSSQL/SQL SERVER] 커서 (0) | 2022.10.03 |
[MSSQL/SQL Server] 트랜잭션 (0) | 2022.09.24 |
캐시와 실행계획 (0) | 2022.05.21 |