注意这是上课笔记,仅供参考!!!
一、安装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;
数据库都在,数据检查略~~~