MySQL 8.0.34 릴리즈 노트
MySQL 8.0.34 변동 사항 (2023-07-18 GA)
계정 관리 참고 사항
-
이제 새로운 비밀번호 유효성 검사 시스템 변수를 통해 사용자가 자신의 MySQL 계정 비밀번호를 바꾸려고 할 때 변경해야 하는 최소 문자 수를 구성하고 적용할 수 있습니다. 이 새로운 확인 설정은 현재 비밀번호의 총 문자 수에 대한 백분율입니다. 예를 들어, validate_password.changed_characters_percentage의 값이 50인 경우, 변경하려는 계정 비밀번호에 있는 문자의 절반 이상이 현재 비밀번호에 없어야 하며, 그렇지 않으면 비밀번호가 거부됩니다.
이 새로운 기능은 DBA가 비밀번호 관리를 더욱 완벽하게 제어할 수 있는 여러 기능 중 하나입니다. 자세한 내용은 비밀번호 관리를 참고합니다. (WL #15751)
감사 로그 참고 사항
-
MySQL 8.0.33에서는, audit_log 플러그인에 JSON 필터 테이블을 어떤 데이터베이스에 저장할 것인지 선택하는 기능이 추가되었습니다. 이제 플러그인 설치 스크립트를 실행할 때 기본 시스템 데이터베이스인 mysql 대신 다른 데이터베이스를 지정할 수 있습니다. 명령줄에서 audit_log_database 서버 시스템 변수(또는 -D database_name)를 대체 데이터베이스 이름과 함께 사용하면 됩니다. 예를 들면:
$> mysql -u root -D database_name -p < audit_log_filter_linux_install.sql
audit_log 플러그인 설치 스크립트 사용에 대한 자세한 내용은, MySQL Enterprise Audit 설치 또는 제거를 참고합니다. (버그 #35252268)
MySQL Enterprise Audit now supports using the scheduler component to configure and execute a recurring task to flush the in-memory cache. For setup instructions, seeEnabling the Audit Log Flush Task. (WL #15567)- 이제 MySQL Enterprise Audit에서 스케줄러 구성 요소를 사용하여 인메모리 캐시
를플러시하는를 반복하는 작업을 구성하고 실행할 수 있습니다. 설정 지침은, 감사 로그 플러시 작업 활성화를 참조하십시오. (WL #15567)
바이너리 로그
-
Several이제functions now are added to thelibmysqlclient.so
shared공유library라이브러리에that enable developers to access a개발자가 MySQLserver서버binary바이너리log:로그에 액세스할 수 있는 몇 가지 함수가 추가되었습니다:mysql_binlog_open()
,mysql_binlog_fetch()
,and및mysql_binlog_close()
.Our기여해thanks주신to유라Yura소로킨에게Sorokin for the contribution.감사드립니다. (Bug버그 #110658,Bug버그 #35282154)
C API 참고 사항
-
In호출the함수에서,calling function,lenis initialized to 0 and never changed ifnet->
vio가vioisnull인null.경우Thislen이fix0으로adds초기화되고a다시check변경되지of않는
문제가netbefore있었습니다.dereferencing이번
수정을 통해 vio를 역참조하기 전 net을 먼저 검사하는 기능이 추가 되었습니다.vio
기여해Our주신thanks메타에게to Meta for the contribution.감사드립니다. (Bug버그 #30809590) -
A특정variable코드in경로에서the비동기
클라이언트의asyncclient변수가was초기화되지uninitialized않는in문제가certain있었습니다.code항상paths.변수를It초기화함으로써is fixed by always initializing the variable.수정하였습니다.Our기여해thanks주신to메타에게Meta for the contribution.감사드립니다. (Bug버그 #30809590)
컴파일 참고 사항
-
Microsoft Windows: For Windows, improved
MSVC_CPPCHECK
support; and check for MSVC warnings similar to "maintainer" mode. For example, check after all third party configurations are complete. (Bug #35283401)References: See also: Bug #34828882.
-
Microsoft Windows: For Windows builds, improved WIN_DEBUG_NO_INLINE=1 support; usage would exceed the library limit of 65535 objects. (Bug #35259704)
-
Upgraded the bundled robin-hood-hashing from v3.8.1 to v3.11.5. (Bug #35448980)
-
Removed the unused
extra/libcbor/doc/
directory asextra/libcbor/doc/source/requirements.txt
inspired bogus pull requests on GitHub. (Bug #35433370) -
Updated the bundled ICU files from version 69.1 to version 73 for the
icu-data-files
package. (Bug #35353708) -
ZSTD sources bundled in the source tree were upgraded to ZSTD 1.5.5 from 1.5.0. (Bug #35353698)
-
Initialize the internal
MEM_ROOT
class memory with garbage using the TRASH macro to make easier to reproduce bugs caused by reading initialized memory allocated from MEM_ROOT. (Bug #35277644) -
We now determine stack direction at runtime rather than at configure time. (Bug #35181008)
-
Added the
OPTIMIZE_SANITIZER_BUILDS
CMake option that adds-O1 -fno-inline
to sanitizer builds. It defaults to ON. (Bug #35158758) -
Changed the minimum Bison version requirement from v2.1 to v3.0.4. For macOS, this may require installing Bison via a package manager such as Homebrew. (Bug #35154645, Bug #35191333)
-
MySQL now sets LANG=C in the environment when executing
readelf
to avoid problems with non-ASCII output.Our thanks to Kento Takeuchi for the contribution. (Bug #111190, Bug #35442825)
-
On macOS, MySQL would not compile if rapidjson was installed via Homebrew. The workaround was to
brew unlink rapidjson
. (Bug #110736, Bug #35311140)References: This issue is a regression of: Bug #35006191.
-
MySQL would not build with
-DWITH_ZLIB=system
; it'd complain about not finding the system zlib library despite finding it. (Bug #110727, Bug #110745, Bug #35307674, Bug #35312227)
사용 중단 및 제거 기능 참고 사항
-
Important Change: Since MySQL provides other means of performing database dumps and backups with the same or additional functionality, including mysqldump and MySQL Shell Utilities, the mysqlpump client utility program has become redundant, and is now deprecated. Invocation of this program now produces a warning. You should keep in mind that mysqlpump is subject to removal in a future version of MySQL, and move applications depending on it to another solution, such as those mentioned previously. (WL #15652)
-
Replication: The
sync_relay_log_info
server system variable is deprecated in this release, and getting or setting this variable or its equivalent startup option--sync-relay-log-info
now raises a warning.Expect this variable to be removed in a future version of MySQL; applications which make use of it should be rewritten not to depend on it before this happens. (Bug #35367005, WL #13968)
-
Replication: The
binlog_format
server system variable is now deprecated, and subject to removal in a future version of MySQL. The functionality associated with this variable, that of changing the binary logging format, is also deprecated.The implication of this change is that, when
binlog_format
is removed, only row-based binary logging, already the default in MySQL 8.0, will be supported by the MySQL server. For this reason, new installations should use only row-based binary logging, and existing ones using the statement-based or mixed logging format should be migrated to the row-based format. See Replication Formats, for more information.The system variables
log_bin_trust_function_creators
andlog_statements_unsafe_for_binlog
, being useful only in the context of statement-based logging, are now also deprecated, and are thus also subject to removal in a future release of MySQL.Setting or selecting the values of any of the variables just mentioned now raises a warning. (WL #13966, WL #15669)
-
Group Replication: The
group_replication_recovery_complete_at
server system variable is now deprecated, and setting it produces a warning. You should expect its removal in a future release of MySQL. (WL #15460) -
The
mysql_native_password
authentication plugin now is deprecated and subject to removal in a future version of MySQL.CREATE USER
,ALTER USER
, andSET PASSWORD
operations now insert a deprecation warning into the server error log if an account attempts to authenticate usingmysql_native_password
as an authentication method. (Bug #35336317) -
Previously, if the
audit_log
plugin was installed without the accompanying audit tables and functions needed for rule-based filtering, the plugin operated in legacy filtering mode. Now, legacy filtering mode is deprecated. New deprecation warnings are emitted for legacy audit log filtering system variables. These deprecated variables are either read-only or dynamic.(Read-only)
audit_log_policy
now writes a warning message to the MySQL server error log during server startup when the value is notALL
(default value).(Dynamic)
audit_log_include_accounts
,audit_log_exclude_accounts
,audit_log_statement_policy
, andaudit_log_connection_policy
. Dynamic variables print a warning message based on usage:-
Passing in a non-NULL value to
audit_log_include_accounts
oraudit_log_exclude_accounts
during MySQL server startup now writes a warning message to the server error log. -
Passing in a non-default value to
audit_log_statement_policy
oraudit_log_connection_policy
during MySQL server startup now writes a warning message to the server error log.ALL
is the default value for both variables. -
Changing an existing value using
SET
syntax during a MySQL client session now writes a warning message to the client log. -
Persisting a variable using
SET PERSIST
syntax during a MySQL client session now writes a warning message to the client log.
(WL #11248)
-
-
MySQL enables control of FIPS mode on the server side and the client side using a system variable and client option. Application programs can use the
MYSQL_OPT_SSL_FIPS_MODE
option tomysql_options()
to enable FIPS mode on the client. Alternatively, it is possible to handle FIPS mode directly through OpenSSL configuration files rather than using the current server-side system variable and client-side options. When MySQL is compiled using OpenSSL 3.0, and an OpenSSL library and FIPS Object Module are available at runtime, the server reads the OpenSSL configuration file and respects the preference to use a FIPS provider, if one is set. OpenSSL 3.0 is certified for use with FIPS.To favor the OpenSSL alternative, the
ssl_fips_mode
server system variable,--ssl-fips-mode
client option, and theMYSQL_OPT_SSL_FIPS_MODE
option now are deprecated and subject to removal in a future version of MySQL. A deprecation warning prints to standard error output when an application uses theMYSQL_OPT_SSL_FIPS_MODE
option or when a client user specifies the--ssl-fips-mode
option on the command line, through option files, or both.Prior to being deprecated, the
ssl_fips_mode
server-side system variable was dynamically settable. It is now a read-only variable (acceptsSET PERSIST_ONLY
, but notSET PERSIST
orSET GLOBAL
). When specified on the command line or in themysqld-auto.cnf
option file (withSET PERSIST_ONLY
) a deprecation warning prints to the server error log. (WL #15631) -
The mysql_ssl_rsa_setup program originally provided a simple way for community users to generate certificates manually, if OpenSSL was installed on the system. Now, mysql_ssl_rsa_setup is deprecated because MySQL Community Edition no longer supports using yaSSL as the SSL library, and source distributions no longer include yaSSL. Instead, use MySQL server to generate missing SSL and RSA files automatically at startup (see Automatic SSL and RSA File Generation). (WL #15668)
-
The
keyring_file
andkeyring_encrypted_file
plugins now are deprecated. These keyring plugins are superseded by thecomponent_keyring_file
andcomponent_keyring_encrypted_file
components. For a concise comparison of keyring components and plugins, see Keyring Components Versus Keyring Plugins. (WL #15659) -
Previously, the MySQL server processed a version-specific comment without regard as to whether any whitespace followed the MySQL version number contained within it. For example, the comments
/*!80034KEY_BLOCK_SIZE=1024*/
and/*!80034 KEY_BLOCK_SIZE=1024*/
were handled identically. Beginning with this release, when the next character following the version number in such a comment is neither a whitespace character nor the end of the comment, the server issues a warning: Immediately starting the version comment after the version number is deprecated and may change behavior in a future release. Please insert a whitespace character after the version number.You should expect the whitespace requirement for version-specific comments to become strictly enforced in a future version of MySQL.
See Comments, for more information. (WL #15686)
-
The MySQL client library currently supports performing an automatic reconnection to the server if it finds that the connection is down and an application attempts to send a statement to the server to be executed. Now, this feature is deprecated and subject to removal in a future release of MySQL.
The related
MYSQL_OPT_RECONNECT
option is still available but it is also deprecated. C API functionsmysql_get_option()
andmysql_options()
now write a deprecation warning to the standard error output when an application specifiesMYSQL_OPT_RECONNECT
. (WL #15766)
Performance Schema 참고 사항
-
Performance Schema의 clone_status 테이블의 gtid_executed 컬럼에 사용되던 데이터 타입이 VARCHAR (4096)에서 LONGTEXT로 변경되었습니다. (버그 #109171, 버그 #34828542)
SQL 문법 참고 사항
-
이제
CURRENT_USER()can now be used as a default value forVARCHARandTEXTcolumns inCREATE TABLE
and및ALTER TABLE ... ADD COLUMN
statements.문에서 VARCHAR와 TEXT컬럼의 default 값으로 CURRENT_USER()를 사용할 수 있습니다.The같은functions경우에서SESSION_USER()
,USER()
및 SYSTEM_USER() 함수도 지원됩니다. 예를 들어,and다음
구문들의SYSTEM_USER()are경우also이제supported여기에in표시된all것과of유사하게the작동하며,cases정확한just출력은mentioned.사용자By환경에way따라of달라집니다:example,
mysql> SELECT CURRENT_USER();
+-------------------+
| CURRENT_USER() |
+-------------------+
| sakila@localhost |
+-------------------+
1 row in set (0.00 sec)
mysql> CREATE TABLE t (
> c1 VARCHAR(288) DEFAULT (USER()),
> c2 VARCHAR(288) DEFAULT (CURRENT_USER()),
> c3 VARCHAR(288) DEFAULT (SESSION_USER()),
> c4 VARCHAR(288) DEFAULT (SYSTEM_USER())
> );
Query OK, 0 rows affected (0.04 sec)
mysql> INSERT INTO t VALUES ROW();
Query OK, 1 row affected (0.01 sec)
mysql> TABLE t;
+-------------------+-------------------+-------------------+-------------------+
| c1 | c2 | c3 | c4 |
+-------------------+-------------------+-------------------+-------------------+
| sakila@localhost | sakila@localhost | sakila@localhost | sakila@localhost |
+-------------------+-------------------+-------------------+-------------------+
1 row in set (0.00 sec)
When이러한 used방식으로 in사용하는 this경우, way,이 these함수들이 functions are also included in the output of SHOW CREATE TABLE
and및 SHOW COLUMNS
의 출력에도 포함되며, and referenced in the COLUMN_DEFAULT column of the Information SchemaSchema의 COLUMNS
table테이블의 whereCOLUMN_DEFAULT applicable.열에서도 표기됩니다.
If이러한 you컬럼에 need가능한 to최대 insure길이의 that값이 values확실히 having저장될 the수 maximum있는지 possible확인하려면, length열에 can최소 be288자를 stored수용할 in수 such있는지 a확인해야 column, you should make sure that the column can accommodate at least 288 characters합니다. (255사용자 for이름으로 the255자, user호스트 name이름으로 and32자, 32구분 for기호 the@로 host1글자 name,추가되어 plus총 1288자) for이러한 the이유로, separator위 @)함수 중 하나를 CHAR 열의 기본값으로 사용할 수도 있지만 에러가 발생하거나 값이 잘릴 위험이 있으므로 권장하지는 않습니다. For this reason—while it is possible to use one of these functions as the default for a CHAR column, it is not recommended due to the risk of errors or truncation of values. (Bug버그 #17809, Bug버그 #11745618)