楔子

由于之前电脑上安装的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

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

点击上面链接,进入到下载页面,由于最新的版本是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 地址:www.microsoft.com/zh-CN/downl…

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

初始化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 下可以不必使用,带上也无所谓。

初始化完成后,会生成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对数据进行升级(也建议使用改命令升级,不然后续出问题,可能会不好定位)

dev.mysql.com/doc/refman/…

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

mysql_upgrade -uroot -p

复制代码

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

以上全文。

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

mysql5.7.76安装,MySQL 5.7.30 的安装/升级(所有可能的坑都在这里)相关推荐

  1. Win10 64位下载与安装 MySQL 5.7.30

    写在前面 本文写于重装系统后,记录过程中所遇到的一些bug. 如果已经安装了mysql的其他版本,想重装的话,可以运行以下命令卸载: // 先停止可能正在运行的mysql服务 net stop mys ...

  2. CentOS 7安装MySQL 非yum或rpm安装

    CentOS 7安装MySQL 非yum或rpm安装 本文使用的数据库版本是MySQL 5.7.26(tar.gz) 本文既不通过rpm,也不通过yum安装mysql. 通过包名可看出MySQL包的区 ...

  3. ubuntu16.04安装mysql+php+phpmyadmin(nginx已经安装)

    (默认nginx已经安装) 1安装mysql 执行以下命令安装mysql sudo apt-get install mysql-server// 安装过程中设置并记住root用户的密码 sudo ap ...

  4. yum安装mysql后密码_Centos7:yum安装MySQL5.7后如何设置root密码

    Centos下安装软件的方式很简单,只需要通过yum install xxx命令即可.第一步当然检查是否有mysql的yum源,命令:yum list|grep mysql-community[主要还 ...

  5. win7安装mysql 5.7.25_Windows下安装mysql-5.7.25-winx64.zip

    官网下载并解压mysql-5.7.25-winx64.zip,然后配置环境变量 在解压的目录下创建data文件夹用于存放数据,再创建my.ini配置文件,内容如下: [mysqld] #设置3306端 ...

  6. centos mysql5.6.35_centos6.8 mysql 5.6.35 glibc安装

    # 虚拟机->文件->打开-> 选择*.vmx # 用户名:root # 密码:123456 # 2G 内存 # 4 处理器 # 固定IP为192.168.1.181 ## 修改IP ...

  7. CentOS 7.8安装mysql 5.7.30

    一.安装mysql软件 下载并安装MySQL官方的 Yum Repository,Mysql版本5.7.30 wget -i -c http://dev.mysql.com/get/mysql57-c ...

  8. linux安装mysql图解,linux中怎么安装mysql5.6.12版本图解

    linux中怎么安装mysql5.6.12版本图解 更新时间:2019-08-10 07:16 最满意答案 首先检查环境: 输入命令:rpm -qa | grep -i mysql* 将查询到的包名: ...

  9. ansible安装Mysql 5.7.30

    ansible-playbook配置思路: 1.通过vars中的main.yml配置变量,主要为源码存放目录及安装目录 2.通过tasks中的copy.yml将源码文件传输到异地服务器上源码存放目录 ...

最新文章

  1. [十一]基础数据类型之Character
  2. js获取当前日期_vue项目中获取前后N天日期
  3. C#开发微信门户及应用(25)-微信企业号的客户端管理功能
  4. java遍历集合元素_遍历java集合元素的方法
  5. 网易云音乐社交玩法的背后,听说有一只神秘部队保驾护航?
  6. 串口通讯超时的设置与含义(COMMTIMEOUTS)
  7. java程序设计教程实验报告_java程序设计课程--实验报告-实验13.doc
  8. 如何使用设计模式来构造系统--(7)
  9. flask-sqlalchemy分表解决方案
  10. OAuth2.0_介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记137
  11. php正则表达式修正符,深入解析PHP正则模式修正符
  12. IOS 手写控件 简单播放器 AVFoundation音乐播放
  13. 皮尔兹777301安全继电器
  14. 全球与中国网络连接视频门铃对讲机系统市场深度研究分析报告势
  15. 关于数据仓库面试题的整理
  16. appcan图片上传最新实现方式
  17. vue之var和let声明变量
  18. 整理了一份史上最全的DevOps 工具链
  19. 搏一搏 单车变摩托,是时候捣鼓一下家中的小米电视机啦。
  20. C——Linux下的串口编程

热门文章

  1. 一主双从同步错误 error connecting to master ‘slave@192.168.81.158:3306‘ - retry-time: 60 retries: 1
  2. Linux ssh远程连接
  3. MATLAB暗原色先验去雾算法的一些认识
  4. SQL Server修改表结构,表和列名加注释说明
  5. MicroSoft Visual Studio 2013 社区版下载地址
  6. LeetCode-数据结构
  7. 应用在触摸电视机中的触摸芯片
  8. 找不到工作怎么办,多半是“废了”,按这3步你也能找到工作
  9. 3GPP TS 23501-g51 中英文对照 | 4.2.5a Radio Capabilities Signalling optimisation
  10. 基于android的即时通讯APP 聊天APP