跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

MySQL 环境配置教程:CentOS 7 与 Ubuntu 双系统安装指南

MySQL 环境配置涉及 CentOS 7 和 Ubuntu 系统的安装差异。核心步骤包括卸载预装 MariaDB、配置官方源(YUM 或 apt)、安装服务、初始化密码及优化编码设置。CentOS 需处理 GPG 密钥及临时密码提取,Ubuntu 则采用 auth_socket 认证方式。配置完成后需调整字符集为 utf8mb4 并设置远程访问权限,确保数据库服务稳定运行且支持中文显示。

CryptoLab发布于 2026/3/22更新于 2026/10/2595 浏览
MySQL 环境配置教程:CentOS 7 与 Ubuntu 双系统安装指南

前言

作为后端开发、数据库学习的入门必备,MySQL 的环境配置是很多小伙伴的第一道'小关卡'。尤其是不同 Linux 发行版(CentOS 7、Ubuntu)的安装步骤差异,再加上系统自带 MariaDB 的干扰、密码策略限制、中文编码等坑,很容易让人踩雷卡壳。

本指南详细拆解 CentOS 7 下的完整安装步骤(从卸载冲突环境到配置优化),并补充了 Ubuntu 系统的安装流程,全程命令可直接复制,帮助新手搞定 MySQL 环境。


一、前置知识:为什么要先处理 MariaDB?

MySQL 被 Oracle 收购后,很多 Linux 发行版(比如 CentOS 7、Ubuntu)会默认预装MariaDB——它是 MySQL 的分支,语法兼容但底层有差异,会和官方 MySQL 产生端口、配置文件的冲突,因此安装 MySQL 前必须彻底卸载 MariaDB,这是配置成功的关键第一步!

本文中所有操作优先使用 root 用户执行(普通用户需加 sudo 获取权限),初期学习阶段建议直接用 MySQL root 用户操作,后续熟悉用户管理后再创建普通用户即可。

二、CentOS 7 系统下 MySQL 完整安装配置

本次 CentOS 7 环境安装的是 MySQL 5.7 版本(兼容性强、学习常用),全程通过官方 YUM 源安装,稳定无第三方依赖问题,步骤分为卸载冲突环境→配置官方 YUM 源→安装 MySQL→初始化配置→优化设置五大环节。

2.1 卸载系统自带 MariaDB / 旧版 MySQL

步骤 1:检查 MariaDB 进程并停止

首先查看系统中是否有 MariaDB 进程在运行,有则立即停止,避免卸载时出现资源占用报错:

# 检查 MariaDB 进程
ps ajx | grep mariadb
# 停止 MariaDB 服务
systemctl stop mariadb.service
# 再次检查,确认无相关进程
ps ajx | grep mariadb
步骤 2:检查并卸载相关安装包

通过 rpm 命令查询系统中已安装的 MariaDB/MySQL 相关包,然后逐一卸载:

# 查询 MariaDB 安装包
rpm -qa | grep mariadb
# 查询 MySQL 安装包(若有旧版)
rpm -qa | grep mysql
# 卸载 MariaDB(替换为查询到的包名,也可直接批量卸载)
sudo yum remove mariadb -y
# 若有多个包,可直接通配符卸载
sudo yum remove mariadb* mysql* -y
步骤 3:备份重要配置和数据

卸载前建议备份 MySQL/MariaDB 的配置文件和数据目录,防止误删重要内容:

# 备份配置文件
cp /etc/my.cnf /etc/my.cnf.bak
# 备份数据存储目录
cp -r /var/lib/mysql /var/lib/mysql.bak

2.2 配置 MySQL 官方 YUM 源

CentOS 7 默认 YUM 源中没有 MySQL 官方包,需要手动添加官方 YUM 源,建议安装和系统版本匹配的 MySQL 版本,避免兼容性问题。

步骤 1:查看系统版本

确认 CentOS 7 的具体版本,保证后续下载的 YUM 源和系统匹配:

cat /etc/redhat-release

输出示例:CentOS Linux release 7.8.2003 (Core)

步骤 2:下载并安装官方 YUM 源

MySQL 官方 YUM 源地址:http://repo.mysql.com/,我们下载 MySQL 5.7 的 CentOS 7 专属 YUM 源包并安装:

# 下载 MySQL 5.7 YUM 源包
wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm
# 安装 YUM 源(普通用户加 sudo,解决权限问题)
sudo rpm -Uvh mysql57-community-release-el7-10.noarch.rpm
步骤 3:验证 YUM 源安装成功

安装后会在 /etc/yum.repos.d/ 目录下生成 mysql-community.repo 和 mysql-community-source.repo 两个文件,验证如下:

# 查看 YUM 源目录,确认出现 MySQL 相关 repo 文件
ls /etc/yum.repos.d/ | grep mysql
步骤 4:检查 YUM 源可用性

确认 MySQL YUM 源可正常识别,执行如下命令查看可安装的 MySQL 包:

yum list | grep mysql

若输出中出现 mysql-community-server 等包,说明 YUM 源配置成功。

2.3 安装 MySQL 服务

通过 YUM 源安装 MySQL 官方服务端和客户端,-y 参数表示自动确认所有安装选项,无需手动回车:

sudo yum install -y mysql-community-server

安装过程中会自动安装依赖包(mysql-community-common、mysql-community-libs、mysql-community-client),耐心等待即可。

常见坑 1:安装时出现秘钥过期报错,提示 GPG Keys are configured as: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql。解决方案:导入最新的 MySQL 官方秘钥即可,重新执行安装命令即可成功。

2.4 启动 MySQL 并验证服务状态

步骤 1:启动 MySQL 服务
# 启动 MySQL 服务
systemctl start mysqld.service
# 设置开机自启(可选,建议开启,避免重启系统后服务失效)
systemctl enable mysqld
# 重载系统服务配置
systemctl daemon-reload
步骤 2:验证 MySQL 服务是否运行

通过进程查询确认 MySQL 服务正常启动:

ps axj | grep mysqld

若输出中出现 /usr/sbin/mysqld 相关进程,说明服务启动成功。

2.5 登录 MySQL 并修改初始密码

MySQL 5.7 安装后会自动生成临时 root 密码,存放在 /var/log/mysqld.log 日志文件中,必须先通过临时密码登录,再修改为自定义密码,以下提供 3 种登录方法,按顺序尝试即可。

方法 1:通过临时密码登录(推荐,99% 可用)
# 从日志中提取临时 root 密码
sudo grep 'temporary password' /var/log/mysqld.log

输出示例:root@localhost: yLMalT:v+5l*(冒号后为临时密码,复制即可)

# 登录 MySQL,输入上述临时密码
mysql -uroot -p

密码策略限制:MySQL 5.7 默认开启密码强度验证,要求密码包含数字、符号、大小写字母,长度至少 8 位,新手可先关闭该策略,再设置简单密码:

-- 关闭密码强度验证策略(0 为最低,1 为中,2 为高)
set global validate_password_policy=0;
-- 设置密码最小长度为 1 位
set global validate_password_length=1;
-- 修改 root 本地登录密码(替换为自己的密码,示例:[email protected])
ALTER USER 'root'@'localhost' IDENTIFIED BY '[email protected]';
-- 刷新权限,使配置生效
FLUSH PRIVILEGES;

执行完成后,退出 MySQL 重新登录即可使用新密码。

方法 2:直接登录(适用于新版 MySQL,无临时密码)

若上述命令未提取到临时密码,说明安装的 MySQL 版本无初始密码,直接执行如下命令登录:

mysql -uroot -p

出现密码输入框时直接回车,即可成功登录,后续按方法 1 修改密码即可。

方法 3:跳过权限验证登录(适用于密码丢失 / 登录失败)

若前两种方法均失败,可通过修改配置文件跳过 MySQL 权限验证,强制登录后重置密码:

# 编辑 MySQL 主配置文件
vim /etc/my.cnf

在 [mysqld] 节点最后添加如下配置,保存并退出(vim 中按 i 编辑,ESC+:wq 保存):

# 跳过 MySQL 权限验证
skip-grant-tables
# 重启 MySQL 服务,使配置生效
systemctl restart mysqld.service
# 直接登录,无需输入密码
mysql -uroot

登录后执行如下 SQL 重置密码,重置后必须删除 skip-grant-tables 配置并重启服务,否则 MySQL 无权限验证,存在安全风险:

-- 切换到 mysql 系统库
USE mysql;
-- 重置 root 密码(替换为自己的密码)
UPDATE user SET authentication_string=PASSWORD('[email protected]') WHERE User='root' AND Host='localhost';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出 MySQL
exit;
# 编辑配置文件,删除 skip-grant-tables 配置
vim /etc/my.cnf
# 重启 MySQL 服务
systemctl restart mysqld.service

2.6 MySQL 配置优化(编码、存储引擎)

默认的 MySQL 配置存在中文编码乱码、存储引擎未指定等问题,需要修改 /etc/my.cnf 配置文件,优化核心参数,本次配置UTF-8 编码和InnoDB 默认存储引擎(MySQL 主流存储引擎,支持事务、行锁)。

# 编辑配置文件
vim /etc/my.cnf

按如下内容修改,保留原有配置,补充缺失项即可:

[mysql]
# 客户端编码(暂不设置,避免 MySQL 汉字回显 bug,可后续根据需求开启)
# default-character-set=utf8
[mysqld]
# MySQL 端口,默认 3306
port=3306
# 数据存储目录
datadir=/var/lib/mysql
# 套接字文件
socket=/var/lib/mysql/mysql.sock
# 禁用符号链接,防止安全风险
symbolic-links=0
# 日志文件路径
log-error=/var/log/mysqld.log
# 进程文件路径
pid-file=/var/run/mysqld/mysqld.pid
# 服务端编码,UTF-8
character-set-server=utf8
# 默认存储引擎 InnoDB
default-storage-engine=innodb
# InnoDB 缓冲池大小,根据服务器内存调整,专用服务器设为内存 70%,普通服务器 10%
# innodb_buffer_pool_size = 128M

修改完成后,重启 MySQL 服务使配置生效:

systemctl restart mysqld.service

2.7 CentOS 7 安装后常见问题解决

问题 1:配置 UTF-8 后仍无法输入中文

原因:终端本身不支持 UTF-8 编码,而非 MySQL 配置问题。

解决方案:检查终端 LANG 环境变量,确保为 UTF-8 编码:

# 查看 LANG 变量
env | grep LANG

若输出不是 LANG=en_US.utf8,则修改终端编码(永久生效需修改 /etc/profile 文件):

# 临时设置 UTF-8 编码
export LANG=en_US.utf8
# 永久设置,编辑 profile 文件
echo "export LANG=en_US.utf8" >> /etc/profile
# 使配置生效
source /etc/profile
问题 2:MySQL 服务启动失败

排查思路:查看 MySQL 错误日志,定位具体失败原因:

# 查看错误日志最后 100 行
tail -100 /var/log/mysqld.log

常见原因:端口 3306 被占用、数据目录权限不足、配置文件语法错误,对应解决即可。

三、Ubuntu 系统下 MySQL 完整安装配置

Ubuntu 系统(以 20.04/22.04 为例)安装 MySQL 和 CentOS 7 差异较大,Ubuntu 使用 apt 包管理器,且默认预装的 MariaDB 处理方式更简单,本次安装 MySQL 8.0 版本(Ubuntu 官方源中主流版本),步骤分为卸载 MariaDB→更新 apt 源→安装 MySQL→初始化配置→远程访问配置。

3.1 卸载系统自带 MariaDB

# 停止 MariaDB 服务
sudo systemctl stop mariadb
# 卸载 MariaDB 所有包
sudo apt remove mariadb-server mariadb-client mariadb-common -y
# 清理残留配置文件
sudo apt autoremove -y
sudo apt clean

3.2 更新 apt 源并安装 MySQL

Ubuntu 默认 apt 源包含 MySQL 官方包,直接更新源后安装即可,推荐安装 mysql-server(包含服务端 + 客户端 + 依赖):

# 更新 apt 软件源
sudo apt update && sudo apt upgrade -y
# 安装 MySQL 服务
sudo apt install mysql-server -y

安装过程中无需手动设置密码,Ubuntu 的 MySQL 会自动创建 root 用户并采用 auth_socket 认证方式(仅本地 root 用户可登录,无需密码)。

3.3 验证 MySQL 服务状态

# 查看 MySQL 服务状态
sudo systemctl status mysql
# 设置开机自启
sudo systemctl enable mysql

若输出中显示 active (running),说明服务启动成功。

3.4 配置 MySQL root 用户密码与登录方式

Ubuntu 安装的 MySQL 默认不允许密码登录,需要先修改认证方式为 mysql_native_password,再设置密码,步骤如下:

# 以 root 身份登录 MySQL(Ubuntu 本地免密)
sudo mysql -uroot

执行如下 SQL 语句,修改 root 密码并更改认证方式:

-- 切换到 mysql 系统库
USE mysql;
-- 修改 root 认证方式为密码认证,设置密码(替换为自己的密码)
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MySql@123456';
-- 刷新权限
FLUSH PRIVILEGES;
-- 退出 MySQL
exit;

修改完成后,即可通过密码正常登录:

mysql -uroot -p

输入设置的密码,即可成功登录。

3.5 Ubuntu MySQL 编码与核心配置优化

Ubuntu 的 MySQL 主配置文件为 /etc/mysql/mysql.conf.d/mysqld.cnf,编辑该文件优化编码和核心参数:

# 编辑配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在 [mysqld] 节点添加 / 修改如下配置:

# 服务端编码
character-set-server = utf8mb4
# 排序规则
collation-server = utf8mb4_unicode_ci
# 默认存储引擎
default-storage-engine = InnoDB
# 端口
port = 3306
# 允许远程访问(注释掉 bind-address,默认绑定 127.0.0.1,仅本地可访问)
# bind-address = 127.0.0.1
# 编辑客户端配置文件,设置客户端编码
sudo vim /etc/mysql/conf.d/mysql.cnf

在 [mysql] 节点添加:

default-character-set = utf8mb4

修改完成后,重启 MySQL 服务:

sudo systemctl restart mysql

验证编码配置是否生效:

-- 登录 MySQL 后执行
SHOW VARIABLES LIKE '%character%';
SHOW VARIABLES LIKE '%collation%';

若所有编码项均为 utf8mb4,说明配置成功(utf8mb4 是 UTF-8 的超集,支持 emoji 和特殊中文)。

3.6 开启 Ubuntu MySQL 远程访问(可选)

默认情况下 MySQL 仅允许本地访问,若需要在其他机器上连接 Ubuntu 的 MySQL,需完成配置文件修改 + 权限授权 + 防火墙开放三步,前文已注释掉 bind-address,接下来授权远程访问并开放 3306 端口:

步骤 1:授权 root 用户远程访问
mysql -uroot -p
-- 授权 root 用户从任意 IP 访问(% 表示任意 IP,可替换为具体 IP,如 192.168.1.100)
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'MySql@123456' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;
exit;
步骤 2:开放 Ubuntu 防火墙 3306 端口

Ubuntu 默认使用 ufw 防火墙,开放 3306 端口(TCP 协议,MySQL 默认端口):

# 查看防火墙状态
sudo ufw status
# 开放 3306/TCP 端口
sudo ufw allow 3306/tcp
# 重启防火墙
sudo ufw reload

完成后,即可在本地通过 Navicat、DataGrip 等工具,输入 Ubuntu 服务器 IP、3306 端口、root 账号密码连接 MySQL。

总结

MySQL 的环境配置是基础,掌握不同系统的安装方法,能快速适配各种开发环境。后续可以继续学习 MySQL 的用户管理、数据库设计、SQL 语句优化等内容,打好后端开发的数据库基础。

目录

  1. 前言
  2. 一、前置知识:为什么要先处理 MariaDB?
  3. 二、CentOS 7 系统下 MySQL 完整安装配置
  4. 2.1 卸载系统自带 MariaDB / 旧版 MySQL
  5. 步骤 1:检查 MariaDB 进程并停止
  6. 检查 MariaDB 进程
  7. 停止 MariaDB 服务
  8. 再次检查,确认无相关进程
  9. 步骤 2:检查并卸载相关安装包
  10. 查询 MariaDB 安装包
  11. 查询 MySQL 安装包(若有旧版)
  12. 卸载 MariaDB(替换为查询到的包名,也可直接批量卸载)
  13. 若有多个包,可直接通配符卸载
  14. 步骤 3:备份重要配置和数据
  15. 备份配置文件
  16. 备份数据存储目录
  17. 2.2 配置 MySQL 官方 YUM 源
  18. 步骤 1:查看系统版本
  19. 步骤 2:下载并安装官方 YUM 源
  20. 下载 MySQL 5.7 YUM 源包
  21. 安装 YUM 源(普通用户加 sudo,解决权限问题)
  22. 步骤 3:验证 YUM 源安装成功
  23. 查看 YUM 源目录,确认出现 MySQL 相关 repo 文件
  24. 步骤 4:检查 YUM 源可用性
  25. 2.3 安装 MySQL 服务
  26. 2.4 启动 MySQL 并验证服务状态
  27. 步骤 1:启动 MySQL 服务
  28. 启动 MySQL 服务
  29. 设置开机自启(可选,建议开启,避免重启系统后服务失效)
  30. 重载系统服务配置
  31. 步骤 2:验证 MySQL 服务是否运行
  32. 2.5 登录 MySQL 并修改初始密码
  33. 方法 1:通过临时密码登录(推荐,99% 可用)
  34. 从日志中提取临时 root 密码
  35. 登录 MySQL,输入上述临时密码
  36. 方法 2:直接登录(适用于新版 MySQL,无临时密码)
  37. 方法 3:跳过权限验证登录(适用于密码丢失 / 登录失败)
  38. 编辑 MySQL 主配置文件
  39. 跳过 MySQL 权限验证
  40. 重启 MySQL 服务,使配置生效
  41. 直接登录,无需输入密码
  42. 编辑配置文件,删除 skip-grant-tables 配置
  43. 重启 MySQL 服务
  44. 2.6 MySQL 配置优化(编码、存储引擎)
  45. 编辑配置文件
  46. 客户端编码(暂不设置,避免 MySQL 汉字回显 bug,可后续根据需求开启)
  47. default-character-set=utf8
  48. MySQL 端口,默认 3306
  49. 数据存储目录
  50. 套接字文件
  51. 禁用符号链接,防止安全风险
  52. 日志文件路径
  53. 进程文件路径
  54. 服务端编码,UTF-8
  55. 默认存储引擎 InnoDB
  56. InnoDB 缓冲池大小,根据服务器内存调整,专用服务器设为内存 70%,普通服务器 10%
  57. innodbbufferpool_size = 128M
  58. 2.7 CentOS 7 安装后常见问题解决
  59. 问题 1:配置 UTF-8 后仍无法输入中文
  60. 查看 LANG 变量
  61. 临时设置 UTF-8 编码
  62. 永久设置,编辑 profile 文件
  63. 使配置生效
  64. 问题 2:MySQL 服务启动失败
  65. 查看错误日志最后 100 行
  66. 三、Ubuntu 系统下 MySQL 完整安装配置
  67. 3.1 卸载系统自带 MariaDB
  68. 停止 MariaDB 服务
  69. 卸载 MariaDB 所有包
  70. 清理残留配置文件
  71. 3.2 更新 apt 源并安装 MySQL
  72. 更新 apt 软件源
  73. 安装 MySQL 服务
  74. 3.3 验证 MySQL 服务状态
  75. 查看 MySQL 服务状态
  76. 设置开机自启
  77. 3.4 配置 MySQL root 用户密码与登录方式
  78. 以 root 身份登录 MySQL(Ubuntu 本地免密)
  79. 3.5 Ubuntu MySQL 编码与核心配置优化
  80. 编辑配置文件
  81. 服务端编码
  82. 排序规则
  83. 默认存储引擎
  84. 端口
  85. 允许远程访问(注释掉 bind-address,默认绑定 127.0.0.1,仅本地可访问)
  86. bind-address = 127.0.0.1
  87. 编辑客户端配置文件,设置客户端编码
  88. 3.6 开启 Ubuntu MySQL 远程访问(可选)
  89. 步骤 1:授权 root 用户远程访问
  90. 步骤 2:开放 Ubuntu 防火墙 3306 端口
  91. 查看防火墙状态
  92. 开放 3306/TCP 端口
  93. 重启防火墙
  94. 总结

更多推荐文章

查看全部
  • 校园社团活动管理平台设计:基于 SpringBoot 与 Vue 的实现
  • Spring Boot RESTful API 开发、测试与安全实战
  • GraphRAG 与传统 RAG 的 7 大区别及融合方案
  • 集成 Hardhat 与 Alchemy 在 Sepolia 测试网部署智能合约实战
  • 法律领域自然语言处理(NLP)应用与实战
  • 风险管控而非修补:金仓 SQL 防火墙体系化实践
  • GitHub Copilot 实战:AI 编程助手提升开发效率指南
  • SenseVoice Small 语音情感识别:WebUI 使用与二次开发
  • CopilotKit:AI Copilot 前端开发框架
  • 基于 Llama-Factory 部署微调大模型 API 服务实战
  • Openclaw 连接本地 Ollama 与 Qwen WebUI 无响应问题排查
  • CarelessWhisper: 将 Whisper 转变为因果流式模型
  • OpenTiny NEXT 前端智能化系列直播:AI 前端与 WebAgent 学习路径
  • 前端团队协作最佳实践
  • OpenClaw 钉钉群聊多机器人配置指南
  • FPGA 初学者指南:Vivado 下载与烧录流程详解
  • 哪些 AI 工具可生成 Word 文档
  • 基于 7 系列 FPGA 实现万兆网通信
  • 金仓 KES 迁移适配实测:从 Oracle 到 SQL Server 的兼容性验证
  • 斯坦福 CS336 作业实战:从零实现 Transformer 语言模型架构

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online