본문 바로가기
728x90

Books/RealMySQL 8.05

4.1 MySQL 엔진 아키텍처(1) MySQL 서버는 사람의 머리 역할을 담당하는 MySQL 엔진과 손발 역할을 담당하는 스토리지 엔진으로 구분할 수 있다. 그리고 손과 발의 역할을 담당하는 스토리지 엔진은 핸들러 API를 만족하면 누구든지 스토리지 엔진을 구현해서 MySQL 서버에 추가해서 사용할수 있다. 이번 장에서는 MySQL 엔진과 MySQL 서버에서 기본으로 제공되는 InnoDB 스토리지 엔진, 그리고 MyISAM 스토리지 엔진을 구분해서 살펴보겠다 먼저 MySQL의 쿼리를 작성하고 튜닝할 떼 필요한 기본적인 MySQL 엔진의 구조를 훑어 보겠다 - MySQL 서버는 다른 DBMS에 비해 구조가 상당히 독특하다 - 사용자 입장에서 보면 거의 차이가 느껴지지 않지만 이러한 독특한 구조 때문에 다른 DBMS에서는 가질 수 없는 엄청난.. 2021. 10. 9.
3.5 역할(Role) MySQL 8.0 버전부터는 권한을 묶어서 역할을 사용할 수 있게 됐다. 실제 MySQL 서버 내부적으로 역할은 계정과 똑같은 모습을 하고 있다 우선 CREATE ROLE 명령을 이용해 role_emp_read 와 role_emp_write라는 이름의 역할을 정의 CREATE ROLE role_emp_read, role_emp_write; - CREATE ROLE 명령에서는 빈 껍데기만 있는 역할을 정의 GRANT 명령으로 각 역할에 대해 실질적인 권한을 부여하면 된다 ## employees DB 의 모든 객체에 대해 읽기 권한만 부여 GRANT SELECT ON employees.* TO role_emp_read; ## employees DB 의 모든 객체에 데이터변경(INSERT, UPDATE, DE.. 2021. 10. 4.
3.4 권한 MySQL 5.7 버전까지 권한은 글로벌 권한과 객체 단위의 권한으로 구분됐다 데이터 베이스나 테이블 이외의 객체에 적용되는 권한을 글로벌 권한이라고 하며, 데이터 베이스나 테이블을 제어하는데 필요한 권한을 객체 권한이라 한다 - 객체 권한은 GRANT 명령으로 권한을 부여할 때 반드시 특정 객체를 명시 - 글로벌 권한은 GRANT 명령에서 특정 객체를 명시하지 말아야 한다 예외적으로 ALL은 글로벌과 객체 권한 두 가지 용도로 사용될 수 있다 - 특정 객체에 ALL 권한이 부여되면 해당 객체에 적용될 수 있는 모든 객체 권한 부여 - 글로벌로 ALL이 사용되면 글로벌 수준에서 가능한 모든 권한을 부여 - 책 65p 표 3.1 정적권한, 표 3.2 동적 권한 참조 ## 사용자에게 권한을 부여할 때는 GR.. 2021. 10. 4.
3.3 비밀번호 관리 3.3.1 고수준 비밀번호 - MySQL 서버의 비밀번호는 유효기간이나 이력 관리를 통한 재사용 금지 기능뿐만 아니라 비밀번호를 쉽게 유추할 수 있는 단어들이 사용되지 않게 글자의 조합을 강제하거나 금칙어를 설정하는 기능이 있다 - MySQL 서버에서 비밀번호의 유효성 체크 규칙을 적용하려면 'validate_password' 컴포넌트를 이용한다 ## validate_password 컴포넌트 설치 INSTALL COMPONENT 'file://component_validate_password'; ## 설치된 컴포넌트 확인 SELECT * FROM mysql.component; ## validate_password 컴포넌에서 제공하는 시스템 변수 확인 SHOW GLOBAL VARIABLES LIKE 'va.. 2021. 10. 3.
3.2 사용자 계정관리 3.2.1 시스템 계정과 일반 계정 - MySQL 8.0부터 계정은 SYSTEM_USER 권한을 가지고 있느냐에 따라 시스템 계정과 일반 계정으로 구분된다 - 시스템 계정은 MySQL 서버 내부적으로 실행되는 백그라운드 스레드와는 무관하다 - 시스템 계정 = 서버관리자를 위한 계정 - 일반 계정 = 응용프로그램이나 개발 자을 위한 계정 시스템 계정은 데이터 베이스나 서버관리와 관련된 중요 작업을 할 수 있다 - 계정관리 - 다른 세션 또는 그 세션에서 실행 중인 쿼리를 강제 종료 - 스토어드 프로그램 생성이 DEFINER를 타 사용자로 설정 시스템 계정과 일반 계정의 개념이 도입된 이유? - SYSTEM_USER 권한을 할당하고 일반 사용자를 위한 계정에는 SYSTEM_USER 권한을 부여하지 않게 하기.. 2021. 10. 2.
728x90