楔子

由于之前电脑上安装的MySQL版本是比较老的了,大概是5.1的版本,不支持JSON字段功能。而最新开发部门开发的的编辑器产品,使用到了JSON字段的功能。 因此需要升级MySQL版本,升级的目标版本是MySQL 5.7.30(虽然最新版本已经到8.x,但是5.7基本够用了)。 发现在升级安装过程中,会有一些坑,所以使用本文记录一下。

卸载老版本

首先需要卸载老的版本,卸载其实也挺简单,只需要移除MySQL服务即可,首先打开CMD,然后cd到MySQL的bin目录,然后输入下面的命令移除MySQL服务:

mysqld --remove mysql
//需要注意的是: “msyql” 是服务名称,安装的时候如果没有指定服务名称,
//默认名称是MySQL(windows下不区分大小写);
// 如果安装的时候指定了名称,上面的名称需要修改为该指定的名称。

需要注意的一点是,我们删除了MySQL服务之后,有可能在windows的服务的列表里面还有,保留在哪儿也没啥影响,但是如果你又洁癖,一定要删除,就需要去删除注册表中对应键,参考下图。当然对于我们升级来说,后续还需要安装windows服务,可以直接覆盖。

注册表的图

然后删除老的MySQL相关文件夹,以及删除相关的环境变量的配置。

需要注意的是,如果数据文件和MySQL程序在一个文件夹下,需要保留数据

安装5.7.30版本

接下来就是安装5.7.30版本,第一步是下载。

下载MySQL

下载地址是:https://dev.mysql.com/downloads/mysql/

点击上面链接,进入到下载页面,由于最新的版本是8.x,所以默认是8.x的版本。可以通过点击“Looking for the latest GA

version ”选择版本,然后下载免安装版本:

解压MySQL

下载完成后,解压到你想要安装的目录,比如我的目录是:

D:\Program Files (x86)\mysql-5.7.30-winx64

配置环境变量

在系统变量path后面追加D:\Program Files (x86)\mysql-5.7.30-winx64\bin,如图所示。

创建配置文件my.ini

5.7.30版本的安装包默认是不带配置文件my.ini的。所以需要创建自己创建一个my.ini的文件。手动创建my.ini文件,然后输入如下内容:

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8 [mysqld]
# 设置3306端口
port = 3306
# 设置mysql安装目录
basedir=D:\Program Files (x86)\mysql-5.7.30-winx64
# 设置mysql数据库的数据存放目录
datadir=D:\Program Files (x86)\mysql-5.7.30-winx64\data
# 运行最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 参加新表时将使用的默认存储引擎
default-storage-engine=INNODB

此处会有一些坑,需要避免。

my.ini注意事项一

my.ini必须保存为ANSI格式(配置文件默认就是是ANSI编码格式,可能会不小心保存为其他格式,比如UTF-8),否正会出现后续的服务不能启动的情况。 如果你不确定my.ini是什么格式,可以另存为:

my.ini注意事项二

如果是从低版本升级到5.7的版本,可能为了保留之前的配置,就直接把之前的配置文件拷贝过来。这个时候就要注意了,因为以前很多低版本的参数,已经不适合高版本的。如果不修改过来,就会导致后续的服务启动失败。

比如笔者遇到的一个导致错误的参数是:

#table_cache=256  // 低版本的
table_open_cache=256 // 高版本的

如果一定要保留老版本的配置,又对于新版本的参数修改不是很熟悉,那么可以再配置文件中把日志功能假设,这样再报错的时候,可以通过查看日志了解详情。 如下配置日志路径即可:

log_error=D:/mysql-5.7/error.log

然后启动失败后,可以通过日志查看报错,比如:

更多可能的错误参数:


unknown variable 'key-buffer=256M' //去掉改项即可。 unknown variable 'table-cache=512' //修改为table_open_cache即可。 unknown variable 'thread-concurrency=8' //去掉改项,5.7已结废弃。

windows 服务启动失败,不会把错误详情标识出来,只会简单说一句服务启动失败。 只能通过配置日志文件来查看。

安装MySQL服务

最重要的一步就是安装MySQL服务。 首先进入cmd界面,CD到MySQL的bin目录(注意此处一定要到bin目录下去执行),执行如下命令:

mysqld --install [服务名称,默认是MySQL]

截图如下:

执行命令后,会提示服务安装成功。

注意事项一

需要注意的是,有可能出现Install/Remove of the Service Denied! 的提示错误。

原因:普通用户模式权限下的cmd安装mysql会出现这样的报错提示。通过管理员模式运行cmd即可:



其他步骤如果出现没有执行权限的情况,也都请用管理员省份运行即可。

注意事项二

有些电脑会出现找不到MSVCP120.dll的错误:



这种错误是由于未安装 vcredist 引起的

下载 vcredist 地址:https://www.microsoft.com/zh-CN/download/details.aspx?id=40784

安装,位置默认即可,安装成功之后,重新安装服务即可。

初始化MySQL

MySQL5.7是不带data目录的,所以需要初始化MySQL,生产data目录,也比较简单,执行如下命令即可:

mysqld --initialize-insecure --user=mysql

需要注意的是,有的文章介绍的是此处用 “mysqld --initialize”, “mysqld --initialize-insecure”和 “mysqld --initialize”的区别在于前者会创建一个空密码,而后者会创建一个随机密码。 因此用 “mysqld --initialize”,最好加上 “--console”,可以把随机密码打印出来(注意 “--console”仅限于windows)

--user=msyql 主要用于在linux或者unix系统下给与把data目录授权给mysql账号,在windows 下可以不必使用,带上也无所谓。

数据初始化参考链接:https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/data-directory-initialization.html

初始化完成后,会生成data目录。

注意事项一

如果初始化出现错误:“--initialize specified but the data directory has files in it. Aborting. ” 那是因为你可能手动创建了data目录,并且里面包含了文件(比如升级可能这样操作),此时要做的就是删除data目录即可,至于升级,可以后续考虑。

此时说的data目录,是指 my.ini文件里面 指定的目录 ,未必是mysql安装文件下的目录:

datadir=D:\Develop\MySQL\mysql-8.0.12-winx64\data

启动MySQL服务

windows下启动MySQL服务,可以使用如下命令即可:

net start MySQL

设置MySQL服务密码

使用mysqladmin可以设置密码。启动MySQL服务之后,输入如下命令:

输入老的密码(通过前面操作,老密码为空),然后输入新的密码,确认新的密码,即可设置成功。

注意事项一

如果前面初始化的时候未初始化未空密码,又不小心忘记了初始化密码,会出现下面的问题,无法登陆及修改密码:

“Access denied for user 'root'@'localhost'”

通过如下步骤解决:

添加skip-grant-tables

再配置文件my.ini中添加skip-grant-tables:

重启MySQL服务

先停止MySQL服务,然后再启动MySQL服务,即可:

修改密码

首先登陆mysql,此时不需要密码,如下:

通过sql语句修改密码,首先 use mysql ;然后update 更新密码:

然后退出mysql即可。

删除skip-grant-tables 重启MySQL服务

首先从my.ini中删除skip-grant-tables ,然后 net stop mysql, net start mysql 重启服务。

MySQL老数据升级到5.7

要升级老数据,如果是从5.x版本升级上来,基本上只需要把相关的数据文件拷贝到data文件夹下。需要注意的是,如果使用了 innodb,还需要把“ibdata”等文件拷贝过来。 否正会报表不存在的情况:

error: 1146: Table 'a_content' doesn't exist

innodb是MYSQL数据库一种流行的数据库引擎,支持事务(行级),ibdata用来储存文件的数据,而库名的文件夹里面的那些表文件只是结构而已,由于新版的mysql默认试innodb,所以ibdata1文件默认就存在了,少了这个文件有的数据表就会出错。

如果升级过程中,存在数据损坏,可以使用repair命令进行修复:

repair table tablename

正常经过上述操作,就可以了,如果还有问题,可以尝试使用升级命令mysql_upgrade对数据进行升级(也建议使用改命令升级,不然后续出问题,可能会不好定位)

https://dev.mysql.com/doc/refman/5.7/en/mysql-upgrade.html

//升级mysql,mysql_upgrade检查不兼容的表,更新grant表;
mysql_upgrade -uroot -p

升级速度具体看data目录的大小情况而定。

以上全文。

更多精彩内容,请关注公众号“ITman彪叔”。

MySQL 5.7.30 的安装/升级(所有可能的坑都在这里)的更多相关文章

  1. MySQL 5.6.30 升级到5.7.10

    MySQL 5.6.30 升级到5.7.10 注意,这种方式的前提是数据文件没有和软件目录在一起,如果在一起,需要停止数据库后先移动数据文件 1.解压5.7.10包到/usr/local2.停止当前的 ...

  2. Windows(x86,64bit)升级MySQL 5.7.17免安装版的详细教程

    MySQL需要升级到5.5.3以上版本才支持Laravel 5.4默认的utf8mb64字符编码.因此就把MySQL升级了一下,期间还是遇到些小问题,记录一下以供参考. 升级准备 备份之前MySql目 ...

  3. MySQL入门01-MySQL源码安装

    操作系统:CentOS 6.7 MySQL版本:5.6.30 1.前期准备 2.系统配置 3.CMake编译配置 4.make && make install 5.后期配置和测试 Re ...

  4. [MySQL] MySQL的自己主动化安装部署

    有过MySQL运维的人应该都清楚,线上的MySQL一般都採用源代码编译,由于这样才干够依据企业的各自须要选择要编译的功能,尽管MySQL的源代码编译挺简单的,可是试想一下,假设你有几百台server同 ...

  5. Mysql 5.7 CentOS 7 安装MHA

    Table of Contents 1. MHA简介 1.1. 功能 1.2. MHA切换逻辑 1.3. 工具 2. 环境 2.1. 软件 2.2. 环境 3. Mysql 主从复制 3.1. Mys ...

  6. MySQL 系列(一)安装

    MySQL 系列(一)安装 以 Centos7 下安装 MySQL 5.6 为例. 一.环境准备 (1) 下载 下载地址: https://dev.mysql.com/get/Downloads/My ...

  7. Oracle的静默安装 升级和卸载 参考规范

    Oracle的静默安装 升级和卸载 参考规范 20180912 V1 一.Oracle的安装 Oracle产品的三种安装方式分别为: 1.图形化(Java向导)安装引导 2.使用应答文件静默安装 3. ...

  8. mysql 5.7以上版本安装配置方法图文教程(mysql 5.7.12\mysql 5.7.13\mysql 5.7.14)(转)

    http://www.jb51.net/article/90302.htm ******************************* 这篇文章主要为大家分享了MySQL 5.7以上缩版本安装配置 ...

  9. MySQL在windows系统的安装

    原文:https://blog.csdn.net/wokaowokaowokao12345/article/details/76736152 MySQL在windows系统的安装 原创 2017年08 ...

随机推荐

  1. python基础入门教程(一条龙服务)

    一.语言基础 01-1 计算机系统 解释器下载 变量   小整数池 01-2 垃圾回收机制 02 数据类型 运算符(解压赋值等) 03 流程控制 if while for 04 整形 字符串 列表 0 ...

  2. django-haystack全文检索详细教程

    前几天要用Django-haystack来实现搜索功能,网上一搜中文资源少之又少,虽说有官方文档,但相信对于我们这些英语差的同学来说要看懂真的是一件难事.特别是关于高级部分,特地找了个英语专业的来翻译 ...

  3. Spring Framework 之AOP

    Spring Framework 之AOP 目录 Spring Framework 之AOP 问题 AOP概述 AOP知识 1.连接点(Joinpoint) 2.切点(PointCut) 3.增强(A ...

  4. 「从零单排HBase 09」Hbase的那些数据结构和算法

    在之前学习MySQL的时候,我们知道存储引擎常用的索引结构有B+树索引和哈希索引. 而对HBase的学习,也离不开索引结构的学习,它使用了一种LSM树((Log-Structured Merge-Tr ...

  5. VSCode最强助攻

    VSCode最强助攻 VS Code是前端界必备的开发工具.页面仔小杨简单介绍几款高效.好用的插件,让原本单薄的VS Code如虎添翼,开发效率倍增. vscode-icons vscode-icon ...

  6. JS做类型检测到底有几种方法?看完本文就知道了!

    JS有很多数据类型,对于不同数据类型的识别和相互转换也是面试中的一个常考点,本文主要讲的就是类型转换和类型检测. 数据类型 JS中的数据类型主要分为两大类:原始类型(值类型)和引用类型.常见的数据类型 ...

  7. [POJ1038]状压DP

    题意:给一个n*m的区域,里面有一些障碍物,往里面放2*3和3*2的矩形,矩形之间不能重叠,不能覆盖到障碍物,求能放置的最大个数.(n<=150,m<=10) 思路:看到m=10就应该往状 ...

  8. python解析谷歌在线表格链接,转化为数组形式,图片转化为链接

    在线表格已成为趋势,传统的表格导入导出已经不能满足现在企业的发展. 必须支持在线表格的导入,只需要输入在线表格的链接,就能将数据读取出来. 而且相比相传表格,能够将图片信息一块读取.在线表格中的图片也 ...

  9. NetCore项目实战篇06---服务注册与发现之consul

    至此,我们的解决方案中新建了三个项目,网关(Zhengwei.Gateway).认证中心(Zhengwei.Identity)和用户资源API(Zhengwei.Use.Api).当要访问用户API的 ...

  10. DVWA-反射型XSS

    0x01 XSS介绍 XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器 ...