在centos7 上安装MySQL8.0

一,环境准备

yum -y install mysql

1.先确认操作系统是centos 7

cat /etc/redhat-release

输出 CentOS Linux release 7.x.x (Core)

2.centos 7默认装 mariadb (与 MySQL 冲突),得卸载,否则会导致 mysql安装失败

(1)查询已安装的mariadb 相关的包2

rpm -qa | grep mariadb

输出内容为mariadb-libs-5.5.68-1.el7.x86_64

(2)卸载冲突包,使用 --nodeps 忽略依赖关系

sudo rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64 # 替换为实际包名

(3)清理残留的文件

sudo rm -rf /var/lib/mysql # 若存在旧数据目录,强制删除

sudo rm -rf /etc/my.cnf # 若存在旧配置文件,强制删除

3.安装依赖

MySQL安装需要依赖wget下载工具和perl脚本解析器,系统没有安装,先执行

sudo yum install -y wget perl

二、配置 MySQL 8.0 官方 YUM 仓库

1.下载仓库配置包

(1)在官网找一个centos 7 的rpm包

sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm

(2)如果下载的太慢,试试阿里云镜像

sudo wget https://mirrors.aliyun.com/mysql/MySQL-8.0/mysql80-community-release-el7-7.noarch.rpm

2.安装仓库配置

sudo rpm -ivh mysql80-community-release-el7-7.noarch.rpm

3.验证仓库有没有生效

看是否包含MySQL8.0

yum repolist enabled | grep mysql

输出包含 mysql80-community,说明仓库配置成功。

三、安装 MySQL 8.0 服务

1.安装MySQL社区版的服务器

sudo yum install -y mysql-community-server

若出现类似 warning: ...: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY 的错误,说明缺少GPG 密钥,执行以下命令导入:

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

若提示 Error: Package: ... 依赖错误,先更新系统基础依赖:

sudo yum update -y

如果还是不行

查看现有 MySQL GPG 密钥状态:

执行命令 rpm -qa gpg-pubkey* | grep mysql

清除 Yum/Dnf 缓存:

执行 yum clean all

yum install mysql-community-server

再重新安装 MySQL

2.确认安装成功

mysql --version

输出内容为ysql Ver 8.0.x for Linux on x86_64 (MySQL Community Server - GPL) 的内容,说明版本正确

没有出来就执行mysql GPG密钥

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

然后清理yum缓存重新安装

yum clean all

然后重新执行MySQL安装命令

yum install mysql-community-server

输入Y

然后执行下面这条命令

mysql --version

输出mysql Ver 8.0.x for Linux on x86_64 (MySQL Community Server - GPL) 的内容,说明版本正确

四、初始化 MySQL 服务

1.启动MySQL服务器设置开机自启

sudo systemctl start mysqld

避免服务器重启后 MySQL 无法自动运行

sudo systemctl enable mysqld

查看服务状态

sudo systemctl status mysqld

出现这个就好了

2.获取初始临时密码

MySQL 8.0 安装后会自动为 root 用户生成临时密码,存储在日志文件中,必须使用该密码登录并修改

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

输出为字符串就是临时密码

若日志中无临时密码(极少情况):可能是数据目录初始化失败,删除数据目录并重新初始化:

sudo systemctl stop mysqld # 先停止服务

sudo rm -rf /var/lib/mysql # 删除旧数据

sudo mysqld --initialize --user=mysql # 重新初始化(自动生成新密码)

sudo systemctl start mysqld # 重启服务

sudo grep 'temporary password' /var/log/mysqld.log # 再次获取密码

五、首次登录与密码配置

1.用临时密码登录MySQL

通过 mysql 命令行工具登录,输入临时密码

mysql -uroot -p

输入密码

2.修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'Wyq@2025';

输出Query OK, 0 rows affected (0.00 sec)修改成功

3.可选放宽密码策略

(1) 查看当前密码策略

SHOW VARIABLES LIKE 'validate_password%';

(2) 修改策略(仅测试环境用)

set global validate_password.policy=0; # 0=低(仅检查长度)

set global validate_password.length=6; # 最小长度6位

六、配置远程访问

1.授权远程登陆权限

(1)允许root从任何IP访问

创建允许远程访问的 root 用户(% 表示任意 IP)

CREATE USER 'root'@'%' IDENTIFIED BY 'Wyq@2025';

授予所有权限

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

刷新权限使配置生效

FLUSH PRIVILEGES;

(2)限制特定IP访问

CREATE USER 'root'@'192.168.10.11' IDENTIFIED BY 'Wyq@2025';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.10.11' WITH GRANT OPTION;

FLUSH PRIVILEGES;

2.解决远程连接失败

修改 root@% 的认证插件

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Wyq@2025';

FLUSH PRIVILEGES;

七、开放防火墙与 SELinux 配置

1.开放防火墙3306端口

(1)临时开放

记得先退出来

sudo firewall-cmd --zone=public --add-port=3306/tcp

输出为下图就对了

如果输出为running就执行下面的命令

启动 FirewallD 服务

sudo systemctl start firewalld

设置 FirewallD 开机自启

sudo systemctl enable firewalld

(2) 永久开放

sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent

#出现success就对了

(3) 重新加载防火墙规则

sudo firewall-cmd --reload

#出现success就对了

(4) 验证端口是否开放

sudo firewall-cmd --zone=public --query-port=3306/tcp

输出为yes对了

#永久关闭SELinux不推荐

#编辑 /etc/selinux/config 文件,将 SELINUX=enforcing 改为 SELINUX=disabled,保存后重启服务器

八、验证 MySQL 功能

1.本地验证(登录MySQL,执行基本命令测试)

(1)查看数据库列表

SHOW DATABASES;

(2) 创建测试数据库

CREATE DATABASE test_db;

(3) 使用测试数据库

USE test_db;

(4) 创建测试表

CREATE TABLE test_table (id INT, name VARCHAR(20));

(5) 插入数据

INSERT INTO test_table VALUES (1, 'mysql_test');

(6) 查询数据

SELECT * FROM test_table;

2.远程验证

(1)打开第二胎centos7 只装MySQL

yum -y install mysqld

(2)登录第一台

mysql -uroot -pWyq@2025 -h 192.168.10.11

九、MySQL 核心配置

MySQL 配置文件路径为 /etc/my.cnf修改后需重启服务 sudo systemctl restart mysqld

在第一台上面做

[mysqld]

字符集(支持 emoji 需 utf8mb4)

character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

最大连接数(默认 151,根据需求调整)

max_connections = 500

数据存储路径(默认 /var/lib/mysql,若需修改需同步权限)

datadir = /var/lib/mysql

端口(默认 3306,可自定义)

port = 3306

十、常见问题与解决

1.MySQL 启动失败

查看日志排查原因:

sudo tail -n 100 /var/log/mysqld.log

常见原因:数据目录权限错误(需确保 /var/lib/mysql 属主为 mysql 用户),执行修复:

sudo chown -R mysql:mysql /var/lib/mysql

sudo systemctl restart mysqld

2.忘记 root 密码重置步骤:

sudo systemctl stop mysqld # 停止服务

sudo mysqld_safe --skip-grant-tables & # 跳过权限验证启动

mysql -u root # 无密码登录

登录后修改密码

FLUSH PRIVILEGES;

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass@2025';

exit # 退出

sudo systemctl restart mysqld # 重启服务

### 安装 MySQL 8.0 on CentOS 7 #### 使用 YUM 命令安装 MySQL 社区版服务端 为了在 CentOS 7 上部署 MySQL 8.0 数据库,可以利用系统的包管理器 `yum` 来简化这一过程。通过执行如下命令来完成软件的自动下载与配置: ```bash sudo yum install mysql-community-server -y ``` 这条指令会自动处理所有的依赖关系,并按照官方推荐的方式进行默认设置[^1]。 #### 执行必要的初始化工作 一旦安装完毕,应当立即启动 MySQL 并将其加入到系统引导程序中以便于每次开机都能自动运行: ```bash sudo systemctl start mysqld.service sudo systemctl enable mysqld.service ``` 初次启动后,MySQL 将生成随机初始密码用于 root 用户登录验证。此临时密码位于日志文件 `/var/log/mysqld.log` 中,可以通过 grep 工具快速检索获得: ```bash grep 'temporary password' /var/log/mysqld.log ``` 获取该临时密码之后即可安全地访问数据库并修改 root 密码以及其他安全性设定。 #### 修改 Root 用户密码和其他安全选项 首次成功登陆至 MySQL 控制台后,建议立刻变更 root 账户的默认/临时密码为更复杂的安全字符串。这一步骤可通过内置脚本实现自动化: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES; ``` 此外,还可以考虑禁用远程 root 访问权限、移除匿名账户等措施进一步增强安全性。 #### 开启外部网络访问功能(按需) 如果计划允许来自其他主机的应用程序连接,则需要调整防火墙规则开放相应的 TCP/IP 端口(通常是3306),并且编辑 my.cnf 文件中的 bind-address 参数以监听所有 IP 地址或特定网卡地址。 ```ini bind-address=0.0.0.0 ``` 最后记得重启 MySQL 使新的绑定生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值