每次升级MySQL时,都应该执行mysql_upgrade,查找与升级后的MySQL服务器不兼容的地方:
中的系统表进行升级
mysql
模式,以便您可以利用可能已添加的新权限或功能。它升级了性能模式和
sys
模式。它检查用户模式。
如果mysql_upgrade查找可能存在不兼容性的表,执行表检查,如果发现问题,则尝试修复表。如果桌子不能修理,请参见第2.11.12节,“重建或修复表或索引”用于手动表修复策略。
mysql_upgrade直接与MySQL服务器通信,向其发送执行升级所需的SQL语句。
在MySQL 5.7.11中,默认为——early-plugin-load
对象的名称keyring_file
插件库文件,导致该插件默认加载。在MySQL 5.7.12及更高版本中,默认为——early-plugin-load
Value为空;加载keyring_file
插件时,必须显式指定该选项,并将其值命名为keyring_file
插件库文件。
InnoDB
表空间加密要求先加载要使用的keyring插件InnoDB
初始化,也就是默认值的改变——early-plugin-load
Value引入了从5.7.11升级到5.7.12或更高版本的不兼容性。已加密的管理员InnoDB
表空间必须采取显式的操作来确保继续加载keyring插件——early-plugin-load
选项,用于命名插件库文件。有关其他信息,请参见章节6.4.4.1,“Keyring插件安装”.
如果您从5.7.2之前的版本升级到MySQL 5.7.2或更高版本,将更改到mysql.user
表需要一个特殊的步骤序列来执行升级mysql_upgrade.详细信息请参见章节2.11.3,“MySQL 5.7的变化”.
在Windows上,你必须运行mysql_upgrade具有管理员权限。您可以以管理员身份运行命令提示符并运行该命令来完成此操作。否则可能导致升级无法正常执行。
您应该始终备份当前的MySQL安装之前升级。看到第7.2节“数据库备份方法”.
某些升级不兼容可能需要特殊处理之前升级MySQL的安装和运行mysql_upgrade.看到章节2.11,“升级MySQL”,以获取有关确定是否有此类不兼容性适用于您的安装以及如何处理它们的说明。
使用mysql_upgrade是这样的:
确保服务器正在运行。
调用mysql_upgrade中升级系统表
mysql
Schema和检查和修复其他Schema中的表:mysql_upgrade [选项]
停止服务器并重新启动,以便任何系统表更改生效。
如果您有多个MySQL服务器实例要升级,请调用mysql_upgrade具有适合连接到每个所需服务器的连接参数。例如,服务器运行在部件3306到3308的本地主机上,通过连接到相应的端口来升级每个服务器:
mysql_upgrade——protocol=tcp -P 3306 [other_optionsmysql_upgrade—protocol=tcp -P 3307 [other_optionsmysql_upgrade——protocol=tcp -P 3308 [other_options]
对于Unix上的本地主机连接,使用——= tcp协议
option强制使用TCP/IP连接,而不是Unix套接字文件。
默认情况下,mysql_upgrade以MySQL运行根
用户。如果根
运行时密码已过期mysql_upgrade,它会显示一条消息,告诉您的密码已过期mysql_upgrade结果失败了。若要纠正此错误,请重置根
密码来解除过期并运行mysql_upgrade一次。首先,连接到服务器根
:
shell> mysql -u root -p Enter password: **** <- Enter root password here
使用以下命令重置密码改变用户
:
mysql> ALTER USER()根密码”;
然后退出mysql和运行mysql_upgrade再次:
Shell > 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.2.2节“检查表声明”.
mysql_upgrade用当前MySQL版本号标记所有检查和修复的表。这可以确保您下次运行时mysql_upgrade对于相同版本的服务器,可以确定是否需要再次检查或修复给定的表。
mysql_upgrade将MySQL版本号保存在一个名为mysql_upgrade_info
在data目录中。这用于快速检查该版本是否检查了所有表,以便可以跳过表检查。若要忽略此文件并执行检查,请使用——力
选择。
mysql_upgrade检查mysql.user
系统表行和,对于任何带有空值的行插件
列,将该列设置为“mysql_native_password”
或“mysql_old_password”
类型的哈希格式密码
列值。
支持4.1之前的密码散列和mysql_old_password
已经被移除了,所以呢mysql_upgrade集空插件
值“mysql_native_password”
如果凭证使用与该插件兼容的散列格式。必须手动升级具有4.1之前密码哈希的行。有关帐户升级说明,请参见第6.4.1.3节“从4.1之前的密码哈希和mysql_old_password插件迁移”.
mysql_upgrade不升级时区表或帮助表的内容。升级说明请参见章节5.1.13,“MySQL服务器时区支持”,章节5.1.14,“服务器端帮助支持”.
除非使用——skip-sys-schema
选项,mysql_upgrade安装sys
模式,否则将其升级到当前版本。类时,将发生错误sys
Schema存在但不存在版本
视图,假设它的缺失表示用户创建的模式:
不存在sys模式。视图版本。如果用户创建了sys模式,则必须重命名该模式才能成功升级。
在这种情况下,若要升级,请删除或重命名现有的sys
模式。
mysql_upgrade检查分区InnoDB
使用通用分区处理程序创建并试图将其升级到的表InnoDB
本地分区。(Bug #76734, Bug #20727344)你可以在mysql客户端使用修改表…升级分区
SQL语句。
mysql_upgrade支持以下选项,这些选项可以在命令行上指定,也可以在(mysql_upgrade)
而且(客户端)
选项文件的组。有关MySQL程序使用的选项文件的信息,请参见第4.2.2.2节“使用选项文件”.
表4.11 mysql_upgrade选项
选项名称 | 描述 | 介绍了 |
---|---|---|
——bind-address | 使用指定的网络接口连接MySQL服务器 | |
——character-sets-dir | 字符集的安装目录 | |
——压缩 | 压缩客户端和服务器之间发送的所有信息 | |
——调试 | 编写调试日志 | |
——debug-check | 当程序退出时打印调试信息 | |
——debug-info | 当程序退出时,打印调试信息、内存和CPU统计信息 | |
——default-auth | 使用的身份验证插件 | |
——default-character-set | 指定默认字符集 | |
——defaults-extra-file | 除了通常的选项文件外,还可以读取命名选项文件 | |
——defaults-file | 只读命名选项文件 | |
——defaults-group-suffix | 选项组后缀值 | |
——力 | 强制执行,即使mysql_upgrade已经执行了当前MySQL版本 | |
——帮助 | 显示帮助信息并退出 | |
——主机 | MySQL服务器所在的主机 | |
——登录路径 | 从.mylogin.cnf读取登录路径选项 | |
——max-allowed-packet | 发送到服务器或从服务器接收的最大数据包长度 | |
——net-buffer-length | 用于TCP/IP和套接字通信的缓冲区大小 | |
——已 | 读取无选项文件 | |
——密码 | 连接到服务器时使用的密码 | |
——管 | 使用命名管道连接到服务器(仅限Windows) | |
——plugin-dir | 安装插件的目录 | |
——港口 | TCP/IP连接端口号 | |
——print-defaults | 打印默认选项 | |
——协议 | 要使用的传输协议 | |
——shared-memory-base-name | 共享内存连接的共享内存名称(仅限Windows) | |
——skip-sys-schema | 不安装或升级系统架构 | |
——套接字 | Unix套接字文件或Windows命名管道使用 | |
——ssl | 启用连接加密 | |
——ssl-ca | 包含受信任SSL证书颁发机构列表的文件 | |
——ssl-capath | 包含受信任的SSL证书颁发机构证书文件的目录 | |
——ssl-cert | 包含X.509证书的文件 | |
——ssl cipher | 用于连接加密的允许密码 | |
——ssl-crl | 包含证书撤销列表的文件 | |
——ssl-crlpath | 包含证书撤销列表文件的目录 | |
——ssl密钥 | 包含X.509密钥的文件 | |
——ssl-mode | 到服务器的连接所需的安全状态 | 5.7.11 |
——ssl-verify-server-cert | 根据服务器证书验证主机名 | |
——tls版本 | 加密连接允许使用TLS协议 | 5.7.10 |
——upgrade-system-tables | 只更新系统表,不更新用户模式 | |
——用户 | 连接到服务器时使用的MySQL用户名 | |
——详细 | 详细模式 | |
——版本检查 | 检查正确的服务器版本 | |
——write-binlog | 将所有语句写入二进制日志 |
显示简短的帮助消息并退出。
在具有多个网络接口的计算机上,使用此选项选择用于连接MySQL服务器的接口。
——character-sets-dir =
dir_name
安装字符集的目录。看到章节10.15,“字符集配置”.
——压缩
,- c
如果可能,压缩客户端和服务器之间发送的所有信息。看到第4.2.6节“连接压缩控制”.
——调试(=
,debug_options
]- # (
debug_options
]编写调试日志。一个典型的
debug_options
字符串是d:师:啊,
.默认为file_name
d:师:啊,/ tmp / mysql_upgrade.trace
.当程序退出时打印一些调试信息。
——debug-info
,- t
在程序退出时打印调试信息以及内存和CPU使用统计信息。
关于使用哪个客户端身份验证插件的提示。看到第6.2.13节“可插式身份验证”.
——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。——主机=
,host_name
- h
host_name
连接到给定主机上的MySQL服务器。
中的指定登录路径中读取选项
.mylogin.cnf
登录路径文件。一个”登录路径”是一个选项组,包含指定要连接到哪个MySQL服务器以及要验证为哪个帐户的选项。要创建或修改登录路径文件,请使用mysql_config_editor实用程序。看到第4.6.6节“mysql_config_editor - MySQL配置实用程序”.有关此选项和其他选项文件选项的详细信息,请参见章节4.2.2.3,“影响选项文件处理的命令行选项”.
客户端/服务器通信缓冲区的最大大小。默认值为24MB。最小值为4KB,最大值为2GB。
客户端/服务器通信缓冲区的初始大小。默认值为1MB−1KB。最小值为4KB,最大值为16MB。
不要读取任何选项文件。如果从选项文件中读取未知选项导致程序启动失败,
——已
可用于防止它们被读取。唯一的例外是
.mylogin.cnf
文件在所有情况下都被读取,如果它存在的话。这允许以比在命令行上更安全的方式指定密码——已
使用。创建.mylogin.cnf
,使用mysql_config_editor实用程序。看到第4.6.6节“mysql_config_editor - MySQL配置实用程序”.有关此选项和其他选项文件选项的详细信息,请参见章节4.2.2.3,“影响选项文件处理的命令行选项”.
——密码(=
,密码
]- p (
密码
]连接服务器时使用的MySQL帐户密码。密码为可选配置。如果没有给出,mysql_upgrade提示一个。如果给出了,就一定有没有空间之间的
——密码=
或- 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.13节“可插式身份验证”.——港口=
,port_num
- p
port_num
对于TCP/IP连接,要使用的端口号。
打印程序名称和它从选项文件中获得的所有选项。
用于连接到服务器的传输协议。当其他连接参数通常导致使用与您想要的协议不同的协议时,它很有用。有关允许值的详细信息,请参见第4.2.5节,“连接传输协议”.
——shared-memory-base-name =
的名字
在Windows上,用于使用共享内存建立到本地服务器的连接的共享内存名称。默认值为
MYSQL
.共享内存名称区分大小写。属性启动服务器时,此选项才适用
shared_memory
启用支持共享内存连接的系统变量。默认情况下,mysql_upgrade安装
sys
模式,否则将其升级到当前版本。的——skip-sys-schema
Option抑制了这种行为。——套接字=
,路径
- s
路径
连接到
本地主机
例如,要使用的Unix套接字文件,或者在Windows上,要使用的命名管道的名称。在Windows上,此选项仅在服务器使用
named_pipe
系统变量启用支持命名管道连接。属性指定的Windows组的成员named_pipe_full_access_group
系统变量。选项以
——ssl
指定是否使用加密连接到服务器,并指出在何处查找SSL密钥和证书。看到加密连接的命令选项.加密连接所允许的TLS协议。一个或多个以逗号分隔的协议名称的列表。可以为此选项命名的协议取决于用于编译MySQL的SSL库。详细信息请参见第6.3.2节,“加密连接TLS协议和密码”.
此选项是在MySQL 5.7.10中添加的。
中只升级系统表
mysql
架构,不升级用户架构。——用户=
,user_name
- u
user_name
用于连接服务器的MySQL帐户的用户名。默认用户名为
根
.详细的模式。打印有关程序功能的更多信息。
——版本检查
,- k
检查服务器版本mysql_upgrade连接是为了验证它与哪个版本相同mysql_upgrade建成。如果不是这样,mysql_upgrade退出。默认情况下启用此选项;禁用检查,使用
——skip-version-check
.默认情况下,二进制日志记录mysql_upgrade是禁用的。使用以下命令调用程序
——write-binlog
如果您想将其操作写入二进制日志。当服务器运行时启用了全局事务标识符(gtid)时(
gtid_mode =对
),不启用二进制日志记录bymysql_upgrade.