このページは機械翻訳したものです。
SET PERSIST
および SET PERSIST_ONLY
を使用すると、グローバルシステム変数をデータディレクトリ内の mysqld-auto.cnf
オプションファイルに永続化できます (セクション13.7.6.1「変数代入の SET 構文」 を参照)。 ただし、すべてのシステム変数を永続化できるわけではありません。または、特定の制限条件下でのみ永続化できるわけではありません。 システム変数が永続的または永続的に制限されない理由を次に示します:
セッションシステム変数は永続化できません。 セッション変数はサーバーの起動時に設定できないため、永続化する理由はありません。
グローバルシステム変数には、サーバーホストへの直接アクセス権を持つユーザーのみが設定できるような機密データが含まれる場合があります。
グローバルシステム変数は読取り専用の場合があります (つまり、サーバーによってのみ設定されます)。 この場合、サーバーの起動時でも実行時でも、ユーザーが設定することはできません。
グローバルシステム変数は、内部使用のみを目的としている場合があります。
永続的でないシステム変数は、どのような状況でも永続化できません。 MySQL 8.0.14 の時点では、永続制限付きシステム変数は SET PERSIST_ONLY
で永続化できますが、次の条件を満たすユーザーのみが永続化できます:
persist_only_admin_x509_subject
システム変数は、SSL 証明書の X.509 サブジェクト値に設定されます。ユーザーは暗号化された接続を使用してサーバーに接続し、指定されたサブジェクト値で SSL 証明書を提供します。
ユーザーには、
SET PERSIST_ONLY
を使用するための十分な権限があります (セクション5.1.9.1「システム変数権限」 を参照)。
たとえば、protocol_version
は読取り専用であり、サーバーによってのみ設定されるため、どのような状況でも永続化できません。 一方、bind_address
は永続的に制限されるため、前述の条件を満たすユーザーが設定できます。
次のシステム変数は永続性がありません。 このリストは、進行中の開発によって変更される可能性があります。
Press CTRL+C to copyaudit_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_caching keyring_hashicorp_commit_auth_path keyring_hashicorp_commit_ca_path keyring_hashicorp_commit_caching keyring_hashicorp_commit_role_id keyring_hashicorp_commit_server_url keyring_hashicorp_commit_store_path keyring_hashicorp_role_id keyring_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 persisted_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
以外) で設定できます。 このリストは、進行中の開発によって変更される可能性があります。
Press CTRL+C to copyaudit_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_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_directories innodb_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 secure_file_priv sha256_password_auto_generate_rsa_keys sha256_password_private_key_path sha256_password_public_key_path shared_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_tokens_session_number
永続的に制限されたシステム変数を保持できるようにサーバーを構成するには、次の手順を使用します:
MySQL が暗号化された接続をサポートするように構成されていることを確認します。 セクション6.3.1「暗号化接続を使用するための MySQL の構成」を参照してください。
永続的に制限されたシステム変数を保持する機能を示す SSL 証明書の X.509 サブジェクト値を指定し、そのサブジェクトを持つ証明書を生成します。 セクション6.3.3「SSL および RSA 証明書とキーの作成」を参照してください。
-
persist_only_admin_x509_subject
を指定されたサブジェクト値に設定してサーバーを起動します。 たとえば、サーバーのmy.cnf
ファイルに次の行を挿入します:Press CTRL+C to copy[mysqld] persist_only_admin_x509_subject="subject-value"
Subject 値の形式は、
CREATE USER ... REQUIRE SUBJECT
で使用されるものと同じです。 セクション13.7.1.3「CREATE USER ステートメント」を参照してください。persist_only_admin_x509_subject
自体は実行時に永続化できないため、このステップは MySQL サーバーホストで直接実行する必要があります。 サーバーを再起動します。
指定された Subject 値を持つ SSL 証明書を、永続的に制限されたシステム変数の永続化を許可されるユーザーに配布します。
myclient-cert.pem
が、永続的に制限されたシステム変数を保持できるクライアントで使用される SSL 証明書であるとします。 openssl コマンドを使用して、証明書の内容を表示します:
Press CTRL+C to copyshell> openssl x509 -text -in myclient-cert.pem Certificate: 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 出力には、証明書サブジェクトの値が次のように表示されます:
Press CTRL+C to copyC=US, ST=IL, L=Chicago, O=MyOrg, OU=client, CN=MyCN
MySQL のサブジェクトを指定するには、次の形式を使用します:
Press CTRL+C to copy/C=US/ST=IL/L=Chicago/O=MyOrg/OU=client/CN=MyCN
サブジェクト値を使用してサーバー my.cnf
ファイルを構成します:
Press CTRL+C to copy[mysqld] persist_only_admin_x509_subject="/C=US/ST=IL/L=Chicago/O=MyOrg/OU=client/CN=MyCN"
新しい構成を有効にするには、サーバーを再起動します。
SSL 証明書 (およびその他の関連する SSL ファイル) を適切なユーザーに配布します。 このようなユーザーは、暗号化された接続を確立するために必要な証明書およびその他の SSL オプションを使用してサーバーに接続します。
X.509 を使用するには、クライアントは接続する --ssl-key
および --ssl-cert
オプションを指定する必要があります。 サーバーによって提供される公開証明書を検証できるように、--ssl-ca
も指定することをお薦めしますが、必須ではありません。 例:
Press CTRL+C to copyshell> mysql --ssl-key=myclient-key.pem --ssl-cert=myclient-cert.pem --ssl-ca=mycacert.pem
ユーザーに SET PERSIST_ONLY
を使用するための十分な権限があると仮定すると、永続的に制限されたシステム変数は次のように永続化できます:
Press CTRL+C to copymysql> SET PERSIST_ONLY socket = '/tmp/mysql.sock'; Query OK, 0 rows affected (0.00 sec)
永続的に制限されたシステム変数を保持できるようにサーバーが構成されていない場合、またはユーザーがその機能に必要な条件を満たしていない場合は、エラーが発生します:
Press CTRL+C to copymysql> SET PERSIST_ONLY socket = '/tmp/mysql.sock'; ERROR 1238 (HY000): Variable 'socket' is a non persistent read only variable