在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
楔子 由于之前电脑上安装的MySQL版本是比较老的了,大概是5.1的版本,不支持JSON字段功能。而最新开发部门开发的的编辑器产品,使用到了JSON字段的功能。 因此需要升级MySQL版本,升级的目标版本是MySQL 5.7.30(虽然最新版本已经到8.x,但是5.7基本够用了)。 发现在升级安装过程中,会有一些坑,所以使用本文记录一下。 卸载老版本 首先需要卸载老的版本,卸载其实也挺简单,只需要移除MySQL服务即可,首先打开CMD,然后cd到MySQL的bin目录,然后输入下面的命令移除MySQL服务:
然后删除老的MySQL相关文件夹,以及删除相关的环境变量的配置。
安装5.7.30版本 接下来就是安装5.7.30版本,第一步是下载。 下载MySQL 下载地址是:https://dev.mysql.com/downloads/mysql/ 解压MySQL 下载完成后,解压到你想要安装的目录,比如我的目录是: 配置环境变量 在系统变量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 // 高版本的 如果一定要保留老版本的配置,又对于新版本的参数修改不是很熟悉,那么可以再配置文件中把日志功能假设,这样再报错的时候,可以通过查看日志了解详情。 如下配置日志路径即可:
然后启动失败后,可以通过日志查看报错,比如: 更多可能的错误参数:
安装MySQL服务 最重要的一步就是安装MySQL服务。 首先进入cmd界面,CD到MySQL的bin目录(注意此处一定要到bin目录下去执行),执行如下命令: mysqld --install [服务名称,默认是MySQL] 截图如下: 执行命令后,会提示服务安装成功。 注意事项一 需要注意的是,有可能出现Install/Remove of the Service Denied! 的提示错误。 其他步骤如果出现没有执行权限的情况,也都请用管理员省份运行即可。 注意事项二 有些电脑会出现找不到MSVCP120.dll的错误: 这种错误是由于未安装 vcredist 引起的 初始化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目录即可,至于升级,可以后续考虑。
启动MySQL服务 windows下启动MySQL服务,可以使用如下命令即可:
设置MySQL服务密码 使用mysqladmin可以设置密码。启动MySQL服务之后,输入如下命令: 输入老的密码(通过前面操作,老密码为空),然后输入新的密码,确认新的密码,即可设置成功。 注意事项一 如果前面初始化的时候未初始化未空密码,又不小心忘记了初始化密码,会出现下面的问题,无法登陆及修改密码: 通过如下步骤解决: 添加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”等文件拷贝过来。 否正会报表不存在的情况:
innodb是MYSQL数据库一种流行的数据库引擎,支持事务(行级),ibdata用来储存文件的数据,而库名的文件夹里面的那些表文件只是结构而已,由于新版的mysql默认试innodb,所以ibdata1文件默认就存在了,少了这个文件有的数据表就会出错。 如果升级过程中,存在数据损坏,可以使用repair命令进行修复:
正常经过上述操作,就可以了,如果还有问题,可以尝试使用升级命令mysql_upgrade对数据进行升级(也建议使用改命令升级,不然后续出问题,可能会不好定位) //升级mysql,mysql_upgrade检查不兼容的表,更新grant表; mysql_upgrade -uroot -p 升级速度具体看data目录的大小情况而定。 总结 到此这篇关于MySQL 5.7.30 安装与升级教程详解的文章就介绍到这了,更多相关mysql5.7.30 安装升级内容请搜索极客世界以前的文章或继续浏览下面的相关文章希望大家以后多多支持极客世界! |
请发表评论