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
,但是程序里默认没有,需要自己创建,内容如下:
1 | [mysql] |
这里对一些设置进行补充说明:
- 端口:默认端口是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改回原端口,停止旧数据库服务,重启新数据库服务。。。更新完成。。。
又水了一篇博文,下次更新博客不知道又是什么时候了。