MySQL中不持久和持久受限系统变量的简要介绍

MySQL中不持久和持久受限系统变量的简要介绍SET PERSIST和SET PERSIST_ONLY是MySQL中用于将全局系统变量的值持久化到数据目录下的mysqld-auto.cnf选项文件的命令。但是,并非所有的系统变

SET PERSIST 和SET PERSIST_ONLY 是MySQL 命令,用于将全局系统变量的值保存到数据目录中的mysqld-auto.cnf 选项文件中。然而,并非所有系统变量都可以持久化,并且只有在某些有限的条件下才可以持久化。系统变量不持久或持久性有限的原因包括:

会话系统变量:会话变量特定于每个客户端会话,无法在服务器启动时设置,因此没有理由让它们持久化。

敏感数据:一些全局系统变量可能包含敏感数据,例如密码和密钥。此类变量只能由能够直接访问服务器主机的用户设置,而不是通过持久文件设置。

只读变量:一些全局系统变量是只读的。即只能由服务器本身设置,不能由用户使用SET命令更改。当然,这样的变量不能持久化。

内部使用:某些全局系统变量专为MySQL 服务器内部使用而设计,通常不需要用户修改或保留。

从MySQL 8.0.14 开始,如果系统变量有持久化限制,可以使用SET PERSIST_ONLY 命令使这些变量的值持久化,前提是满足以下条件: 仅适用于

persist_only_admin_x509_subject 系统变量设置为SSL 证书的X.509 主题值。该值通常用于指定允许哪些具有特定SSL 证书的用户使用SET PERSIST_ONLY 命令。

用户必须使用加密连接(例如SSL/TLS)连接到服务器,并在连接时提供具有指定主题值的SSL 证书。

用户必须具有足够的权限才能使用SET PERSIST_ONLY 命令。通常这需要SUPER 权限或类似权限。

此功能为管理员提供了一种安全的方法来保留某些系统变量的值,同时将此操作限制为仅持有特定SSL 证书的用户。这降低了未经授权的用户更改系统配置的风险。

请注意,并非所有具有有限持久性的系统变量都可以使用SET PERSIST_ONLY 进行持久化。每个系统变量都有其独特的持久性限制和条件。

例如,protocol_version是MySQL服务器本身设置的只读系统变量,因此用户无法更改或保留其值。

此外,bind_address 是一个具有有限持久性的系统变量。指定MySQL 服务器应侦听的IP 地址。如果满足某些条件(例如上面提到的SSL 证书和权限要求),用户可以使用SET PERSIST 或SET PERSIST_ONLY 使bind_address 值持久化。

以下是一些通常被认为是非持久性的系统变量(请注意,随着MySQL 版本的发展,此列表可能会发生变化):

审核日志_当前会话

审计日志过滤器id

caching_sha2_password_digest_rounds

字符集系统

核心文件

有语句超时

有符号链接

主机名

innodb_版本

keyring_bashicorp_auth_path

keyring_bashicorp_ca_path

keyring_bashicorp_caching

keyring_bashicorp_commit_auth_path

keyring_bashicorp_commit_ca_path

keyring_bashicorp_commit_caching

keyring_bashicorp_commit_role_id

keyring_bashicorp_commit_server_url

keyring_bashicorp_commit_store_path

keyring_bashicorp_role_id

keyring_bashicorp_secret_id

keyring_bashicorp_server_url

keyring_bashicorp_store_path

大文件支持

大页面尺寸

执照

锁在记忆里

登录

log_bin_basename

日志bin索引

小写文件系统

ndb_版本

ndb_版本_字符串

persist_only_admin_x509_subject

持久全局负载

协议版本

中继日志库名称

中继日志索引

服务器uuid

跳过外部锁

系统时区

版本_评论

版本_编译_机器

版本编译操作系统

版本_编译_zlib

持久受限系统变量是只读的,可以在命令行或选项文件中设置(特殊变量persist_only_admin_x509_subject 和persisted_globals_load 除外)。

这些有限持久性变量通常会触及服务器配置的关键部分,需要管理员级别的权限才能修改,并且有时会通过安全方式(例如使用SSL 证书)进行修改以验证管理员的身份。

审计日志文件

审核日志格式

自动生成证书

基目录

绑定地址

caching_sha2_password_auto_generate_rsa_keys

caching_sha2_password_private_key_path

caching_sha2_password_public_key_path

字符集目录

daemon_memcached_engine_lib_name

daemon_memcached_engine_lib_path

daemon_memcached_option

数据目录

默认身份验证插件

ft_stopword_file

初始化文件

innodb_buffer_pool_load_at_startup

innodb_数据文件_路径

innodb_data_home_dir

innodb_d专用服务器

innodb_目录

innodb_force_load_corrupted

innodb_log_group_home_dir

innodb_page_size

innodb_只读

innodb_temp_data_file_path

innodb_temp_tablespaces_dir

innodb_undo_directory

innodb_undo_表空间

密钥环加密的文件数据

密钥环加密文件密码

lc_messages_dir

记录错误

mecab_rc_文件

命名管道

pid_文件

插件目录

港口

中继日志

中继日志信息文件

副本加载临时目录

安全文件权限

sha256_password_auto_generate_rsa_keys

sha256_password_private_key_path

sha256_password_public_key_path

共享内存

共享内存基名称

跳过_网络

从属加载临时目录

插座

ssl_ca

ssl_capath

ssl_证书

ssl_crl

ssl_crl路径

ssl_key

临时目录

version_tokens_session_number

您可以使用以下步骤来配置MySQL 服务器,以启用具有有限持久性的系统变量的持久性。

确保您的MySQL 配置支持加密连接。

您可能需要配置SSL/TLS参数,例如ssl-ca、ssl-cert和ssl-key,以确保服务器和客户端之间的加密通信。

指定SSL 证书X.509 主题值。

为SSL 证书X.509 主题选择一个值,该值标识能够保留受限系统变量的用户。接下来,生成带有主题的证书。这通常涉及使用OpenSSL 或其他SSL 工具生成证书和密钥。

启动服务器时设置persist_only_admin_x509_subject。

在MySQL 服务器配置文件(例如my.cnf 或my.ini)中,将persist_only_admin_x509_subject 参数设置为指定的主题值。通过这种方式,服务器知道哪些具有特定SSL 证书的用户可以使用SET PERSIST 或SET PERSIST_ONLY 命令以有限的持久性保留系统变量。

例如,将以下行添加到[mysqld] 部分:

[mysqld]

persist_only_admin_x509_subject=\’主题值\’

主题值的格式与CREATE USER . REQUIRE SUBJECT 相同。

此步骤必须直接在MySQL 服务器主机上执行,因为persist_only_admin_x509_subject 本身无法在运行时持久化。

重启MySQL服务器并分发SSL证书。

将具有指定主题值的SSL 证书分发给需要保留受限系统变量的用户。这些用户必须使用此证书与MySQL 服务器建立加密连接,并在连接时验证其身份。

分发证书时,请确保以下事项:

证书分发可以通过电子邮件、安全文件共享服务、内部网站或其他安全方式完成。确保只有授权用户才能检索证书。

维护证书安全以避免未经授权的访问。用户知道如何配置客户端以使用此证书进行连接。用户了解自己的权限和责任,不得滥用权限。

假设myclient-cert.pem 是客户端使用的SSL 证书,可以保留受限制的系统变量。使用openssl 命令查看证书的内容。

$ openssl x509 -text -in myclient-cert.pem

证书:

数据:

版本: 3 (0x2)

序列号: 2 (0x2)

包含签名算法: md5RSA加密

出版商: C=US、ST=IL、L=芝加哥、O=MyOrg、OU=CA、CN=MyCN

有效的

此前: 10 月18 日17:03:03 2018 GMT

: 10 月15 日之后17:03:03 2028 GMT

主题: C=US、ST=伊利诺伊州、L=芝加哥、O=MyOrg、OU=客户、CN=MyCN

.

当您使用OpenSSL 工具生成或查看SSL 证书时,输出包括有关证书的各种信息。其中之一是主题值。主题是描述证书所有者的字段,通常包括识别信息,例如国家/地区名称、组织名称、组织单位名称或通用名称。

在OpenSSL 输出中显示证书的主题值的示例如下:

C=美国、ST=伊利诺伊州、L=芝加哥、O=MyOrg、OU=客户、CN=MyCN

要指定MySQL 主题,请使用以下格式:

/C=US/ST=IL/L=芝加哥/O=MyOrg/OU=Client/CN=MyCN

使用主题值配置服务器的my.cnf 文件。

[mysqld]

persist_only_admin_x509_subject=\’/C=US/ST=IL/L=芝加哥/O=MyOrg/OU=client/CN=MyCN\’

重新启动服务器以使新配置生效。

将SSL 证书(和其他相关SSL 文件)分发给适当的用户。这些用户使用证书和建立加密连接所需的其他SSL 选项连接到服务器。

要使用X.509,客户端必须使用–ssl-key 和–ssl-cert 选项进行连接。建议同时指定两者,但不是必需的

–ssl-ca 验证服务器提供的公共证书。例如:

$ mysql –ssl-key=myclient-key.pem –ssl-cert=myclient-cert.pem –ssl-ca=mycacert.pem

假设用户有足够的权限使用SET PERSIST_ONLY,受限制的系统变量可以按如下方式持久化:

mysql SET PERSIST_ONLY 套接字=\’/tmp/mysql.sock\’;

查询正常,0 行受影响(0.00 秒)

如果服务器未配置为启用受限系统变量的持久性,或者用户不满足此功能的要求,则会发生错误。

mysql SET PERSIST_ONLY 套接字=\’/tmp/mysql.sock\’;

错误1238 (HY000): 变量“socket”是非持久只读变量

#以上对MySQL中非持久性和持久性受限系统变量的简单介绍相关内容来源网络,仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91963.html

(0)
CSDN的头像CSDN
上一篇 2024年6月24日
下一篇 2024年6月24日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注