会话系统变量不能持久保存。会话变量不能在服务器启动时设置,因此没有理由持久化它们。 全局系统变量可能涉及敏感数据,因此只能由直接访问服务器主机的用户进行设置。 全局系统变量可能是只读的(也就是说,仅由服务器设置)。在这种情况下,用户根本无法设置它,无论是在服务器启动时还是在运行时。 全局系统变量可能只用于内部使用。设置保存
而且设置PERSIST_ONLY
控件中持久化全局系统变量mysqld-auto.cnf
数据目录中的选项文件(参见
非持久化系统变量在任何情况下都不能持久化。从MySQL 8.0.14开始,可以持久化受限制的系统变量设置PERSIST_ONLY
,但只有符合下列条件的用户才可申请:
的
persist_only_admin_x509_subject
系统变量设置为SSL证书X.509主题值。用户使用加密连接连接到服务器,并提供具有指定Subject值的SSL证书。
用户具有足够的使用权限
设置PERSIST_ONLY
(见protocol_version
仅由服务器读取和设置,因此在任何情况下都不能持久保存。另一方面,bind_address
是持久化限制的,因此可以由满足上述条件的用户设置。以下系统变量是非持久性的。这个列表可能会随着正在进行的开发而改变。
Audit_log_current_session audit_log_filter_id caching_sha2_password_digest_rounds character_set_system core_file have_statement_timeout have_symlink hostname innodb_version keyring_hashicorp_auth_path keyring_hashicorp_ca_path keyring_hashicorp_commit_auth_path keyring_hashicorp_commit_ca_path keyring_hashicorp_commit_ca_path keyring_hashicorp_commit_role_id keyring_hashicorp_commit_server_url keyring_hashicorp_commit_store_path keyring_hashicorp_auth_path keyring_hashicorp_auth_path keyring_hashicorp_commit_ca_path keyring_hashicorp_commit_ca_path keyring_hashicorp_commit_role_idKeyring_hashicorp_secret_id keyring_hashicorp_server_url keyring_hashicorp_store_path large_files_support large_page_size license locked_in_memory log_bin log_bin_basename log_bin_index lower_case_file_system ndb_version ndb_version_string persist_only_admin_x509_subject persist_globals_load protocol_version relay_log_basename relay_log_index server_uuid skip_external_locking system_time_zone version_comment version_compile_machine version_compile_os version_compile_zlib
受持久性限制的系统变量是那些只读的,可以在命令行或选项文件中设置的变量,而不是
persist_only_admin_x509_subject
而且persisted_globals_load
.这个列表可能会随着正在进行的开发而改变。Audit_log_file audit_log_format auto_generate_certs basedir bind_address caching_sha2_password_auto_generate_rsa_keys caching_sha2_password_private_key_path caching_sha2_password_private_key_path caching_sha2_password_public_key_path character_sets_dir daemon_memcached_engine_lib_name daemon_memcached_engine_lib_path daemon_memcached_option datadir default_authentication_plugin ft_stopword_file init_file innodb_buffer_pool_load_at_startup innodb_data_file_path innodb_data_home_dir innodb_dedicated_server innodb_directoriesInnodb_force_load_corrupted innodb_log_group_home_dir innodb_page_size innodb_read_only innodb_temp_data_file_path innodb_temp_tablespaces_dir innodb_undo_directory innodb_undo_tablespaces keyring_encrypted_file_data keyring_encrypted_file_password lc_messages_dir log_error mecab_rc_file named_pipe pid_file plugin_dir port relay_log relay_log_info_file replica_load_tmpdir secure_file_priv sha256_password_auto_generate_rsa_keys sha256_password_private_key_path sha256_password_public_key_pathShared_memory shared_memory_base_name skip_networking slave_load_tmpdir socket ssl_ca ssl_capath ssl_cert ssl_crl ssl_crlpath ssl_key tmpdir version_tokenens_session_number . Shared_memory shared_memory_base_name skip_networking slave_load_tmpdir socket ssl_ca ssl_capath ssl_crl ssl_crlpath ssl_key tmpdir version_tokenens_session_number
要配置服务器以启用持久化受持久化限制的系统变量,请使用以下过程:
确保MySQL配置为支持加密连接。看到
指定SSL证书X.509 Subject值,该值表示能够持久化受持久化限制的系统变量,并生成具有该Subject的证书。看到
使用以下命令启动服务器
persist_only_admin_x509_subject
设置为指定的Subject值。例如,将这些行放在服务器中my.cnf
文件:(mysqld) persist_only_admin_x509_subject = "主题"
Subject值的格式与用于相同
创建用户……要求主题
.看到persist_only_admin_x509_subject
本身不能在运行时持久。重新启动服务器。
将具有指定Subject值的SSL证书分发给允许持久化受持久化限制的系统变量的用户。
假设
myclient-cert.pem
是客户端使用的SSL证书,客户端可以持久化受持久化限制的系统变量。控件显示证书内容openssl命令:Shell > openssl x509 -text -in myclient-cert. exe证书:Data: Version: 3 (0x2) Serial Number: 2 (0x2) Signature Algorithm: md5WithRSAEncryption Issuer: C=US, ST=IL, L=Chicago, O=MyOrg, OU=CA, CN=MyCN Validity Not Before: Oct 18 17:03:03 2018 GMT Not After: Oct 15 17:03:03 2028 GMT Subject: C=US, ST=IL, L=Chicago, O=MyOrg, OU=client, CN=MyCN…
的openssl显示证书的Subject值为:
C=US, ST=IL, L=Chicago, O=MyOrg, OU=client, CN=MyCN
要指定MySQL的主题,使用以下格式:
圣= IL / L / C =我们/ =芝加哥/ O = MyOrg OU =客户/ CN = MyCN
配置服务器
my.cnf
文件的Subject值:(mysqld) persist_only_admin_x509_subject = " / C =我们/圣= IL / L =芝加哥/ O = MyOrg OU =客户/ CN = MyCN”
重新启动服务器,使新配置生效。
将SSL证书(以及任何其他关联的SSL文件)分发给适当的用户。这样的用户然后使用证书和建立加密连接所需的任何其他SSL选项连接到服务器。
要使用X.509,客户端必须指定
——ssl密钥
而且——ssl-cert
连接选项。这是推荐的,但不是必须的——ssl-ca
还要指定,以便可以验证服务器提供的公共证书。例如:壳> mysql - ssl密钥= myclient-key。pem - ssl-cert = myclient-cert。pem - ssl-ca = mycacert.pem
假设用户有足够的权限来使用
设置PERSIST_ONLY
,持久化限制的系统变量可以像这样持久化:mysql> SET PERSIST_ONLY socket = '/tmp/mysql.sock';查询OK, 0行受影响(0.00秒)
如果服务器没有配置为启用持久化受持久化限制的系统变量,或者用户不满足该能力所需的条件,则会发生错误:
mysql> SET PERSIST_ONLY socket = '/tmp/mysql.sock';错误1238 (HY000):变量'socket'是非持久只读变量