Linux环境下安装MySQL8.0

前置准备:卸载mariadb(避免mariadb冲突)

yum remove -y mariadb-libs

1.下载mysql80 rpm包

wget https://mirrors.ustc.edu.cn/mysql-repo/mysql80-community-release-el7-3.noarch.rpm

如果提示403 forbidden,则尝试执行:

wget --inet4-only --user-agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0" https://mirrors.ustc.edu.cn/mysql-repo/mysql80-community-release-el7-3.noarch.rpm

2.安装rpm包

rpm -ivh mysql80-community-release-el7-3.noarch.rpm

执行后产生的变化:
1)注册 rpm 软件包到系统 rpm 数据库;
2)生成 2 个仓库文件:
/etc/yum.repos.d/mysql-community.repo(5.7、8.0 仓库配置)
/etc/yum.repos.d/mysql-community-source.repo(源码仓库)
3)导入 MySQL 官方 GPG 校验密钥:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
默认配置:mysql57-community enabled=1、mysql80-community enabled=0,yum 默认只能搜到 MySQL5.7 安装包。按需变更。

注意:如果安装出现密钥错误,执行导入密钥之后再重新安装

rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

3.下载安装MySQL80

yum install -y mysql-community-server

yum install -y mysql-community-server --downloadonly (扩展,仅下载,不安装)
如果是仅下载,不按照,可以在/var/cache/yum/x86_64/7/对应仓库名/packages/查看文件,
mysql-community-server、client、libs、common、client-plugins 所有依赖包。

手动安装时严格安装顺序执行,依赖层级从底层到服务端:
mysql-community-common
mysql-community-client-plugins
mysql-community-libs
mysql-community-client
mysql-community-server(主程序)

执行后产生的变化:
1)yum 会自动一并下载安装,包含:
mysql-community-client-plugins
mysql-community-libs
mysql-community-client
mysql-community-common
mysql-community-server(主程序)
系统自动校验 MySQL 官方 GPG 密钥,确认包完整性。

2)生成默认数据存储目录 /var/lib/mysql/:数据库文件、日志、ibdata、库表。
3)生成配置文件/etc/my.cnf MySQL 主配置文件。
4)生成/var/log/mysqld.log 数据库运行日志、首次临时密码存于此.
5)生成系统服务管理文件/usr/lib/systemd/system/mysqld.service
6)自动新增系统账号 mysql 。

4.启动服务

systemctl start mysqld
systemctl status mysqld

执行后产生的变化:
手动执行 systemctl start mysqld 才会触发初始化:
1)初始化 /var/lib/mysql 数据目录,生成系统库 mysql、sys、performance_schema、information_schema
2)自动生成 root@localhost 随机高强度临时密码,写入 /var/log/mysqld.log
默认加密规则:caching_sha2_password(MySQL8.0 新标准)
默认字符集:utf8mb4,默认时区:UTC

5.获取临时密码
cat /var/log/mysqld.log |grep 'temporary password'

注意:如果是全新安装数据库,重启服务之后会生成新的临时密码在/var/log/mysqld.log,但是我们在进行重新搭建主从复制时,清空/var/lib/mysql/目录,使用xtrabackup进行全量恢复,并不会产生新的密码,仍然时原来的密码。

6.使用临时密码登录mysql
mysql -uroot -p
输入密码

7.修改密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';

8.刷新权限
FLUSH PRIVILEGES;

找回密码:
systemctl stop mysqld

修改配置文件 /etc/my.cnf,在[mysqld]下添加一行
skip-grant-tables

systemctl start mysqld

mysql -u root

8.0 固定 SQL 顺序(必须先 FLUSH PRIVILEGES,直接改会报错)

FLUSH PRIVILEGES;
-- 本地root账号
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass@123';
-- 如果需要远程root登录(%代表所有IP)
ALTER USER 'root'@'%' IDENTIFIED BY 'NewPass@123';
exit;

关键安全步骤:删除 my.cnf 里的 skip-grant-tables,否则所有人免密登录

systemctl restart mysqld

扩展:
yum repolist 依赖工具说明

核心:yum-utils
yum-config-manager 这个命令必须装 yum-utils,repolist 是 yum 自带子命令,不用额外装。
yum install -y yum-utils
区分两个命令
yum repolist
系统自带,最小化安装 CentOS7 也有,只用来查看仓库列表,不需要额外工具。

yum repolist enabled
yum-config-manager(开关仓库、启用 / 禁用 mysql57/80 源)
这个命令不在原生 yum 里,必须安装 yum-utils 才能用:

启用5.7源
yum-config-manager --enable mysql57-community
 关闭8.0源
yum-config-manager --disable mysql80-community
posted @ 2026-10-16 22:01  解码青年  阅读(5)  评论(0)    收藏  举报