MySQL5.7升级到8.0
本文最后更新于429天前,其中的信息可能已经过时,如有错误请在评论区悄悄告诉我~~~

注意这是上课笔记,仅供参考!!!

一、安装MySQL5.7

模拟我们已经拥有一个MySQL数据库,现在要从5.7升级到8.0,所以我们先安装一个5.7的数据库并导入数据

1、安装

使用SSH工具连接到Linux,上传MySQL5.7的rpm包

2、解压tar包

tar -xvf MySQL5.7.tar

3、使用yum命令进行安装

yum install -y *.rpm

然后等待安装完成

4、登录MySQL

Ⅰ、首先先启动MySQL数据库

systemctl start mysqld

Ⅱ、查看MySQL初始密码

grep 'temporary password' /var/log/mysqld.log

Ⅲ、登录MySQL

mysql -uroot -p

Ⅳ、更改默认密码

为方便操作,这里把密码改为123456

// 设置新密码的验证策略为0,表示最低
set global validate_password_policy=0;
// 设置新密码的长度最小值为1位
set global validate_password_length=1;
// 设置新密码为123456
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
set global validate_password_policy=0;
set global validate_password_length=1;
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

输入exit即可退出数据库

5、导入sakila数据库

上传sakila数据库的压缩包sakila-db.zip

然后解压(由于是zip格式,所以可能会提示解压命令不存在,可以使用yum install -y unzip命令进行安装)

unzip sakila-db.zip

切换到sakila-db目录下

cd sakila-db

导入sakila数据库

mysql -uroot -p < sakila-schema.sql

输入密码

登录MySQL查看是否导入成功

mysql -uroot -p
show databases;

sakila数据库存在,导入成功

二、导出数据库数据

开始模拟升级数据库,使用命令导出数据库

mysqldump -u root -p  --add-drop-table --routines --ignore-table=mysql.innodb_index_stats --ignore-table=mysql.innodb_table_stats --events --all-databases --force > data-for-upgrade.sql

没有报错,成功导出到当前目录下的data-for-upgrade.sql

三、升级数据库

停止当前版本数据库,并且移除出开机启动

systemctl stop mysqld
systemctl disable mysqld

上传新版本数据库的tar包,由于刚刚安装MySQL5.7版本解压残留的rpm,会影响下面的步骤

所以使用下面命令删除旧版本rpm包

rm -rf *.rpm

上传并解压新版本的rpm包(老师发的zip压缩包,所以使用unzip命令解压)

unzip mysql-8.0.34.zip

使用yum命令安装新数据库

yum install -y *.rpm

等待安装完成

创建一个MySQL8.0 空库

## mysqld --initialize --datadir=/保存数据库数据的地方

mysqld --initialize --datadir=/var/lib/mysql80

修改 /etc/my.cnf中修改datadir的配置,指向 /var/lib/mysql80

vi /etc/my.cnf 

datadir=/var/lib/mysql,改为datadir=/var/lib/mysql80

保存并退出vi编辑器

使用ll /var/lib/命令可以查看/var/lib/mysql8的用户/组为root

修改/var/lib/mysql80的用户/组

chown -R mysql  /var/lib/mysql80
chgrp -R mysql /var/lib/mysql80

再次使用ll /var/lib/命令可以查看/var/lib/mysql8的用户/组已经更改为mysql

更改SELinux为允许模式(默认为强制模式,有可能会遇上错误)

setenforce 0
getenforce

启动数据库

systemctl  start mysqld

查看临时密码登录MySQL

grep 'temporary password' /var/log/mysqld.log

第二个为新的临时密码

登录MySQL,并更改初始密码

mysql -uroot -p

这里方便操作把密码改为123456

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

使用exit退出数据库

四、导入旧数据库的数据

使用下面命令导入数据

/root/sakila-db/data-for-upgrade.sql是指向刚才备份旧数据库的sql文件

mysql -uroot -p --force</root/data-for-upgrade.sql

输入数据库的密码

进行MySQL 8数据库的强制升级

mysqld --user=mysql --upgrade=FORCE

执行需要一点时间

五、验证数据库数据

登录MySQL

mysql -uroot -p

使用命令查库

show databases;

数据库都在,数据检查略~~~

此文章是我在学校上课时的一些笔记,有错误还请多多包涵,仅供参考
作者:404_502
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0协议。转载请注明文章地址及作者
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇