由于需要修复漏洞不得不对数据库版本进行升级,看了好多教程以下是个人整理的一些记录
注:我这边是从5.7.32——>5.7.39版本
1.升级前要先备份旧的数据
(1)先记录一下mysql的安装路径
//查看mysql安装路径
select @@basedir as basePath from dual;
//查看mysql
data数据存放路径 show global variables like ‘%datadir%’;
(2)把查到的路径先记录在一个文档里
备份数据库:mysqldump -uroot -proot -h127.0.0.1 -P3306 --all-databases > “F:\MySQL\MySQL Server 5.0\data\backup.sql”
注意:备份路径可以更改到别的文件夹下,加引号是由于不加执行会报错,P大写后跟端口号
2.下载最新的mysql5.7压缩包。
下载地址:https://dev.mysql.com/downloads/mysql/
最新的mysql5.7的压缩包解压开你会发现,没有data目录和my.ini文件,跟之前的版本不一样。
(最好和之前的旧版本放在一个目录下,下面是我放的地址)
把旧版本下的data和my.ini 文件复制到新版本mysql5.7的目录下
3.将现有的mysql关闭。使用cmd窗口,进入到mysql目录下面,将mysql服务移除。
F:\MySQL\MySQL Server 5.0\bin>mysqld --remove mysql Service
successfully removed.
将data文件夹下的文件清空,否则安装初始化时会报错
my.ini中,老版本的配置,有一些在版本5.7下面已经不能用了。
将mysql.ini文件配置做以下修改。
复制粘贴时记得把上面双斜杠中间的空格去掉,我这边是为了展示出来加了空格
[mysqld]
#设置mysql的安装目录[根据本地情况进行修改]
basedir=F:\ \MySQL\ \mysql-5.7.39-winx64
#设置mysql数据库的数据的存放目录[根据本地情况进行修改]
datadir=F:\ \MySQL\ \mysql-5.7.39-winx64\ \data
#设置3306端口
port = 3306
#允许最大连接数
max_connections=200
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
#设置mysql客户端默认字符集
[mysql]
#设置mysql客户端默认字符集
default-character-set=utf8
4.配置环境变量
5.打开cmd,切换至新版本5.7安装目录的bin目录下
安装mysql 服务,输入mysqld install
F:\MySQL\mysql-5.7.39-winx64\bin>mysqld install
Service successfully installed.
6.初始化data目录,输入 mysqld -initialize
7.启动mysql服务,输入 net start mysql
F:\MySQL\mysql-5.7.39-winx64\bin>mysqld --initialize
F:\MySQL\mysql-5.7.39-winx64\bin>net start mysql
MySQL 服务正在启动 ..
MySQL 服务已经启动成功。
8.登录mysql数据库
mysql -uroot -p
部分人可能登录上因原密码过于简单,需要用alter修改一下密码
alter user ‘root’@‘localhost’ identified by ‘密码’;
然后导入之前备份的数据库脚本就好啦
最后:简单说一下会遇到的问题,
1.有些Windows系统使用升级包进行升级的时候在执行mysqld install 时会报错 " 找不到vcruntime140_1.dll ”
此时需要查看其存放位置
然后对下载存放在改目录下
vcruntime140_1.dll下载地址:vcruntime140_1.dll 免费下载 | DLL‑files.com
解压后将
vcruntime140_1.dll复制到C:\Windows\System32,注意, 32位版本的
vcruntime140_1.dll需要复制到
C:\Windows\SysWOW64下。
2.启动时会报错:
F:\MySQL\mysql-5.7.39-winx64\bin>net start mysql
MySQL 服务正在启动 ..
MySQL 服务无法启动。
服务没有报告任何错误。
请键入 NET HELPMSG 3534 以获得更多的帮助。
需要把复制过来的data目录下文件清空
然后到bin目录下执行mysqld --remove mysql
最后再次重复安装步骤
3.初始化data目录,输入 mysqld -initialize 时报错,需要看看my.ini的配置
F:\MySQL\mysql-5.7.39-winx64\bin>mysqld --initialize
mysqld: Can't create/write to file '鈥淔:\MySQL\mysql-5.7.39-winx64\data鈥漒is_writable' (Errcode: 2 - No such file or directory)
2022-09-09T04:00:08.483909Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2022-09-09T04:00:08.484079Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2022-09-09T04:00:08.484093Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2022-09-09T04:00:08.486914Z 0 [ERROR] Can't find error-message file'F:\MySQL\mysql-5.7.39-winx64\bin\鈥淔:\MySQL\mysql-5.7.39-winx64鈥漒share\errmsg.sys'. Check error-message file location and 'lc-messages-dir' configuration directive.
2022-09-09T04:00:08.493849Z 0[ERROR] --initialize specified but the data directory exists and is not writable. Aborting.
2022-09-09T04:00:08.495312Z 0[ERROR] Aborting
是my.ini 文件配置的问题。文件目录路径写的是单斜杠导致的,路径改成双斜杠,再次执行初始化命令就OK了。
写在最后:以上为我最小化版本时遇到的问题及解决办法,如果有不足及不对的地方,欢迎指出并补充,谢谢啦。
版权归原作者 WEROD 所有, 如有侵权,请联系我们删除。