
[다음글] MySQL 8.0.14 릴리즈 노트 #2
[다음글] MySQL 8.0.14 릴리즈 노트 #3
MySQL 8.0.14 릴리즈 노트 #1 내용입니다.
- 계정 관리 노트 (Account Management Notes)
- 감사 로그 노트 (Audit Log Notes)
- 컴파일 노트 (Compilation Notes)
- 컴포넌트 노트 (Component Notes)
- 구성 참고 노트 (Configuration Notes)
- 사용 중지 및 제거 노트 (Deprecation and Removal Notes)
- SQL 함수 및 연산자 노트 (SQL Function and Operator Notes)
- 로깅 노트 (Logging Notes)
- 최적화 도구 노트 (Optimizer Notes)
- 패키징 노트 (Packaging Notes)
- 성능 스키마 노트 (Performance Schema Notes)
- 플러그형 인증 (Pluggable Authentication)
- 보안 노트 (Security Notes)
- 공간 데이터 지원 (Spatial Data Support)
- SQL 구문 노트 (SQL Syntax Notes)
- 스레드 풀 노트 (Thread Pool Notes)
- X 플러그인 노트 (X Plugin Notes)
- 기능 추가 및 변경 (Functionality Added or Changed)
- 버그 수정 (Bugs Fixed)
계정 관리 노트 (Account Management Notes)
- 이전에는 각 MySQL 사용자 계정에 하나의 암호가 허용되었습니다. MySQL은 이제 계정에 기본 암호와 보조 암호로 지정된 이중 암호를 사용할 수 있도록 허용합니다. 이 기능을 사용하면 복잡한 다중 서버 시스템에서 다운타임 없이 단계별 암호 변경을 원활하게 수행할 수 있습니다. 이중 암호 기능을 지원하기 위해
ALTER USER
및SET PASSWORD
문에는 새 기본 암호를 계정에 할당할 때 현재 암호를 보조 암호로 저장하는RETRAIN CURRENT PASSWORD
절이 있습니다.ALTER USER
에는 더 이상 필요하지 않은 보조 비밀번호를 폐기하는DISCARD OLD PASSWORD
조항도 있습니다. Password Management를 참조하십시오. 중요이중 비밀번호 기능을 구현하려면mysql.user
시스템 테이블의 구조를 변경해야 합니다. 이전 버전에서 이 MySQL 릴리스로 업그레이드하는 경우 mysql_upgrade를 실행하고 서버를 다시 시작해야 이 시스템 데이터베이스 변경 사항을 통합할 수 있습니다. 이 작업이 수행되기 전까지는 암호를 변경할 수 없습니다.
감사 로그 노트 (Audit Log Notes)
- 이제 감사 API를 통해 응용 프로그램은
audit_api_message_emit_udf()
로드 가능한 기능이 포함된 새로운 ‘audit_api_message_emit’ 구성 요소를 사용하여 자체 메시지 이벤트를 감사 로그에 추가할 수 있습니다. The Audit Message Component 를 참조하십시오.
컴파일 노트 (Compilation Notes)
- 서버 빌드를 위한 Boost 라이브러리의 최소 버전은 현재 1.68.0입니다. (Bug #28478497)
컴포넌트 노트 (Component Notes)
- 새로운
host_application_signal
구성요소 서비스를 사용하여 구성 요소가 호스트 애플리케이션에 신호를 전달할 수 있습니다. 예를 들어, 이 서비스는 복제 구성요소가 종료 신호를 서버로 전송할 수 있도록 합니다.
구성 참고 노트 (Configuration Notes)
- 이전에는 서버(예:
version_comment
시스템 변수 설정) 및 다른 프로그램에서COMPILATION_COMMENT
CMake 옵션을 사용했습니다. 그러나 값에 “server”라는 단어가 포함된 경우 다른 프로그램에서 사용하기에 부적절했습니다. 서버는 이제 새로운COMPILATION_COMMENT_SERVER
선택사항을 사용합니다. 다른 프로그램에서는COMPILATION_COMMENT
를 계속 사용합니다. (Bug #28888510) .gitignore
파일의 내용이 정리되었습니다. 이 파일의 대부분은 이전 파일인.bzrignore
에서 가져온 것이므로 관련이 없습니다. 이 정리의 한 가지 의미는 in-source 빌드가 허용되지 않는다는 것입니다. (Bug #28341794, Bug #91626)- 이제 MySQL Server는 관리 연결을 위해 특별히 TCP/IP 포트를 구성할 수 있도록 허용합니다. 이는
max_connections
연결이 이미 설정된 경우에도 일반 연결에 사용되는 네트워크 인터페이스에서 허용되는 단일 관리 연결의 대안을 제공합니다. 관리 네트워크 인터페이스에는 다음과 같은 특징이 있습니다.- 인터페이스는 시작 시
admin_address
시스템 변수가 해당 시스템의 IP 주소를 나타내도록 설정된 경우에만 활성화됩니다.admin_address
가 설정되지 않은 경우, 서버는 관리 인터페이스를 유지관리하지 않습니다. admin_port
시스템 변수는 인터페이스 TCP/IP 포트 번호를 지정합니다. (default 33062).- 관리 연결 수에는 제한이 없지만 연결은
SERVICE_CONNECTION_ADMIN
권한을 가진 사용자에게만 허용됩니다. create_admin_listener_thread
시스템 변수를 통해 DBA는 시작 시 관리 인터페이스에 별도의 스레드가 있는지 여부를 선택할 수 있습니다. 기본값은OFF
입니다. 즉, 기본 인터페이스의 일반 연결에 대한 관리자 스레드는 관리 인터페이스에 대한 연결도 처리합니다.
- 인터페이스는 시작 시
사용 중지 및 제거 노트 (Deprecation and Removal Notes)
- 사용되지 않는 resolveip 및 resolve_stack_dump 유틸리티가 제거되었으며 MySQL 배포에 더 이상 포함되지 않습니다. nslookup, host 또는 dig를 nslookup 대신 사용할 수 있습니다. 공식 MySQL 빌드의 스택 추적은 항상 기호로 표시되므로 resolve_stack_dump를 사용할 필요가 없습니다.
SQL 함수 및 연산자 노트 (SQL Function and Operator Notes)
- 이제
OVER
절이 있는 경우JSON_ARRAYAGG()
및JSON_OBJECTAGG()
집계 함수를 창 함수로 사용할 수 있습니다. Aggregate Function Descriptions 를 참조하십시오.
로깅 노트 (Logging Notes)
- 새로운 시스템 변수
log_slow_extra
가 사용 가능한 경우, 서버는 추가 필드를 작성하여 느린 문에 대한 정보를 제공하는 질의 로그 행을 느리게 만듭니다. 또한 로그에 기록된SET
줄은 이제 실행 종료 시간이 아니라 문 실행 시작부터의 시간을 사용합니다. The Slow Query Log를 참조하십시오. 이 기능의 기반이 되는 페이스북의 기여에 감사드립니다. (Bug #27535580, Bug #89637) - 이제 이진 로그 파일과 릴레이 로그 파일을 암호화하여 이러한 파일과 그 안에 포함된 잠재적으로 중요한 데이터가 외부 공격자에 의해 악용되지 않도록 보호하고 해당 파일이 저장된 운영 체제 사용자의 무단 보기로부터 보호할 수 있습니다.
새binlog_encryption
시스템 변수를ON
으로 설정하여 MySQL 서버에서 암호화를 활성화합니다. 기본값은OFF
입니다. 시스템 변수는 이진 로그 파일 및 릴레이 로그 파일에 대해 암호화를 설정합니다. 암호화를 사용하여 서버를 처음 시작하면 이진 로그 및 릴레이 로그가 초기화되기 전에 새 이진 로그 암호화 키가 생성됩니다. 이 키는 각 이진 로그 파일(서버에 이진 로그가 사용 가능한 경우)과 릴레이 로그 파일(서버에 복제 채널이 있는 경우)의 파일 비밀번호를 암호화하는 데 사용되며, 파일 비밀번호에서 생성된 추가 키는 파일의 데이터를 암호화하는 데 사용됩니다.
서버가 실행 중일 때 암호화를 활성화하면 새 이진 로그 암호화 키가 생성되고 이진 로그 파일과 릴레이 로그 파일이 순환되어 새 파일과 후속 파일이 암호화됩니다.binlog_encryption
시스템 변수를OFF
로 변경하여 암호화를 비활성화하는 경우 이진 로그 파일과 릴레이 로그 파일이 즉시 순환되고 이후의 모든 로깅은 암호화되지 않습니다. 이전에 암호화된 파일은 자동으로 해독되지 않지만, 서버는 여전히 해당 파일을 읽을 수 있습니다. (SHOW BINARY LOGS
문은 이제 각 이진 로그 파일의 암호화 여부를 표시합니다.) 서버가 실행되는 동안 암호화를 활성화하거나 비활성화하려면SUPER
권한 또는 새로운BINLOG_ECRIPTION_ADMIN
권한이 필요합니다.
파일에 사용되는 암호화 알고리즘인 AES(Advanced Encryption Standard) 암호 알고리즘은 MySQL Server에 기본 제공되므로 구성할 수 없습니다. 로그 파일의 파일 암호를 암호화하는 데 사용되는 이진 로그 암호화 키는 MySQL Server의 기본 제공 키링 서비스를 사용하여 각 MySQL Server 인스턴스에 대해 특별히 생성되는 256비트 키입니다. 서버에서 현재 사용 중인 이진 로그 암호화 키를 이진 로그 마스터 키라고 합니다.새로운binlog_rotate_encryption_master_key_at_startup
시스템 변수는 서버를 재시작할 때 이진 로그 마스터 키가 자동으로 회전되는지 여부를 제어합니다. 이 시스템 변수를 ‘ON’으로 설정하면 서버가 다시 시작될 때마다 새로운 이진 로그 암호화 키가 생성되어 새로운 이진 로그 마스터 키로 사용됩니다. 기본값인 ‘OFF’로 설정하면 재시작 후 기존 이진 로그 마스터 키가 다시 사용됩니다.
MySQL Server 인스턴스에 대해 암호화가 활성화되면 이진 로그 파일과 릴레이 로그 파일에 기록된 유휴 데이터만 암호화됩니다. mysqlbinlog를 포함하여 MySQL 클라이언트로 전송되는 복제 이벤트 스트림의 이동 중인 데이터는 항상 암호화되지 않은 형식이므로 연결 암호화를 사용하여 전송 중에 보호해야 합니다. 트랜잭션 중에 이진 로그 트랜잭션 및 문 캐시에 보관 중인 데이터, 즉 사용 가능한 공간을 초과하여 디스크의 임시 파일에 저장된 데이터도 암호화되지 않은 형식입니다. 트랜잭션을 처리하는 스레드가 끝나면 임시 파일과 캐시가 삭제됩니다. - 로깅 구성을 지정하는 시작 옵션을 처리하기 전에 생성된 오류 로그 메시지에 대한 서버 로깅 동작이 변경되었습니다. 이전에 서버는 기본 타임스탬프, 형식 및 상세도 수준의 메시지를 생성하고 버퍼링한 다음 오류 로그 구성이 알려진 후 메시지를 플러시했습니다. 이러한 초기 메시지는 기본 로깅 구성을 사용했으므로 시작 선택사항에서 지정한 것과 다를 수 있습니다.이제 서버는 형식화된 로그 메시지 대신 로그 이벤트를 버퍼링합니다. 이렇게 하면 설정이 알려진 후 해당 이벤트에 구성 설정을 소급 적용할 수 있으므로 플러시된 메시지가 기본 설정이 아닌 구성된 설정을 사용하게 됩니다. 자세한 내용은 Error Log Output Format을 참조하십시오.
최적화 도구 노트 (Optimizer Notes)
- 이전에는 파생 테이블과 공통 테이블 식에 외부 참조를 포함할 수 없었습니다. 이제 외부 참조가 허용됩니다.
패키징 노트 (Packaging Notes)
- Ubuntu 18.10 및 Fedora 29는 기본적으로 OpenSSL 1.1.1을 설치하지만 OpenSSL 1.1.1은 MySQL에서 완전히 지원되지 않습니다. MySQL을 설치하려면 OpenSSL 1.0.2 호환성 패키지가 설치되어 있어야 합니다. (Bug #28981868)
성능 스키마 노트 (Performance Schema Notes)
- 이제 Performance Schema 문 이벤트 테이블(
events_statements_current
,events_statements_history
, andevents_statements_history_long
)에 SQL 수준에서 서버가 유지 관리하는 쿼리 ID를 나타내는STATEMENT_ID
열이 있습니다. 열 값은 원자적으로 증가되는 글로벌 카운터를 사용하여 생성되므로 서버 인스턴스마다 고유합니다.
플러그형 인증 (Pluggable Authentication)
- LDAP 포트 번호가 636 또는 3269로 구성된 경우 이제 플러그인은 LDAP 대신 LDAPS(SSL을 통한 LDAP)를 사용합니다. 포트 번호는
authentication_ldap_sasl_server_port
또는authentication_ldap_simple_server_port
시스템 변수를 사용하여 설정할 수 있습니다(LDAPS는 ‘start’와 다릅니다).TLS입니다.) (Bug #28743563) - 이전에는 프록시를 사용한 LDAP 인증의 경우 LDAP 인증 플러그인은 LDAP 서버가 반환한 첫 번째 그룹 이름을 MySQL 프록시 사용자 계정 이름으로 사용했습니다. 이제 MySQL 계정의 인증 문자열은 기본 설정 순서로 일치시킬 그룹 목록을 지정하고, 일치 그룹 이름을 지정된 MySQL 프록시 사용자 이름에 매핑할 수 있습니다. LDAP Pluggable Authentication을 참조하십시오.
보안 노트 (Security Notes)
- 일부 플랫폼(윈도우즈, macOS 및 Generic Linux)에서 MySQL과 함께 번들로 제공된 OpenSSL 라이브러리가 버전 1.0.2q로 업그레이드되었습니다. 다른 모든 플랫폼에서는 MySQL이 OpenSSL이 설치된 시스템을 사용합니다. 새 OpenSSL 버전에서 해결된 문제는 http://www.openssl.org/news/vulnerabilities.html에서 설명합니다. (Bug #28988091)
- 이후의 서버 재시작에 영향을 미치기 위해
SET PERSIST
및SET PERSIST_ONLY
문을 사용하면 시스템 변수를 데이터 디렉토리의 ‘mysqld-auto.cnf’ 옵션 파일로 유지할 수 있습니다. 그러나 일부 시스템 변수는 예를 들어 중요한 데이터가 포함되어 있기 때문에 지속할 수 없습니다. 따라서 원격 관리자가 수행한 세션 내에서 런타임에 설정할 수 없으므로 관리자가 서버 호스트에 로그인하여my.cnf
옵션 파일을 직접 수정해야 합니다.이제 MySQL은 사용자가 이전에 지속 불가능한 많은 시스템 변수의 런타임 관리를 수행할 수 있도록 하여 특정 제한 조건 하에서 유지될 수 있게 합니다. 이 기능을 사용하려면 제한된 시스템 변수를 유지하는 기능을 나타내는 SSL 인증서 X.509 Subject 값을 지정하고 새persist_only_admin_x509_subject
시스템 변수를 해당 Subject 값으로 설정하십시오. 암호화된 연결을 사용하여 서버에 연결하고 지정된 제목 값을 가진 SSL 인증서를 제공하는 사용자는SET PERSIST_ONLY
를 사용하여 제한된 시스템 변수를 유지할 수 있습니다. 자세한 내용은 Nonpersistible and Persist-Restricted System Variables를 참조하십시오. - 대부분의 시스템 변수에서 세션 값을 설정하는 데는 특별한 권한이 필요하지 않으며 현재 세션에 영향을 주기 위해 모든 사용자가 수행할 수 있습니다. 일부 시스템 변수의 경우 세션 값을 설정하면 현재 세션 외부에 영향을 미칠 수 있으므로 특수 권한을 가진 사용자만 수행할 수 있는 제한된 작업입니다. 이전에는
SYSTEM_VARIABLES_ADMIN
또는SUPER
가 이러한 권한으로 적합했지만 두 권한 모두 세션 변수 설정 이외의 작업을 허용합니다. 새로운SESSION_VARIABLES_ADMIN
권한을 통해 다른 작업을 활성화하지 않고도 제한된 세션 변수를 설정할 수 있는 only 기능을 사용자에게 부여할 수 있습니다.SESSION_VARIABLES_ADMIN
에서 허용하는 모든 작업은SYSTEM_VARIABLES_ADMIN
또는SUPER
에서도 허용되므로, 후자의 권한 중 하나를 이미 가지고 있는 사용자는 효과적으로SESSION_VARIABLES_ADMIN
를 가지고 있으므로 명시적으로SESSION_VARIABLES_ADMIN
를 부여할 필요가 없습니다. 그러나 제한된 세션 시스템 변수를 수정할 목적으로만 사용자에게SYSTEM_VARIABLES_ADMIN
또는SUPER
권한을 부여한 경우, 관리자는SYSTEM_VARIABLES_ADMIN
와SUPER
를 취소하고 대신SESSION_VARIABLES_ADMIN
를 부여하여 사용자의 권한 사용 공간을 줄일 수 있습니다. 자세한 내용은 System Variable Privileges를 참조하십시오.
binlog_format
binlog_row_image
binlog_row_value_options
binlog_rows_query_log_events
debug
debug_sync
default_collation_for_utf8mb4
explicit_defaults_for_timestamp
gtid_next
histogram_generation_max_mem_size
original_commit_timestamp
sql_log_bin
sql_log_off
sql_require_primary_key
이전에 제한된 세션 변수에는 SYSTEM_VARIABLES_ADMIN
또는 SUPER
가 필요했지만 이제 SESSION_VARIABLES_ADMIN
로 설정할 수도 있습니다.이전에 제한되지 않았던 이러한 세션 변수는 이제 제한되며 설정에는 적어도 SESSION_VARIABLES_ADMIN
가 필요합니다(SYSTEM_VARIABLES_ADMIN
또는 SUPER
를 가진 사용자도 설정할 수 있습니다.
auto_increment_increment
auto_increment_offset
binlog_direct_non_transactional_updates
bulk_insert_buffer_size
character_set_filesystem
character_set_database
collation_database
pseudo_slave_mode
pseudo_thread_id
rbr_exec_mode
transaction_write_set_extraction
공간 데이터 지원 (Spatial Data Support)
- 이제
ST_Distance()
함수는 반환 값을 지정할 수 있는 선택적 세 번째 인수를 사용합니다. 허용되는 단위는 새로운INFORMATION_SCHEMA
ST_UNITS_OF_MEASURE
표에 나열된 단위입니다. Spatial Relation Functions That Use Object Shapes 및 The INFORMATION_SCHEMA ST_UNITS_OF_MEASURE Table를 참조하십시오.
SQL 구문 노트 (SQL Syntax Notes)
- 파생된 테이블 앞에
Lateral
키워드가 나와 동일한FROM
절에 있는 이전 테이블의 열을 참조할 수 있음을 지정할 수 있습니다.Lateral
로 지정된 파생 테이블은 쉼표로 구분된 테이블 목록 또는 조인 사양(JOIN
,INNER JOIN
,CROSS JOIN
,LEFT [OUTER] JOIN
또는RIGHT [OUTER] JOIN
)에서만FROM
절에서만 발생할 수 있습니다. 측면 파생 테이블을 사용하면 비측면 파생 테이블로 수행할 수 없거나 덜 효율적인 해결 방법이 필요한 특정 SQL 작업을 수행할 수 있습니다. Lateral Derived Tables를 참조하십시오.주석LABLE
은 이제 예약어이므로 식별자 인용 없이는 식별자로 사용할 수 없습니다.
[다음글] MySQL 8.0.14 릴리즈 노트 #2
[다음글] MySQL 8.0.14 릴리즈 노트 #3