mysql을 사용하고, DBA나 회사 내 DB을 관리 하게 되면 유저를 나누고 이에 따른 적절한 권한을 부여 해야 한다.
aws도 마찬가지지만 사용자의 특성에 맞게 최소한의 권한을 부여하는것이 가장 중요하기 때문이다.
시스템 계정과 일반 계정
mysql 에서는 크게 시스템계정과 일반계정이 있다.
시스템 계정은 다음과 같은 업무를 수행할 수 있다.
- 계정관리(계정 생성 및 삭제, 그리고 계정의 권한 부여 및 제거)
- 다른세션이나 실행중인 쿼리 강제 종료
Mysql은 다음 3가지 계정은 내부적으로 자동으로 생성되며, 처음부터 account_lock이 걸려 있다.
- mysql.sys'@'localhost : mysql 8.0부터 기본으로 내장된 sys 스키마나 객체들을 definer로 사용되는 계정
- mysql.session@localhost : mysql 플러그인이 서버로 접근할 때 사용되는 계정
- mysql.infoschema@localhost : information_schema에 정의된 뷰의 definer로 사용되는 계정
계정생성
Mysql 5.7 버전까지는 grant 명령으로 권한의 부여와 동시에 계정 생성이 가능했다.
하지만 mysql 8.0 부터는 create user 와 grant 명령을 구분해서 실행시켜야 한다.
계정생성 옵션
create user 'user'@'%'
IDENTIFIED WITH 'mysql_nativ_password' by 'password'
REQUIRE NONE
PASSWORD EXPIRE INTERVAL 30 DAY
ACCOUNT UNLOCK
PASSWORD HISTORY DEFAULT
PASSWORD REUSE INTERVAL DEFAULT
PASSWORD REQUIRE CURRENT DEAULT ;
이렇게 구분 지을 수 있다.
- IDENTIFIED WITH : 계정의 인증 방식을 뜻한다. 일반적으로는 mysql_native_password 방식을 많이 사용하지만 Caching SHA-2 Pluggable Authentication 방식도 있는데 이는쉽게 말해서 ssl 인증 방식이다. 그래서 반드시 키페어가 필요하다.
- REQUIRE : 서버에 접속할때 암호화된 SSL/TLS을 사용하지 여부를 결정한다.
- PASSWORD EXPIRE : 비밀번호의 유효기간을 뜻하며 이는 PASSWORD EXPIRE NEVER( 만료기간 없음),
- PASSWORD EXPIRE DEFAULT (시스템 변수에 저장된 유효기간 설정), PASSWORD EXPIRE(계정 생성과 동시에 만료처리) 가 있다.
- PASSWORD HISTORY : 비밀번호 재사용하지 못하게 설정하며, 해당 이력을 저정하며, 저장된 이력은 비밀번호로 사용할 수 없다.
- PASSWORD REUSE INTERVAL : 한번 사용했던비밀번호의 재사용 금지 기간을 설정하는 옵션이다. PASSWORD EXXPIRE 와 마찬가지로 PASSWORD REUSE INTERVAL N DAY 을 통해 N일자 까지 금지로 설정 가능하다.
- PASSWORD REQUIRE : 비밀번호가 만료되어 변경할때 현재 비밀번호를 필요로 할지 말지를 결정하는 옵션이다.
- ACCUNT LOCK / UNLOCK : 계정생성 시 또는 ALTER USER을 통해 계정 정보를 결졍할때 계정을 사용하지 못하게 잠글지 여부를 결정한다.
'SQL' 카테고리의 다른 글
MYSQL_ Thread, 쿼리 실행 구조 (0) | 2023.10.18 |
---|---|
MySQL_PRIVILEGES , Role (0) | 2023.10.17 |
프로그래머스_Lv3_헤비 유저가 소유한 장소 (0) | 2023.09.19 |
WINDOW FUCTION (MySQL) (0) | 2023.08.29 |
프로그래머스_Lv3 카테고리 별 도서 판매량 집계하기 (0) | 2023.08.17 |