卸载 Mysql 5.1 与安装 Mysql 5.7 压缩包

今天遇到几个奇葩问题,记录一下,本文仅限使用 Windows 10 系统参考。

我的数据库和表格编码都是统一为UTF8,后端也使用UTF8,Postman 测试接口时使用的 Json 也都是UTF8,后端接收 Json 之后显示中文也正常。但是写入数据库的中文字段,就乱码。

经排查后发现是我使用的 Mysql 版本太低导致的,有问题的版本编号为 5.1,经过一番折腾,升级到 Mysql 5.7 就解决这个问题。


由于官方并没有提供 Mysql5.7 直接安装的包,提供的是压缩包形式的,需要手工进行安装。注意安装之前需完整卸载 Mysql 5.1,否则可能会导致服务进程冲突等问题。

卸载过程中也是不少坑,通过控制面板删除 Mysql 5.1 之后发现 Mysql 服务依然没被删除,需手工停止后再删除相关文件夹,所以记得先备份原来数据库,Windows 10 下一般使用 Navicat 可视化工具来操作 Mysql 挺便利。


完整删除 Mysql 5.1 的步骤如下

  • 使用 Navicat 工具先备份原有每个数据库
  • 进入控制面板删除 Mysql 5.1
  • 用管理员模式打开 CMD 或者 PowerShell
  • 先停止服务进程:net stop mysql
  • 再移除服务进程: mysqld -remove mysql
  • 删除残留的mysql文件夹等,推荐使用 Everything 搜索 mysql 后再删除,一步到位
  • 确保已经完整删除之后,就可以开始安装 Mysql 5.7 的相关操作了

完整安装 Mysql 5.7 压缩的步骤如下

  • 到官方网站下载Myslq 5.7 压缩包 - 下载地址:https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.31-winx64.zip
  • 解压缩到自己喜欢的位置,比如我放在:C:\MySdk\mysql-5.7.31-winx64
  • 进入这个文件夹目录,新建立名字为 data 空白文件夹,再新建一个配置文件:my.ini
  • 打开 my.ini,并加入以下内容
[mysql]
default-character-set=utf8
[mysqld]
port = 3306
basedir=C:\MySdk\mysql-5.7.31-winx64
datadir=C:\MySdk\mysql-5.7.31-winx64\data
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
skip-grant-tables
  • 最后一句话 skip-grant-tables 开启表示不需要密码即可使用 mysql 服务,后续会需要注释掉,前面加上 # 即可
  • 到我的电脑中加上环境变量,也就是 Path 中,比如我的 Path 添加地址为:C:\MySdk\mysql-5.7.31-winx64\bin
  • 用管理员模式打开 CMD 或 PowerShell,并 cd 进入以上 bin 文件夹所在目录,比如我的是:cd C:\MySdk\mysql-5.7.31-winx64\bin
  • 然后开始初始化,输入:mysqld --initialize
  • 再开始安装服务,输入:mysqld --install
  • 再启动服务进程,输入:net start mysql
  • 由于我们首次使用 my.ini 当中开启 skip-grant-tables,因此现在可以直接使用数据库,不需要密码。但是需要设置一个密码。
  • 使用数据库:use mysql
  • 进入数据库之后,设置密码:update mysql.user set authentication_string=password('123456') where user='root';
  • 然后刷新生效:flush privileges;
  • 设置完毕密码之后,需要打开 my.ini,把刚才说到的最后一行注释掉,也就是 skip-grant-tables 改成 #skip-grant-tables
  • 停止进程再重新启动即可生效:先停止 net stop mysql 再开启 net start mysql
  • 这样就安装完成了,上边设置的账号是root,密码是 123456
  • 这个时候如果使用 navicat 链接数据库,会提示一个报错:错误代码:1862 your password has expired
  • 解决办法很简单,用管理员模式启动CMD或PowerShell之后,输入 mysqladmin –u root -p password
  • 重新设置密码为123456即可解决。

基本踩坑流程就到这里结束了,为了避免下次又得重新搜索各种报错的解决方案,还是手动记录一次好了,方便以后查阅。