01-----Centos下载两个Mysql版本(场景是为了升级数据库版本)

一 Centos下载两个Mysql版本

由于mysql5.7-8.0.22都出现不安全的漏洞,所以需要进行更新升级,但是又由于需要备份的原因,只能先下载两个mysql版本,然后进行数据拷贝。

场景说明:我系统已经带有一个mysql5.7的版本,需要更新至8.0.24版本。

对于升级的话,不建议参考本篇而是参考第3篇,但是如果为了下载两个版本的话,可以参考。
参考文章,为自己的文章(建议直接用第03篇):
01-----Centos下载两个Mysql版本(场景是为了升级数据库版本)
02-----Centos升级数据库版本加强版
03-----Centos升级数据库版本终版(建议Centos升级数据库版本都使用这种方法)

1 下载mysql8.0.24

MYSQL官网

# 创建mysql安装目录
mkdir /usr/local/mysql

# 进入mysql安装目录
cd /usr/local/mysql/

# 下载mysql-8.0.24,官网选择Linux-Generic类型的操作系统
wget -c https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz

# 解压
tar -xvf mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz

# 重命名解压出来的文件夹名
mv mysql-8.0.24-linux-glibc2.12-x86_64 mysql-8.0.24

# 创建数据存储目录
mkdir mysql-8.0.24/data

2 创建用户组和用户并授权

#1 先查看是否有mysql这个用户,如果有就不需要再创建,没有就需创建
cat /etc/passwd | grep mysql
cat /etc/group | grep mysql

#2 参加mysql用户
# 创建用户组
groupadd mysql
# 创建用户
useradd -g mysql mysql
# 授权用户
chown -R mysql.mysql /usr/local/mysql/mysql-8.0.24

3 初始化数据库

#在初始化之前,必须将已有数据库的my.cnf的配置改名,否则有可能初始化失败。
mv /etc/my.cnf /etc/my.cnf.back

# 初始化数据库,不区分大小写--lower-case-table-names=1需在初始化时设置才生效
/usr/local/mysql/mysql-8.0.24/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/mysql-8.0.24 --datadir=/usr/local/mysql/mysql-8.0.24/data --lower-case-table-names=1

上面需要注意的是,必须保持data目录中为空,否则出现初始化失败。若出错直接清空再重新初始化即可。
在这里插入图片描述

在初始化的时候,我们需要记住这个临时密码,后面需要使用到。
在这里插入图片描述

4 编写my.cnf配置文件

vim /etc/my.cnf
[mysqld]
# 设置3307端口,避免与已有数据库重复。
port=3307
# 设置mysql的安装目录
basedir=/usr/local/mysql/mysql-8.0.24
# 设置mysql数据库的数据的存放目录
datadir=/usr/local/mysql/mysql-8.0.24/data
# 允许最大连接数
max_connections=1000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=100
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
# 是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
# MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
# MySQL默认的wait_timeout  值为8个小时, interactive_timeout参数需要同时配置才能生效
interactive_timeout=1800
wait_timeout=1800
# Metadata Lock最大时长(秒),一般用于控制alter操作的最大时长sine mysql5.6
# 执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞
lock_wait_timeout=3600
# 内部内存临时表的最大值
# 比如大数据量的group by ,order by时可能用到临时表
# 超过了这个值将写入磁盘,系统IO压力增大
tmp_table_size=64M
max_heap_table_size=64M
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3307
default-character-set=utf8mb4

5 配置成服务并开机自启

# 进入主目录
cd mysql-8.0.24/
# 添加mysqld服务到系统
cp -a ./support-files/mysql.server /etc/init.d/mysql
# 授权以及添加服务
chmod +x /etc/init.d/mysql
chkconfig --add mysql
# 检查是否生效
chkconfig --list mysql

出现下图所示内容说明配置生效:
在这里插入图片描述

6 配置环境变量

vim /etc/profile

在/etc/profile中末尾添加以下内容:

export MYSQL_HOME=/usr/local/mysql/mysql-8.0.24
export PATH=$PATH:$MYSQL_HOME/bin:$MYSQL_HOME/lib

在这里插入图片描述

#刷新
source /etc/profile

7 启动mysql服务

# 启动服务
service mysql start
# 查看服务状态
service mysql status
# 停止服务
service mysql stop
# 重启服务
service mysql restart

启动成功如下,建议用start,我自己手欠想看看错误的情况:
在这里插入图片描述

8 登录mysql

mysql -u root -p

报错,原因是我们必须先将已有的mysql5.7关闭,否则你输入5.7的密码还是能登录进去的。
在这里插入图片描述

#关闭原先的数据库
ps -ef | grep "mysqld"
service mysqld stop

再次登录,输入临时密码即可。

mysql -u root -p

或者登录可能出现这种问题:
在这里插入图片描述
原因,已有版本的sock文件被读取,导致新建的sock文件无法被读取。
解决在my.cnf中添加一行sock文件的路径即可。

#关于这个路径可以去/usr/local/mysql/mysql-8.0.24/data下面有一个xxx.err路径查找。在末行模式按下?输入sock即可。
#或者find / -name '*.sock' 
#或者lsof -c mysqld|grep sock$
socket=/tmp/mysql.sock

该问题参考于ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’

9 修改root用户密码

-- 修改root用户密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

-- 刷新权限
flush privileges;

10 设置外网连接授权

执行以下语句设置允许所有ip访问root用户:

-- 进入数据库mysql
use mysql;

-- 修改root用户host,%表示允许所有ip访问root用户
update user set host='%' where user='root';

-- 刷新权限
flush privileges;

--退出
quit;

主要参考文章CentOS8安装mysql8.0.24

次要参考文章,不建议用该篇文章,我一开始照他做,出现了很多问题,所以还是老老实实下载两个版本,拷贝结构和数据再把低版本的数据库删除吧。所以实际我并未用到这篇文章的内容。
MySQL5.7升级到8.0过程详解

11 测试结果

成功更换。
在这里插入图片描述

好了,既然已经下载了新版本,那接下来的就是数据的备份,然后删除低版本的库。备份建议使用Navicat上方的工具,里面有结构同步和数据同步。
或者右击数据库,点击转储SQL文件。然后进行备份还有一种方法就是点击备份。
关于备份可以参考Navicat Premium实现mysql数据库备份/还原
个人比较喜欢用工具里面的结构同步和数据同步。

在这里插入图片描述
2.
在这里插入图片描述
3.
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值