MySQL5.0 到 MySQL5.7 升级笔记

距离四月底一下过了三个月,光阴似箭啊。。。四月底写实习日记的时候还说五月还要再写一篇,结果因为太忙还有其他原因就咕咕咕了。。。之后一直没啥时间搭理博客。。。

今天给论坛更新了一下MySQL,从5.0升级到5.7,查阅了很多资料后最终也算更新成功,终于有点东西可以写在博客了。

提前说一下更新思路吧,为了不影响论坛的正常访问,这边采用的是先同时运行两个版本的数据库(5.7运行在另一端口),然后通过 SQLYog 将5.0的数据传输至5.7,最后通过单身多年的手速秒关旧版服务并将新版服务应用到源端口。。。(突然语无伦次

那么开始吧。

一、工具准备

1. 主角 MySQL 5.7

这边使用的是免安装zip包,配置也都是一步步手动配置的,下面会详细的说。

懒于配置的人也可使用官方提供的 msi 官方包。

2. SQLYog

一款图形化数据库管理工具,这里主要使用其数据传输功能完成 5.0 到 5.7 的数据转移。类似的软件有 Navicat。

下载地址这里不提供了,请自行使用搜索引擎。

二、开始更新

1、MySQL 5.7 的安装

1.1 解压文件

解压 MySQL 5.7 文件,这里举例放置在 D:\MySQL5.7

1.2 添加环境变量

此电脑 - 右键属性 - 高级系统设置 - 高级 - 环境变量

系统变量里找到Path,点编辑,新建一条路径,填写MySQL的安装地址的bin目录:D:\MySQL5.7\bin







ok

1.3 配置 MySQL

众所周知 MySQL 配置文件是 my.ini,但是程序里默认没有,需要自己创建,内容如下:

my.ini
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
# 设置端口
port = 3307
# 设置mysql的安装目录
basedir=D:\\MySQL5.7
# 数据目录
datadir=D:\\MySQL5.7\\data
# 允许最大连接数
max_connections=1000
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

# 跳过域名解析
skip-name-resolve
# 跳过权限验证
skip-grant-tables

#慢日志 运行时间超过1s的sql语句记录日志
slow_query_log=ON
long_query_time=1

这里对一些设置进行补充说明:

  • 端口:默认端口是3306,前面我有说先同时跑两个 MySQL,这里随便改一个端口 不要跟原来一样就可以
  • 跳过域名解析:加了该参数后不可使用域名方式连接服务器,例如localhost,只能使用IP,例如127.0.0.1,开启该功能可优化 MySQL
  • 跳过权限验证:非常重要!开启后本地连接时可免输密码,待会儿我们需要进入数据库初始化密码。

1.4 安装服务、初始化数据库、启动服务

首先在 MySQL 安装目录下新建一个 data 文件夹,用于存放数据,对应 my.ini 里的 datadir

打开命令行并切换到 MySQL 下的 bin 目录 (技巧:在资源管理器进入 bin 目录按住Shift+右键,菜单中会有在此处打开命令窗口,点击即可打开命令行并自动切换到对应目录),使用如下命令:mysqld --install ,服务安装完成

输入命令 mysqld --initialize 进行初始化,接着就可以启动服务了: net start mysql

1.5 初始化密码

使用SQLYog登录数据库,因为设置了skip-grant-tables,因此无需填写密码。




运行如下sql重置密码:

1
update user set authentication_string=password('新密码') where user="root";

注意:仅仅这样还不够,在登录时会出现错位

ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.

意思是密码过期,因此还需如下 sql 来设置密码过期状态为否

1
update user set password_expired='N' where user='root';

最后刷新权限

1
flush privileges

密码就初始化完毕了。

2、数据转移

非常简单,使用 SQLYog 登录旧数据库,在数据库上右键菜单直接复制就行了。


到这里就差不多了,之后就是修改新数据库的 my.ini,把port改回原端口,停止旧数据库服务,重启新数据库服务。。。更新完成。。。

又水了一篇博文,下次更新博客不知道又是什么时候了。