Linux 系统 MySQL 8.0 详细安装教程

Linux 系统 MySQL 8.0 详细安装教程

文章目录


本文针对 Linux 主流发行版(CentOS 7/8、Ubuntu 20.04/22.04),详细讲解 MySQL 8.0 的两种安装方式(官方 YUM/APT 仓库安装、二进制包安装),附带配置优化和常见问题解决,适合运维人员及开发人员参考。

一、安装前准备

1. 系统要求

  • CentOS:CentOS 7 及以上(64 位),内存 ≥ 2GB,磁盘空间 ≥ 10GB
  • Ubuntu:Ubuntu 20.04 及以上(64 位),内存 ≥ 2GB,磁盘空间 ≥ 10GB
  • 通用要求:关闭防火墙或开放 MySQL 默认端口(3306),禁止安装旧版 MySQL(避免冲突)

2. 清理旧版 MySQL(可选)

若系统已安装旧版 MySQL(如 5.7),需先卸载清理,避免依赖冲突:

(1)CentOS 系统

# 停止 MySQL 服务 systemctl stop mysqld # 卸载 MySQL 组件 yum remove -y mysql-community-server mysql-community-client mysql-community-common mysql-community-libs # 清理残留文件rm -rf /var/lib/mysql/ rm -rf /etc/my.cnf rm -rf /var/log/mysqld.log 

(2)Ubuntu 系统

# 停止 MySQL 服务 systemctl stop mysql # 卸载 MySQL 组件(保留配置文件)apt remove -y mysql-server mysql-client mysql-common # 彻底卸载(删除配置文件)apt purge -y mysql-server mysql-client mysql-common # 清理残留文件rm -rf /var/lib/mysql/ rm -rf /etc/mysql/ rm -rf /var/log/mysql/ 

二、安装方式一:官方 YUM/APT 仓库安装(推荐)

通过 MySQL 官方仓库安装,可自动解决依赖,且方便后续版本更新,适合大多数场景。

2.1 CentOS 系统(YUM 仓库)

(1) 步骤 1:下载并安装官方 YUM 源

# 进入临时目录cd /tmp # 下载 MySQL 8.0 YUM 源(CentOS 7 对应 el7,CentOS 8 对应 el8)# CentOS 7:wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm # CentOS 8:# wget https://dev.mysql.com/get/mysql80-community-release-el8-3.noarch.rpm# 安装 YUM 源rpm -ivh mysql80-community-release-el7-3.noarch.rpm 

(2)步骤 2:验证 YUM 源是否生效

 yum repolist enabled |grep mysql 

若输出包含 mysql80-community 相关条目,说明源生效。

(3)步骤 3:安装 MySQL 8.0

 yum install -y mysql-community-server 

等待安装完成,YUM 会自动安装所有依赖组件。

2.2 Ubuntu 系统(APT 仓库)

(1)步骤 1:下载并安装官方 APT 源

# 安装依赖工具aptinstall -y wget gnupg # 下载 MySQL 8.0 APT 源配置文件wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb # 安装 APT 源(安装过程中会弹出配置界面,默认选择 MySQL 8.0 即可,点击 OK 确认) dpkg -i mysql-apt-config_0.8.22-1_all.deb # 更新 APT 缓存apt update 

(2)步骤 2:安装 MySQL 8.0

aptinstall -y mysql-server 

安装过程中会弹出设置 MySQL root 用户密码的界面,输入密码并确认(密码需包含大小写字母、数字、特殊符号,确保安全性)。

三、安装方式二:二进制包安装(适合自定义安装路径)

若需自定义安装路径(如 /data/mysql),可选择二进制包安装,步骤如下(以 CentOS 7 为例,Ubuntu 流程类似):

(1)步骤 1:下载二进制包
我们下载通用二进制包(glibc 2.17,适配 CentOS 7),官网下载地址:https://downloads.mysql.com/archives/community/

在这里插入图片描述
cd /tmp # 下载 MySQL 8.0 二进制包(Linux x86_64)wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.36-linux-glibc2.17-x86_64.tar #解压tar -xvf mysql-8.0.36-linux-glibc2.17-x86_64.tar 

得到如下文件

在这里插入图片描述

(2)步骤 2:解压安装包并移动到自定义路径

# 解压压缩包,解压到自定义路径(如 /usr/local/app/mysql)tar -xvf mysql-8.0.36-linux-glibc2.17-x86_64.tar.xz -C /usr/local/app # 添加软链接cd /usr/local/app ln -s mysql-8.0.36-linux-glibc2.17-x86_64/ /usr/local/app/mysql # 创建数据存储目录mkdir -p /data/mysql/data # 创建日志目录mkdir -p /data/mysql/log 

(3)步骤 3:创建 MySQL 用户和组

# 创建 mysql 组groupadd mysql # 创建 mysql 用户(加入 mysql 组,不允许登录系统)useradd -r -g mysql -s /sbin/nologin mysql # 授权目录权限chown -R mysql:mysql /usr/local/app/mysql/ chown -R mysql:mysql /data/mysql/ 

(4)步骤 4:初始化 MySQL

# 进入 MySQL 安装目录的 bin 目录cd /usr/local/app/mysql/bin # 初始化(生成临时 root 密码,记录日志中的密码) ./mysqld \ --initialize \ --user=mysql \# 运行用户 --basedir=/usr/local/app/mysql \# MySQL 安装目录 --datadir=/data/mysql/data \# 数据存储目录 --log-error=/data/mysql/log/mysqld.log # 自定义日志文件路径(含文件名)
在这里插入图片描述

初始化完成后,查看临时密码:

cat /data/mysql/log/mysqld.log |grep"temporary password"
在这里插入图片描述

输出示例:2024-05-20T08:30:00.123456Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: XXXXXXXX(临时密码)

(5)步骤 5:配置 MySQL 服务

# 复制服务配置文件到 /etc/systemd/system/cp /usr/local/app/mysql/support-files/mysql.server /etc/systemd/system/mysqld.service # 编辑服务配置文件,指定安装路径和数据路径vim /etc/systemd/system/mysqld.service 

在配置文件中添加以下内容(若已存在则修改):

 [Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/usr/local/app/mysql/bin/mysqld --defaults-file=/etc/my.cnf --datadir=/data/mysql/data --basedir=/usr/local/app/mysql --log-error=/data/mysql/log/mysqld.log LimitNOFILE=5000 
在这里插入图片描述

四、MySQL 基础配置

4.1 编辑主配置文件 my.cnf

vim /etc/my.cnf 

添加/修改以下核心配置(根据实际需求调整):

 [mysqld] # 端口 port=3306 # 数据目录(YUM/APT 安装默认 /var/lib/mysql,二进制包安装为自定义路径) datadir=/var/lib/mysql # 套接字文件 socket=/var/lib/mysql/mysql.sock # 字符集(推荐 UTF8MB4,支持 emoji) character-set-server=utf8mb4 # collation collation-server=utf8mb4_unicode_ci # 最大连接数 max_connections=1000 # 日志文件 log-error=/var/log/mysqld.log # 临时表大小 tmp_table_size=64M max_heap_table_size=64M [mysql] # 客户端字符集 default-character-set=utf8mb4 [client] socket=/var/lib/mysql/mysql.sock default-character-set=utf8mb4 
在这里插入图片描述

4.2 启动 MySQL 服务并设置开机自启

(1)CentOS/Ubuntu 通用命令

# 重新加载系统服务(修改配置文件后执行) systemctl daemon-reload # 启动 MySQL 服务 systemctl start mysqld # 查看服务状态(active (running) 表示启动成功) systemctl status mysqld # 设置开机自启 systemctl enable mysqld 
在这里插入图片描述

4.3 重置 root 密码(关键)

(1)YUM/APT 安装(Ubuntu 已设置密码,可跳过)

# 查看临时密码(YUM 安装默认生成临时密码)grep'temporary password' /var/log/mysqld.log # 登录 MySQL mysql -u root -p # 输入上述临时密码# 重置密码(密码强度需符合要求:大小写字母+数字+特殊符号) ALTER USER'root'@'localhost' IDENTIFIED BY 'NewPassword@2024';# 刷新权限 FLUSH PRIVILEGES;

(2)二进制包安装

# 登录 MySQL(使用初始化时的临时密码) /usr/local/app/mysql/bin/mysql -u root -p # 重置密码 ALTER USER'root'@'localhost' IDENTIFIED BY 'NewPassword@2024';# 刷新权限 FLUSH PRIVILEGES;
在这里插入图片描述

4.4 配置远程连接(可选)

默认情况下,root 用户仅允许本地连接,若需远程连接 MySQL,执行以下命令:

# 登录 MySQL mysql -u root -p # 允许 root 用户远程连接(% 表示所有 IP,也可指定具体 IP,如 192.168.1.100) CREATE USER'root'@'%' IDENTIFIED BY 'NewPassword@2024';# 授予 root 用户所有权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;# 刷新权限 FLUSH PRIVILEGES;

同时,需开放 Linux 防火墙 3306 端口:

CentOS 系统

# 开放 3306 端口 firewall-cmd --zone=public --add-port=3306/tcp --permanent # 重新加载防火墙规则 firewall-cmd --reload 

Ubuntu 系统

# 开放 3306 端口 ufw allow 3306/tcp # 重启防火墙 ufw reload 

五、安装验证

# 登录 MySQL /usr/local/app/mysql/bin/mysql -u root -p # 输入重置后的密码# 查看 MySQL 版本select version();# 输出示例:8.0.36# 查看数据库列表 show databases;# 输出包含 information_schema、mysql、performance_schema、sys 等默认数据库,说明安装成功
在这里插入图片描述

六、常见问题解决

6.1 启动 MySQL 服务失败

  • 查看日志排查原因:cat /var/log/mysqld.log
  • 常见原因:端口被占用(使用 netstat -tuln | grep 3306 查看端口占用,修改 my.cnf 中的 port 配置)、数据目录权限不足(执行 chown -R mysql:mysql /var/lib/mysql 授权)

6.2 远程连接失败

  • 检查防火墙是否开放 3306 端口(执行 firewall-cmd --list-portsufw status 查看)
  • 检查 root 用户远程权限是否配置正确(登录 MySQL 执行 select user,host from mysql.user where user='root';,确保 host 为 % 或指定的远程 IP)
  • 检查网络是否通畅(远程机器执行 ping 服务器 IPtelnet 服务器 IP 3306 测试连接)

6.3 密码强度不满足要求

MySQL 8.0 默认启用密码强度验证插件(validate_password),若需设置简单密码,可临时关闭验证:

# 登录 MySQL mysql -u root -p # 关闭密码强度验证set global validate_password.policy=0;set global validate_password.length=6;# 重置简单密码 ALTER USER'root'@'localhost' IDENTIFIED BY '123456';

注意:生产环境不建议关闭密码强度验证,需保证密码安全性。

七、卸载 MySQL(可选)

若需卸载 MySQL,执行以下命令(CentOS 为例):

# 停止服务 systemctl stop mysqld # 卸载组件(YUM 安装) yum remove -y mysql-community-server mysql-community-client mysql-community-common mysql-community-libs # 二进制包安装卸载rm -rf /usr/local/app/mysql rm -rf /data/mysql # 清理配置文件和日志rm -rf /etc/my.cnf rm -rf /var/log/mysqld.log # 删除 mysql 用户和组userdel -r mysql groupdel mysql 

八、总结

本文介绍了 Linux 系统下 MySQL 8.0 的两种安装方式,YUM/APT 仓库安装适合快速部署,二进制包安装适合自定义需求。安装完成后,需重点配置 root 密码和远程连接权限,确保数据库安全可用。若遇到问题,可通过查看日志快速定位原因,按常见问题解决方法处理。

Read more

Ubuntu 25.04私有大模型部署实战:Ollama+DeepSeek+OpenWebUI完全指南

Ubuntu 25.04私有大模型部署实战:Ollama+DeepSeek+OpenWebUI完全指南

Ubuntu 25.04私有大模型部署实战:Ollama+DeepSeek+OpenWebUI完全指南 作为一名技术爱好者,我对本地部署大型语言模型充满热情。在Ubuntu 25.04上搭建完整的私有AI环境(Ollama + DeepSeek + OpenWebUI)让我收获颇丰,也踩过不少坑。本文将分享零基础搭建流程、性能调优技巧和实用问题解决方案,助你快速拥有专属AI助手。 前置环境准备 推荐使用Ubuntu 25.04 Server版(最小化安装),配置要求: * CPU:4核及以上(建议Intel i7+/Ryzen 5+) * 内存:32GB以上(运行32B模型需要) * 显卡:NVIDIA RTX 3060 12GB+(显存越大越好) * 存储:至少100GB SSD空间 系统优化建议: # 禁用自动更新降低系统中断几率sudosed-i's/Update-Package-Lists "

By Ne0inhk

Linux网络队列算法终极指南:FQ、Codel、PIE、CAKE对比解析

Linux网络队列算法终极指南:FQ、Codel、PIE、CAKE对比解析 【免费下载链接】one_click_scriptinstall latest or LTS linux kernel and enable BBR or BBR plus 项目地址: https://gitcode.com/gh_mirrors/on/one_click_script Linux网络性能优化一直是系统管理员和开发者的重要课题。one_click_script项目提供了一键安装最新Linux内核并开启BBR加速的完整解决方案,其中队列算法的选择对网络性能有着关键影响。本文将深入解析四种主流队列算法:FQ、FQ-Codel、FQ-PIE和CAKE,帮助您选择最适合的网络配置方案。🚀 🔍 什么是队列算法? 队列算法是Linux内核中负责管理网络数据包传输顺序的机制。在网络拥塞时,合理的队列算法能够显著降低延迟、提高吞吐量,为用户带来更流畅的网络体验。在one_click_script项目中,您可以通过简单选择来启用不同的队列算法,

By Ne0inhk
【Linux系统】理解管道通信,匿名管道实现进程池+命名管道实现服务端客户端通信模型(附源码)

【Linux系统】理解管道通信,匿名管道实现进程池+命名管道实现服务端客户端通信模型(附源码)

文章目录 * 一、进程间通信是什么 * 二、管道 * 1. 什么是管道 * 2. 匿名管道 * 3. 命名管道 * 三、实例:匿名管道实现进程池 * 四、实例:命名管道实现服务端客户端通信模型 一、进程间通信是什么 进程间通信(IPC),顾名思义,进程之间需要进行信息交换。 如:数据传输、资源共享、通知事件、进程控制。 进程间通信的方式有:管道、System V IPC、POSIX IPC。 由于进程具有独立性,进程间通信的前提就是,不同的进程能看到同一份资源。 二、管道 1. 什么是管道 管道是类Unix系统中最古老的进程间通信的方式。我们把从一个进程连接到另一个进程的数据流称为一个“管道”。 管道是单向通信的,称为单工通信。 管道分为匿名管道和命名管道。 2. 匿名管道

By Ne0inhk
Web Worker:让前端飞起来的隐形引擎

Web Worker:让前端飞起来的隐形引擎

目录 Web Worker:让前端飞起来的隐形引擎 一、什么是 Web Worker? 1、为什么需要 web worker 2、什么是 web worker 二、基本使用方法 1、创建一个 Worker 文件(worker.js) 2、主线程引入并使用 三、实战案例:在前端处理大批量数据 1、Worker 文件(sortWorker.js) 2、主线程调用 四、Vue3 中如何优雅使用 Web Worker 1、新建 Worker 文件(worker.js) 2、在 Vue3

By Ne0inhk