as MySQL 8.0.16,MySQL Server执行以前处理的升级任务mysql_upgrade.(详情,请参阅第2.11.3节,“MySQL升级过程升级了什么”)。最后,mysql_upgrade.不必要地,并被贬值,因为该版本;我们希望在MySQL的未来版本中移除它。因为mysql_upgrade.不再执行升级任务,它无条件地退出状态0。
每次升级MySQL时,您都应该执行mysql_upgrade.,它寻找与升级的MySQL服务器的不兼容:
它升级系统表中的系统表
mysql.
架构使您可以利用可能添加的新特权或功能。它升级了性能架构,
INFORMATION_SCHEMA
, 和sys
架构。它检查了用户模式。
如果mysql_upgrade.发现表有可能的不兼容,它执行表检查,如果找到问题,请尝试表修复。如果表无法修复,请参阅第2.11.13节,“重建或修复表或索引”用于手动表修复策略。
mysql_upgrade.直接与MySQL Server进行通信,将其发送执行升级所需的SQL语句。
您应该始终备份当前的MySQL安装之前执行升级。看到第7.2节“数据库备份方法”.
一些升级不兼容可能需要特殊处理之前升级MySQL安装和运行mysql_upgrade..看到第2.11节“升级mysql”,有关确定任何此类不兼容性是否适用于您的安装以及如何处理它们的说明。
用mysql_upgrade.像这样:
确保服务器正在运行。
邀请mysql_upgrade.升级系统表中的系统表
mysql.
模式和检查和修复其他模式中的表:mysql_upgrade [选项]
停止服务器并重新启动它,以便使任何系统表更改生效。
如果有多个MySQL服务器实例需要升级,请调用mysql_upgrade.具有适合连接到每个所需服务器的连接参数。例如,在第3306到3308上的本地主机上运行的服务器,通过连接到适当的端口升级它们中的每一个:
mysql_upgrade - protocol = tcp -p 3306 [其他_选项] mysql_upgrade - protocol = tcp -p 3307 [其他_选项] mysql_upgrade - protocol = tcp-p 3308 [其他_选项]
在UNIX上的本地主机连接,——= tcp协议
选项强制使用TCP / IP而不是UNIX套接字文件的连接。
默认情况下,mysql_upgrade.作为mysql运行根
用户。如果是根
运行时密码已过期mysql_upgrade.,它显示一条消息,您的密码已过期mysql_upgrade.结果失败了。要纠正此错误,请重置根
使其失效并运行的密码mysql_upgrade.一次。首先,连接到服务器根
:
shell> mysql -u root -p输入密码:**** < - 在此处输入root密码
使用密码使用改变用户
:
mysql> ALTER USER USER() IDENTIFIED BY 'root密码'
然后退出mysql.和运行mysql_upgrade.再次:
壳> mysql_upgrade [选项]
如果您使用该服务器运行服务器disabled_storage_engines
系统变量设置为禁用某些存储引擎(例如,MyISAM
),mysql_upgrade.可能会因错误而失败:
mysql_upgrade: [ERROR] 3161: Storage engine MyISAM is disabled(不允许创建表)。
要处理此操作,请重新启动服务器disabled_storage_engines
残疾人士。然后你应该能够运行mysql_upgrade.成功地。之后,重新启动服务器disabled_storage_engines
设置为其原始值。
除非用- upgrade-system-tables
选项,mysql_upgrade.根据需要处理所有用户模式中的所有表。表检查可能需要很长时间才能完成。每个表都被锁定,因此在处理时对其他会话不可用。检查和修复操作可能是耗时的,特别是对于大型表。表检查使用升级
选项检查表
声明。有关此选项的详细信息,请参见第13.7.3.2节“检查表陈述”.
mysql_upgrade.使用当前MySQL版本号标记所有选中和修复的表。这确保了下次运行时mysql_upgrade.使用相同的服务器版本,可以确定是否有任何需要再次检查或修复给定表格。
mysql_upgrade.将MySQL版本号保存在一个名为mysql_upgrade_info
在数据目录中。这用于快速检查是否已检查此版本的所有表,以便可以跳过表格检查。要忽略此文件并无论如何执行检查,请使用- 力量
选项。
的mysql_upgrade_info
文件是弃用;我们希望在MySQL的未来版本中移除它。
mysql_upgrade.检查mysql.user.
系统表行和,对于空的任何行插入
Column,将该列设置为'mysql_native_password'
如果凭据使用与插件兼容的散列格式。密码散列在4.1之前的行必须手动升级。
mysql_upgrade.不升级时区表或帮助表的内容。有关升级说明,请参阅第5.1.15节“MySQL Server时区支持”, 和第5.1.17节,“服务器端帮助支持”.
除非用- skip-sys-schema
选项,mysql_upgrade.安装sys
架构如果未安装它,并且否则将其升级到当前版本。如果一个错误会发生错误sys
架构存在但没有版本
视图,假设它的缺席表示用户创建的模式:
SYS架构存在,没有系统.Version视图。如果您创建了用户创建的SYS架构,则必须重命名升级以取得成功。
在这种情况下,要升级,请删除或重命名现有的sys
模式。
mysql_upgrade.支持以下选项,可以在命令行或中指定[mysql_upgrade]
和[客户]
选项文件组。有关MySQL程序使用的选项文件的信息,请参阅第4.2.2.2节“使用选项文件”。.
表4.10 MySQL_Upgrade选项
选项名称 | 描述 | 介绍 | 弃用 |
---|---|---|---|
- 地址 | 使用指定的网络接口连接到MySQL Server | ||
- Character-Sets-DIR | 安装字符集的目录 | ||
——压缩 | 压缩客户端和服务器之间发送的所有信息 | 8.0.18 | |
- 复杂算法 | 允许的压缩算法用于连接到服务器 | 8.0.18 | |
--debug. | 写调试日志 | ||
--debug-check. | 程序退出时打印调试信息 | ||
——debug-info | 当程序退出时,打印调试信息、内存和CPU统计信息 | ||
——default-auth | 使用身份验证插件 | ||
——default-character-set | 指定默认字符集 | ||
——defaults-extra-file | 除了常见的选项文件外,还阅读命名选项文件 | ||
--defaults文件 | 只读命名选项文件 | ||
- defaults-group-suffix | 选项组后缀值 | ||
- 力量 | 强制执行,即使当前MySQL版本已经执行了mysql_upgrade | ||
- etget-server-public-key | 向服务器请求RSA公钥 | ||
- 帮助 | 显示帮助消息和退出 | ||
——主机 | MySQL服务器所在的主机 | ||
- 路径 | 从.mylogin.cnf阅读登录路径选项 | ||
——max-allowed-packet | 向服务器发送或从服务器接收的最大数据包长度 | ||
- 网络缓冲区长度 | TCP/IP和套接字通信的缓冲区大小 | ||
- nno-defaults. | 不读取选项文件 | ||
- 密码 | 连接到服务器时要使用的密码 | ||
——管 | 使用命名管道连接到服务器(仅限Windows) | ||
-plugin-dir. | 安装插件的目录 | ||
- 港口 | 连接的TCP / IP端口号 | ||
——print-defaults | 打印默认选项 | ||
- 协议 | 运输协议使用 | ||
——server-public-key-path | 包含包含RSA公钥的文件的路径名称 | ||
——shared-memory-base-name | 共享内存连接的共享内存名称(仅限Windows) | ||
- skip-sys-schema | 请勿安装或升级SYS架构 | ||
——套接字 | 要使用的Unix套接字文件或Windows命名管道 | ||
——ssl-ca | 包含可信SSL证书权限列表的文件 | ||
- ssl-capath. | 包含受信任的SSL证书颁发机构证书文件的目录 | ||
- ssl-cert. | 包含x.509证书的文件 | ||
--ssl-cipher. | 允许的密码用于连接加密 | ||
——ssl-crl | 包含证书撤销列表的文件 | ||
——ssl-crlpath | 包含证书撤销列表文件的目录 | ||
——ssl-fips-mode | 是否在客户端启用FIPS模式 | ||
--ssl-key. | 包含x.509密钥的文件 | ||
——ssl-mode | 到服务器的所需安全状态 | ||
- TLS-CIPHESUITES. | 允许用于加密连接的TLSv1.3加密套件 | 8.0.16 | |
——tls版本 | 允许用于加密连接的TLS协议 | ||
- upgrade-system-tables | 仅更新系统表,而不是用户模式 | ||
- 用户 | 连接到服务器时要使用的MySQL用户名 | ||
——详细 | 冗长模式 | ||
- 转移检查 | 检查适当的服务器版本 | ||
- 写入binlog. | 将所有语句写入二进制日志 | ||
——zstd-compression-level | 到使用zstd压缩的服务器的连接的压缩级别 | 8.0.18 |
显示一个简短的帮助信息并退出。
在具有多个网络接口的计算机上,使用此选项可选择用于连接到MySQL Server的界面。
- Character-Sets-DIR =
dir_name
字符集安装的目录。看到第10.15节“字符集配置”.
——压缩
,-C
如果可能,压缩客户端和服务器之间发送的所有信息。看到第4.2.8节“连接压缩控制”.
从MySQL 8.0.18开始,这个选项已被弃用。预计它将在MySQL的未来版本中被删除。看到配置遗留连接压缩.
允许的压缩算法用于与服务器的连接。可用的算法与该算法相同
protocol_compression_algorithms.
系统变量。默认值为未压缩
.有关更多信息,请参见第4.2.8节“连接压缩控制”.
这个选项是在MySQL 8.0.18中添加的。
--debug [=
,debug_options.
]- # (
debug_options.
]编写调试日志。一个典型的
debug_options.
字符串是D:T:o,
.默认值是file_name
d:师:啊,/ tmp / mysql_upgrade.trace
.当程序退出时打印一些调试信息。
——debug-info
,-T.
当程序退出时,打印调试信息和内存和CPU使用情况统计信息。
关于使用哪个客户端身份验证插件的提示。看到第6.2.17节,“可插拔身份验证”.
——default-character-set =
charset_name.
用
charset_name.
作为默认字符集。看到第10.15节“字符集配置”.--defaults-extra-file =
file_name
在全局选项文件之后读取此选项文件,但(在UNIX上)在用户选项文件之前。如果文件不存在或无法访问,则会发生错误。如果
file_name
不是绝对路径名,它是相对于当前目录解释的。有关此和其他选项文件选项的其他信息,请参阅第4.2.2.3节“影响选项文件处理的命令行选项”.
只使用给定的选项文件。如果文件不存在或无法访问,则会发生错误。如果
file_name
不是绝对路径名,它是相对于当前目录解释的。有关此和其他选项文件选项的其他信息,请参阅第4.2.2.3节“影响选项文件处理的命令行选项”.
不仅要读取常用的选项组,还要读取具有常用名称和后缀的组
str.
.例如,mysql_upgrade.通常读取[客户]
和[mysql_upgrade]
团体。如果提供此选项——defaults-group-suffix = _other
,mysql_upgrade.也读了这一点[client_other]
和[mysql_upgrade_other]
团体。有关此和其他选项文件选项的其他信息,请参阅第4.2.2.3节“影响选项文件处理的命令行选项”.
忽略
mysql_upgrade_info
文件和强制执行,即使mysql_upgrade.已经在MySQL的当前版本中执行了。从服务器请求RSA基于密钥对的密码交换所需的公钥。属性进行身份验证的客户端可使用此选项
caching_sha2_password.
身份验证插件。对于该插件,服务器不会发送公钥,除非请求。对于未使用该插件进行身份验证的帐户,此选项将被忽略。如果不使用基于rsa的密码交换,它也会被忽略,比如当客户端使用安全连接连接到服务器时。如果
--server-public-keat-path =
给定并指定一个有效的公钥文件,它优先于file_name
- etget-server-public-key
.有关的信息
caching_sha2_password.
插件,参见第6.4.1.2节,“缓存SHA-2可插拔认证”.——主机=
,主机名
-H
主机名
连接到给定主机上的MySQL服务器。
中的命名登录路径中读取选项
.mylogin.cnf
登录路径文件。一个”登录路径”是包含选项的选项组,该选项指定要连接到的MySQL服务器以及验证的帐户。要创建或修改登录路径文件,请使用mysql_config_editor实用程序。看到mysql_config_editor - MySQL配置实用程序.有关此和其他选项文件选项的其他信息,请参阅第4.2.2.3节“影响选项文件处理的命令行选项”.
用于客户端/服务器通信的缓冲区的最大大小。默认值为24MB。最小值和最大值为4kb和2gb。
用于客户端/服务器通信的缓冲区的初始大小。默认值为1MB - 1KB。最小值和最大值为4KB和16MB。
不要读取任何选项文件。如果程序启动失败,因为从选项文件中读取未知选项,
- nno-defaults.
可用于防止它们被读取。例外是
.mylogin.cnf
文件在所有情况下都读取,如果存在。即使在命令行中,这也允许以更安全的方式指定密码即使- nno-defaults.
用来。去创造.mylogin.cnf
,可以使用mysql_config_editor实用程序。看到mysql_config_editor - MySQL配置实用程序.有关此和其他选项文件选项的其他信息,请参阅第4.2.2.3节“影响选项文件处理的命令行选项”.
--password [=
,密码
]- p (
密码
]用于连接到服务器的MySQL帐户的密码。密码值是可选的。如果没有给出,mysql_upgrade.提示一个。如果给出,必须有没有空间之间的
--password =
或者-P.
还有密码。如果不指定密码选项,默认是不发送密码。在命令行上指定密码应该被认为是不安全的。要避免在命令行上给出密码,请使用选项文件。看到第6.1.2.1节“密码安全的最终用户指南”.
要明确指定没有密码和那个mysql_upgrade.不应该提示一个,使用
- skip-password.
选项。——管
,-W.
在Windows上,使用命名管道连接到服务器。仅当服务器已启动时才适用此选项
named_pipe.
启用系统变量以支持命名管道连接。此外,使连接必须是由此指定的Windows组的成员named_pipe_full_access_group.
系统变量。在其中寻找插件的目录。,则指定此选项
——default-auth
选项用于指定身份验证插件但是mysql_upgrade.没有找到。看到第6.2.17节,“可插拔身份验证”.- 口交=
,port_num.
-P.
port_num.
对于TCP / IP连接,要使用的端口号。
打印程序名称和它从选项文件中获得的所有选项。
用于连接到服务器的传输协议。当其他连接参数通常导致使用一个协议而不是您想要的协议时,它是有用的。具体允许的值请参见第4.2.7节,“连接传输协议”.
--server-public-keat-path =
file_name
PEM格式文件的路径名,其中包含服务器为RSA密钥对密码交换所需要的公钥的客户端副本。属性进行身份验证的客户端可使用此选项
SHA256_PASSWORD.
或者caching_sha2_password.
身份验证插件。对于没有使用这些插件之一进行身份验证的帐户,此选项将被忽略。如果不使用基于rsa的密码交换,它也会被忽略,比如当客户端使用安全连接连接到服务器时。如果
--server-public-keat-path =
给定并指定一个有效的公钥文件,它优先于file_name
- etget-server-public-key
.为
SHA256_PASSWORD.
,此选项仅适用于使用OpenSSL构建MySQL。有关的信息
SHA256_PASSWORD.
和caching_sha2_password.
插件,看到第6.4.1.3节,“SHA-256可插拔认证”, 和第6.4.1.2节,“缓存SHA-2可插拔认证”.在Windows上,共享内存名称用于使用共享内存到本地服务器的连接。默认值为
mysql.
.共享内存名称区分大小写。仅当服务器已启动时才适用此选项
shared_memory.
支持共享内存连接的系统变量。默认情况下,mysql_upgrade.安装
sys
架构如果未安装它,并且否则将其升级到当前版本。的- skip-sys-schema
选项会抑制此行为。——套接字=
,路径
-
路径
为连接
localhost.
,即要使用的Unix套接字文件,或者(在Windows上)要使用的命名管道的名称。在Windows上,此选项仅适用于服务器已启动时
named_pipe.
启用系统变量以支持命名管道连接。此外,使连接必须是由此指定的Windows组的成员named_pipe_full_access_group.
系统变量。从中开始的选项
——ssl
指定是否使用加密连接到服务器,并指出在哪里可以找到SSL密钥和证书。看到加密连接命令选项.控制是否在客户端启用FIPS模式。的
——ssl-fips-mode
Option区别于其他-
其中不用于建立加密连接的选项,而是影响允许的加密操作。看到第6.8节“FIPS支持”.XXX.
这些
——ssl-fips-mode
允许值:离开
:关闭FIPS模式。上
:启用FIPS模式。严格的
: 使能够”严格的”FIPS模式。
请注意如果OpenSSL FIPS对象模块不可用,则唯一允许的值
——ssl-fips-mode
是离开
.在本例中,设置——ssl-fips-mode
至上
或者严格的
导致客户端在启动时产生警告并以非FIPS模式运行。--tls-ciphersuites =
ciphersuite_list
用于加密连接的允许的CIPHersuites,用于使用TLSv1.3。该值是一个或多个冒号分隔的CIPHersuite名称的列表。可以为此选项命名的CIPhersuites依赖于用于编译MySQL的SSL库。有关详细信息,请参阅第6.3.2节,“加密连接TLS协议和密码”.
这个选项是在MySQL 8.0.16中添加的。
加密连接的允许TLS协议。该值是一个或多个分隔的协议名称的列表。可以为此选项命名的协议取决于用于编译MySQL的SSL库。有关详细信息,请参阅第6.3.2节,“加密连接TLS协议和密码”.
仅升级系统表中的系统表
mysql.
架构,不要升级用户模式。--user =.
,用户名
-U
用户名
MySQL帐户的用户名用于连接到服务器。默认用户名是
根
.详细的模式。打印更多有关该程序的信息。
- 转移检查
,k
检查服务器的版本mysql_upgrade.正在连接以验证它与哪个版本相同mysql_upgrade.建成。如果不是这样,mysql_upgrade.退出。这个选项默认是启用的;要禁用该检查,请使用
--skip-version-check
.默认情况下,二进制日志通过mysql_upgrade.被禁用。调用程序
- 写入binlog.
如果你想把它的动作写进二进制日志。当服务器运行时已启用全局事务标识符(GTID)(
gtid_mode = ON.
),不要启用二进制日志记录mysql_upgrade..的服务器连接所使用的压缩级别
zstd
压缩算法。允许的级别从1到22,越大的值表示压缩级别越高。默认的zstd
压缩级别为3.压缩级别设置对不使用的连接没有影响zstd
压缩。有关更多信息,请参见第4.2.8节“连接压缩控制”.
这个选项是在MySQL 8.0.18中添加的。