数据库教程FGMT22‑Oracle RAC+DG生产实战(2):Oracle19c/26ai RAC for Linux8/9

举报
风哥数据库教程 发表于 2026/09/13 14:49:45 2026/09/13
【摘要】 数据库教程FGMT29‑Linux平台MySQL5.7安装配置与管理入门<!DOCTYPE html><html lang="zh-CN"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <meta name="gener...

数据库教程FGMT29‑Linux平台MySQL5.7安装配置与管理入门

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="generator" content="FGCMS v1.0">
    <meta name="fgcms:id" content="ART-202609-5594">
    <meta name="fgcms:created" content="2026-09-13T03:31:53.165Z">
    <meta name="fgcms:updated" content="2026-09-13T03:31:53.165Z">
    <meta name="fgcms:status" content="draft">
    <meta name="fgcms:tags" content="mysql,linux,innodb,ssl,binlog">
    <meta name="fgcms:category" content="数据库">
    <meta name="fgcms:word-count" content="5033">
    <title>数据库教程FGMT29‑Linux平台MySQL5.7安装配置与管理入门</title>
    <style>
        /* 通用重置 */
        * { margin: 0; padding: 0; box-sizing: border-box; }
        
        /* 页面主体 */
        body {
            font-family: 'Microsoft YaHei', 'PingFang SC', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
            font-size: 15px;
            line-height: 1.8;
            color: #333;
            background: #fff;
            padding: 0;
        }
        
        /* 文章容器 - 居中显示 */
        .article-container {
            max-width: 900px;
            margin: 0 auto;
            padding: 40px 32px;
        }
        
        /* 文章标题 */
        .article-title {
            font-size: 28px;
            font-weight: 700;
            color: #1a1a1a;
            margin: 0 0 20px 0;
            padding-bottom: 16px;
            border-bottom: 2px solid #1890ff;
            line-height: 1.4;
        }
        
        /* 文章元信息 */
        .article-meta {
            display: flex;
            flex-wrap: wrap;
            gap: 16px;
            font-size: 13px;
            color: #666;
            margin-bottom: 28px;
            padding: 14px 18px;
            background: linear-gradient(135deg, #f8f9fa 0%, #f0f2f5 100%);
            border-radius: 8px;
            border-left: 4px solid #1890ff;
        }
        
        .article-meta .meta-item {
            display: flex;
            align-items: center;
            gap: 6px;
        }
        
        .article-meta .meta-label {
            color: #888;
            font-weight: 500;
        }
        
        /* 文章正文 */
        .article-content {
            font-size: 15px;
            line-height: 1.9;
        }
        
        /* 段落 */
        .article-content p {
            margin: 16px 0;
            text-align: justify;
        }
        
        /* 标题层级 - 使用纯标签确保平台兼容 */
        h1 { font-size: 24px; color: #1a1a1a; margin: 28px 0 16px; font-weight: 700; border-bottom: 1px solid #e8e8e8; padding-bottom: 8px; }
        h2 { font-size: 20px; color: #2c3e50; margin: 24px 0 12px; font-weight: 600; border-left: 4px solid #1890ff; padding-left: 12px; }
        h3 { font-size: 17px; color: #34495e; margin: 20px 0 10px; font-weight: 600; }
        h4 { font-size: 15px; color: #555; margin: 16px 0 8px; font-weight: 600; }
        h5, h6 { font-size: 14px; color: #666; margin: 12px 0 6px; font-weight: 600; }
        
        /* 链接 */
        a { color: #1890ff; text-decoration: none; border-bottom: 1px solid transparent; }
        a:hover { color: #40a9ff; border-bottom-color: #40a9ff; }
        
        /* 列表 */
        ul, ol { margin: 12px 0; padding-left: 24px; }
        li { margin: 6px 0; line-height: 1.8; }
        
        /* 代码 - 行内 */
        code {
            background: linear-gradient(135deg, #f5f7fa 0%, #e8ecf0 100%);
            padding: 2px 6px;
            border-radius: 4px;
            font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
            font-size: 13px;
            color: #d63e7e;
            border: 1px solid #e8e8e8;
        }
        
        /* 代码块 */
        pre {
            background: linear-gradient(135deg, #1e1e1e 0%, #252526 100%);
            border-radius: 8px;
            padding: 16px 20px;
            overflow-x: auto;
            margin: 16px 0;
            border: 1px solid #3c3c3c;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
            position: relative;
        }
        
        pre code {
            background: transparent;
            padding: 0;
            border: none;
            font-size: 13px;
            color: #d4d4d4;
            line-height: 1.6;
            display: block;
        }
        
        /* 引用块 */
        blockquote {
            margin: 16px 0;
            padding: 14px 20px;
            background: linear-gradient(135deg, #fff9e6 0%, #fff3cd 100%);
            border-left: 4px solid #ffa940;
            border-radius: 0 6px 6px 0;
            color: #7c6a3e;
        }
        
        blockquote p { margin: 0; }
        
        /* 表格 */
        table {
            width: 100%;
            border-collapse: collapse;
            margin: 16px 0;
            font-size: 14px;
            box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
            border-radius: 6px;
            overflow: hidden;
        }
        
        thead { background: linear-gradient(135deg, #1890ff 0%, #096dd9 100%); }
        th {
            color: #fff;
            font-weight: 600;
            padding: 12px 16px;
            text-align: left;
            border: none;
        }
        td {
            padding: 10px 16px;
            border-bottom: 1px solid #f0f0f0;
        }
        tbody tr:nth-child(even) { background: #fafafa; }
        tbody tr:hover { background: #f0f7ff; }
        
        /* 图片 */
        img {
            max-width: 100%;
            height: auto;
            border-radius: 6px;
            margin: 12px 0;
            box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
        }
        
        /* 分隔线 */
        hr {
            border: none;
            height: 1px;
            background: linear-gradient(90deg, transparent, #d9d9d9, transparent);
            margin: 24px 0;
        }
        
        /* 强调 */
        strong { color: #d4380d; font-weight: 600; }
        em { color: #c41d7f; }
        
        /* 响应式 */
        @media (max-width: 768px) {
            .article-container { padding: 20px 16px; }
            .article-title { font-size: 22px; }
            .article-meta { flex-direction: column; gap: 8px; }
        }
    </style>
</head>
<body>
    <div class="article-container">
        <h1 class="article-title">数据库教程FGMT29‑Linux平台MySQL5.7安装配置与管理入门</h1>
        <div class="article-meta">
            <span class="meta-item"><span class="meta-label">分类:</span>数据库</span>
            <span class="meta-item"><span class="meta-label">标签:</span>mysql,linux,innodb,ssl,binlog</span>
            <span class="meta-item"><span class="meta-label">字数:</span>5033</span>
        </div>
        <div class="article-content">
            <p>数据库教程FGMT29‑Linux平台MySQL5.7安装配置与管理入门</p>
<h2>前言</h2>
<p>数据库是IT业务系统最核心的底层组件,MySQL5.7作为企业生产环境广泛落地的开源关系型数据库版本,大量OLTP业务、互联网业务、中小型企业核心系统均采用该版本进行业务数据存储与计算。风哥教程本文围绕Linux操作系统环境,完整覆盖MySQL5.7项目落地全流程,包含业务项目场景分析、操作系统环境预调优、软件介质获取、四种主流部署方式(二进制、源码编译、YUM、RPM)、实例参数配置、初始化、启停管理、远程访问授权、SSL安全连接部署、日常运维命令、故障排查、实例完整卸载等全链路技术内容。</p>

<p>风哥教程本文的硬件基准环境为:主机`fgedu‑net‑cn1`、`fgedu‑net‑cn2`,CPU规格8核,物理内存64GB,存储使用SSD介质;所有文件路径统一使用`/fgedudb`,数据库实例名、业务库名、业务账号统一使用`fgedudb`、`fgedu`;所有配置参数基于64G内存8CPU硬件规格进行调优配置,适配生产OLTP业务负载。</p>

<p>风哥教程本文的内容结构分为项目业务场景、操作系统运行环境准备、介质下载、多种方式安装部署、实例参数配置、初始化与启停、连接测试、SSL安全连接、基础管理命令、故障排查、数据库卸载。适合DBA、运维工程师、云计算工程师、后端开发人员学习使用,能够掌握企业生产环境MySQL5.7完整部署与基础运维能力。</p>

<h3>本文内容大纲</h3>
<ul><li>Linux平台MySQL5.7项目业务场景介绍</li>
<li>MySQL数据库运行操作系统环境准备</li>
<li>MySQL官方介质下载方式与版本选型</li>
<li>Linux二进制包方式部署MySQL5.7实例</li>
<li>Linux源码编译方式部署MySQL5.7实例</li>
<li>Linux YUM仓库方式部署MySQL5.7实例</li>
<li>Linux RPM包方式部署MySQL5.7实例</li>
<li>MySQL实例安装后核心参数配置(64G/8C硬件)</li>
<li>MySQL实例初始化、启停管理与状态检查</li>
<li>MySQL本地与远程连接授权实战</li>
<li>MySQL5.7 SSL加密安全连接配置</li>
<li>MySQL日常基础管理命令与常见故障处理</li>
<li>Linux环境MySQL5.7完整卸载操作</li>
<li>风哥针对本文总结</li></ul>
<hr/>

<h2>一、Linux平台MySQL5.7项目场景介绍</h2>
<p>MySQL5.7在企业内部拥有非常广泛的落地场景,风哥将生产环境的典型业务场景做分类说明。</p>

<p>第一种场景,中小型互联网Web业务系统。网站、小程序、后台管理系统,业务并发中等,读写混合负载,业务数据量从几十GB到数百GB,采用单机MySQL5.7,后期演进为主从复制架构,主机`fgedu‑net‑cn1`作为主实例,`fgedu‑net‑cn2`作为从实例,支撑业务读写。该场景下优先使用二进制包部署,自由度高,参数可深度定制,适合DBA自主管控数据库全目录。</p>

<p>第二种场景,企业内部业务系统,ERP、OA、CRM等传统业务,并发量不高,数据可靠性优先,运维人员较少,追求部署简单、系统包统一管理,优先选择RPM或者YUM方式安装,跟随操作系统包管理器统一管理软件生命周期,降低运维复杂度。</p>

<p>第三种场景,定制化安全合规场景,部分政企、信创环境需要对MySQL源码进行修改,开启特定编译参数,关闭不需要的组件,适配安全规范,此时需要采用源码编译安装,自行指定编译选项,裁剪功能模块,生成定制化二进制程序。</p>

<p>第四种场景,测试开发环境,开发、测试人员快速搭建多套MySQL实例,用于功能测试、压力测试,YUM/RPM可以快速完成部署;二进制包适合单机多实例部署,一台主机运行多个`fgedudb`实例,隔离不同测试环境数据。</p>

<blockquote>风哥 itpux‑com</blockquote>

<p>不同部署方式没有绝对优劣,需要结合业务规模、运维团队能力、安全合规要求、后续升级维护成本综合选型。二进制包部署灵活性最高,生产环境使用占比最高;YUM/RPM操作简单,适合标准化环境;源码编译适合特殊定制需求,编译耗时长,后续升级维护成本高,非必要生产环境不推荐。</p>

<p>MySQL5.7的核心特性包括InnoDB作为默认存储引擎、在线DDL、原生JSON数据类型、性能schema增强、密码插件mysql_native_password、多线程复制等,截止目前仍然大量存量业务在运行,掌握MySQL5.7部署运维是DBA岗位的基础能力。</p>

<h2>二、MySQL数据库运行操作系统环境准备</h2>
<p>MySQL数据库性能稳定性高度依赖底层操作系统配置,在部署数据库实例之前,必须完成操作系统层面的预配置,避免后续出现文件句柄不足、内存swap抖动、网络连接异常、权限报错等问题,本章节所有操作均在root操作系统账号执行,主机`fgedu‑net‑cn1`环境。</p>

<h3>2.1 关闭系统防火墙与SELinux(测试环境;生产按需开放端口)</h3>
<pre><code>#临时关闭selinux
setenforce 0
#永久关闭selinux
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
#关闭firewalld
systemctl stop firewalld
systemctl disable firewalld</code></pre>
<blockquote>说明:生产环境不建议直接关闭防火墙,需要开放MySQL端口3306的访问策略;SELinux生产环境可以配置规则而不是直接关闭,测试环境为简化操作直接关闭。</blockquote>

<h3>2.2 操作系统依赖软件包安装</h3>
<p>MySQL5.7运行依赖`libaio`异步IO库、`numactl`NUMA组件、`perl`、`net‑tools`等工具,CentOS7环境执行:</p>
<pre><code>yum install -y libaio libaio‑devel numactl perl net‑tools wget gcc‑cmake ncurses‑devel bison openssl‑devel</code></pre>

<h3>2.3 用户与用户组创建</h3>
<p>创建操作系统mysql账号,用于运行mysqld进程,数据库进程禁止使用root账号运行,保障安全隔离:</p>
<pre><code>groupadd mysql
useradd ‑r ‑g mysql ‑s /sbin/nologin mysql
id mysql</code></pre>

<blockquote>风哥教程 113257174</blockquote>

<h3>2.4 内核参数调优,编辑/etc/sysctl.conf</h3>
<p>针对64G内存8C数据库主机,修改虚拟内存、网络内核参数,执行`vim /etc/sysctl.conf`写入下面参数:</p>
<pre><code>vm.swappiness = 5
vm.dirty_ratio = 40
vm.dirty_background_ratio = 10
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
fs.file‑max = 655350</code></pre>
<p>配置完成生效内核参数:</p>
<pre><code>sysctl ‑p</code></pre>
<p>参数说明:`vm.swappiness=5`尽可能减少操作系统将MySQL内存交换到swap分区,避免数据库性能抖动;`fs.file‑max`调整系统全局最大文件句柄数。</p>

<h3>2.5 操作系统资源限制配置</h3>
<p>修改文件句柄、进程数限制,编辑`/etc/security/limits.conf`,在文件末尾追加:</p>
<pre><code>mysql soft nofile 65535
mysql hard nofile 65535
mysql soft nproc 65535
mysql hard nproc 65535
root soft nofile 65535
root hard nofile 65535</code></pre>
<p>同时systemd服务资源限制,编辑`/etc/systemd/system.conf`:</p>
<pre><code>DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535</code></pre>
<p>重载systemd配置:</p>
<pre><code>systemctl daemon‑reload</code></pre>

<h3>2.6 关闭透明大页THP</h3>
<p>透明大页会造成InnoDB内存性能抖动,数据库服务器建议关闭:</p>
<pre><code>echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag</code></pre>
<p>写入`/etc/rc.local`实现开机自动关闭。</p>

<h3>2.7 创建数据库目录结构</h3>
<p>风哥教程本文全部路径统一为`/fgedudb`,分别创建软件目录、数据目录、日志目录、临时文件目录:</p>
<pre><code>mkdir ‑p /fgedudb/mysql‑soft
mkdir ‑p /fgedudb/fgedudb‑data
mkdir ‑p /fgedudb/fgedudb‑log/binlog
mkdir ‑p /fgedudb/fgedudb‑log/slowlog
mkdir ‑p /fgedudb/fgedudb‑tmp
chown ‑R mysql:mysql /fgedudb
chmod 750 ‑R /fgedudb
ls ‑ld /fgedudb/*</code></pre>

<blockquote>网上搜索风哥教程可以学习全套数据库教程</blockquote>

<p>目录规划说明:软件程序包存放`/fgedudb/mysql‑soft`;实例数据文件存放`/fgedudb/fgedudb‑data`;binlog二进制日志、慢查询日志拆分存放于独立日志目录;临时文件目录`/fgedudb/fgedudb‑tmp`,所有目录归属操作系统mysql用户,权限750,防止其他普通用户读取数据库文件。</p>

<h2>三、MySQL数据库介质下载与版本选型</h2>
<p>MySQL官方归档下载地址为MySQL Community Archives,企业生产环境优先选择GA稳定版本,不选用开发版、beta测试版本,风哥教程本文选用MySQL5.7.44版本作为演示版本,该版本为5.7系列后期稳定维护版本。</p>

<p>下载介质分为四类:Linux‑Generic通用二进制tar包、源码tar包、RPM包集合、YUM仓库repo配置包。</p>

<h3>3.1 二进制包下载示例</h3>
<pre><code>cd /fgedudb/mysql‑soft
wget [https://downloads.mysql.com/archives/get/p/23/file/mysql](https://downloads.mysql.com/archives/get/p/23/file/mysql)‑5.7.44‑linux‑glibc2.12‑x86_64.tar.gz</code></pre>

<h3>3.2 源码包下载示例</h3>
<pre><code>wget [https://downloads.mysql.com/archives/get/p/23/file/mysql](https://downloads.mysql.com/archives/get/p/23/file/mysql)‑5.7.44.tar.gz</code></pre>

<h3>3.3 RPM包组下载</h3>
<p>可以批量下载server、client、libs、devel全套rpm包,适合内网离线环境部署;外网环境优先使用YUM repo包在线安装。</p>

<p>版本选型注意要点:</p>
<ul><li>生产环境尽量选择小版本号高的稳定GA版本,修复大量安全bug和InnoDB故障bug;</li>
<li>glibc2.12通用二进制包兼容CentOS7、CentOS8主流发行版;</li>
<li>下载完成后建议校验MD5校验值,确认介质没有损坏或者被篡改。</li></ul>
<blockquote>风哥数据库教程 itpux‑com</blockquote>

<h2>四、Linux平台二进制包方式安装MySQL5.7(生产环境主流)</h2>
<p>二进制包安装,不需要编译,解压后直接配置初始化,生产环境使用占比最高,本章节主机`fgedu‑net‑cn1`,实例名称`fgedudb`。</p>

<h3>4.1 解压二进制包</h3>
<pre><code>cd /fgedudb/mysql‑soft
tar ‑zxvf mysql‑5.7.44‑linux‑glibc2.12‑x86_64.tar.gz
#创建软链接
ln ‑s mysql‑5.7.44‑linux‑glibc2.12‑x86_64 /fgedudb/mysql‑soft/mysql
ls ‑l /fgedudb/mysql‑soft</code></pre>

<h3>4.2 配置my.cnf配置文件(64G内存,8CPU)</h3>
<p>创建MySQL配置文件`/etc/my‑fgedudb.cnf`,该实例为`fgedudb`实例,**64G物理内存8核CPU硬件规格参数**,InnoDB缓冲池分配40G,占物理内存60%左右,预留内存给操作系统、binlog缓存、连接缓冲区等。</p>

<p>`vim /etc/my‑fgedudb.cnf`完整配置内容:</p>
<pre><code>[mysqld]
user=mysql
port=3306
socket=/fgedudb/fgedudb‑data/mysql.sock
pid‑file=/fgedudb/fgedudb‑data/fgedudb.pid
basedir=/fgedudb/mysql‑soft/mysql
datadir=/fgedudb/fgedudb‑data
tmpdir=/fgedudb/fgedudb‑tmp

#内存参数 64G内存8CPU
innodb_buffer_pool_size=40G
innodb_buffer_pool_instances=8
innodb_log_file_size=4G
innodb_log_buffer_size=256M
innodb_file_per_table=1
innodb_flush_log_at_trx_commit=1
sync_binlog=1

#IO参数
innodb_read_io_threads=64
innodb_write_io_threads=64
innodb_io_capacity=2000
innodb_io_capacity_max=4000

#连接参数
max_connections=3000
max_connect_errors=100000
open_files_limit=65535
back_log=1024
max_allowed_packet=1G

#字符集
character‑set‑server=utf8mb4
collation‑server=utf8mb4_unicode_ci

#二进制日志
log_bin=/fgedudb/fgedudb‑log/binlog/fgedudb‑bin
binlog_format=ROW
expire_logs_days=7
server‑id=1

#慢查询日志
slow_query_log=ON
slow_query_log_file=/fgedudb/fgedudb‑log/slowlog/fgedudb‑slow.log
long_query_time=1
log_queries_not_using_indexes=ON

#其他参数
skip‑name‑resolve=1
explicit_defaults_for_timestamp=1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

[mysqld_safe]
log‑error=/fgedudb/fgedudb‑data/fgedudb‑error.log

[mysql]
socket=/fgedudb/fgedudb‑data/mysql.sock
default‑character‑set=utf8mb4</code></pre>

<blockquote>上51CTO搜索风哥可以学习全套数据库教程</blockquote>

<p>参数简要说明:</p>
<ul><li>`innodb_buffer_pool_size=40G`:64G主机分配40G给InnoDB缓冲池,是MySQL最重要内存参数;</li>
<li>`innodb_log_file_size=4G`:redo日志文件大小,OLTP业务设置2‑4G;</li>
<li>`sync_binlog=1`、`innodb_flush_log_at_trx_commit=1`:保证ACID数据安全,最高安全级别;</li>
<li>`binlog_format=ROW`行模式复制,生产环境标准配置;</li>
<li>`skip‑name‑resolve=1`关闭域名解析,避免连接卡顿;</li>
<li>`expire_logs_days=7`binlog自动保留7天,防止磁盘占满。</li></ul>
<h3>4.3 执行数据库初始化</h3>
<p>MySQL5.7使用`mysqld --initialize`初始化,生成随机root密码,密码输出到错误日志`/fgedudb/fgedudb‑data/fgedudb‑error.log`。</p>
<pre><code>cd /fgedudb/mysql‑soft/mysql
bin/mysqld --defaults‑file=/etc/my‑fgedudb.cnf --initialize --user=mysql</code></pre>
<p>初始化完成查看临时root密码:</p>
<pre><code>grep 'temporary password' /fgedudb/fgedudb‑data/fgedudb‑error.log</code></pre>

<h3>4.4 配置systemd服务管理</h3>
<p>编写systemd服务单元文件`/usr/lib/systemd/system/mysql‑fgedudb.service`</p>
<pre><code>[Unit]
Description=MySQL fgedudb Database Server
After=network.target

[Service]
User=mysql
Group=mysql
ExecStart=/fgedudb/mysql‑soft/mysql/bin/mysqld --defaults‑file=/etc/my‑fgedudb.cnf
ExecReload=/bin/kill ‑HUP $MAINPID
Restart=on‑failure
LimitNOFILE=65535
LimitNPROC=65535

[Install]
WantedBy=multi‑user.target</code></pre>
<p>重载systemd,启动实例:</p>
<pre><code>systemctl daemon‑reload
systemctl start mysql‑fgedudb
systemctl enable mysql‑fgedudb
systemctl status mysql‑fgedudb</code></pre>

<h3>4.5 修改root初始密码,本地登录</h3>
<pre><code>/fgedudb/mysql‑soft/mysql/bin/mysql ‑S /fgedudb/fgedudb‑data/mysql.sock ‑uroot ‑p</code></pre>
<p>输入初始化输出的临时密码,登录后修改root账号密码:</p>
<pre><code>ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@Fgedu123';
flush privileges;</code></pre>

<h3>4.6 配置环境变量</h3>
<p>编辑`/etc/profile`增加mysql命令环境变量:</p>
<pre><code>echo "export PATH=/fgedudb/mysql‑soft/mysql/bin:\$PATH" >> /etc/profile
source /etc/profile
mysql ‑V</code></pre>

<h2>五、Linux平台源码编译方式安装MySQL5.7</h2>
<p>源码编译适合需要自定义编译参数、裁剪组件的场景,编译依赖cmake工具,编译耗时较长,本章节依旧主机`fgedu‑net‑cn1`,实例`fgedudb`。</p>

<h3>5.1解压源码包</h3>
<pre><code>cd /fgedudb/mysql‑soft
tar ‑zxvf mysql‑5.7.44.tar.gz
cd mysql‑5.7.44</code></pre>

<h3>5.2 cmake编译配置</h3>
<pre><code>cmake \
‑DCMAKE_INSTALL_PREFIX=/fgedudb/mysql‑soft/mysql‑src \
‑DMYSQL_DATADIR=/fgedudb/fgedudb‑data \
‑DSYSCONFDIR=/etc \
‑DWITH_MYISAM_STORAGE_ENGINE=1 \
‑DWITH_INNOBASE_STORAGE_ENGINE=1 \
‑DWITH_PARTITION_STORAGE_ENGINE=1 \
‑DWITH_FEDERATED_STORAGE_ENGINE=0 \
‑DWITH_BLACKHOLE_STORAGE_ENGINE=0 \
‑DWITH_READLINE=1 \
‑DWITH_SSL=system \
‑DWITH_ZLIB=system \
‑DENABLED_LOCAL_INFILE=1 \
‑DMYSQL_UNIX_ADDR=/fgedudb/fgedudb‑data/mysql.sock \
‑DDEFAULT_CHARSET=utf8mb4 \
‑DDEFAULT_COLLATION=utf8mb4_unicode_ci \
‑DMYSQL_TCP_PORT=3306</code></pre>
<blockquote>cmake参数说明:关闭不需要的Federated、Blackhole存储引擎,开启InnoDB、MyISAM,使用系统openssl,默认字符集utf8mb4。</blockquote>

<h3>5.3编译与安装</h3>
<pre><code>make ‑j8
make install</code></pre>
<p>‑j8代表使用8个CPU核心并行编译,编译完成之后,后续配置my.cnf、初始化、systemd服务步骤,与二进制包安装完全一致,参考第四节4.2‑4.6小节。</p>

<blockquote>注意:源码编译生产环境不推荐,升级版本时需要重新编译,维护成本高,仅用于定制化特殊需求场景。</blockquote>

<h2>六、YUM方式安装MySQL5.7实战</h2>
<p>YUM安装适合标准化环境,通过官方yum仓库直接在线安装软件包,自动处理依赖关系,适合测试环境、运维人员少的标准化业务服务器,主机`fgedu‑net‑cn2`。</p>

<h3>6.1下载mysql yum仓库rpm包</h3>
<pre><code>cd /fgedudb/mysql‑soft
wget [https://dev.mysql.com/get/mysql57](https://dev.mysql.com/get/mysql57)‑community‑release‑el7‑5.noarch.rpm
rpm ‑ivh mysql57‑community‑release‑el7‑5.noarch.rpm</code></pre>

<h3>6.2确认yum仓库开启mysql57</h3>
<pre><code>yum repolist enabled | grep mysql
#如果8.0默认开启,关闭8.0,启用5.7
yum‑config‑manager ‑‑enable mysql57‑community
yum‑config‑manager ‑‑disable mysql80‑community</code></pre>

<h3>6.3执行yum安装</h3>
<pre><code>yum install ‑y mysql‑community‑server mysql‑community‑client</code></pre>
<p>安装完成之后,mysqld服务由systemd管理:</p>
<pre><code>systemctl start mysqld
systemctl enable mysqld
systemctl status mysqld</code></pre>

<h3>6.4获取临时密码,登录修改密码</h3>
<p>yum安装的数据目录默认`/var/lib/mysql`,错误日志在`/var/log/mysqld.log`</p>
<pre><code>grep 'temporary password' /var/log/mysqld.log
mysql ‑uroot ‑p
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Root@Fgedu123';
flush privileges;</code></pre>

<blockquote>注意:yum安装默认配置文件`/etc/my.cnf`;如果生产环境需要修改数据目录为`/fgedudb/fgedudb‑data`,需要停止服务迁移数据目录,修改my.cnf参数,修改目录权限。</blockquote>

<h2>七、RPM包离线方式安装MySQL5.7</h2>
<p>内网无法访问外网yum源环境,下载全套RPM包进行离线安装,RPM包顺序安装,先libs、common,再devel,最后server、client。</p>

<pre><code>cd /fgedudb/mysql‑soft
#按顺序执行rpm安装
rpm ‑ivh mysql‑community‑common‑5.7.44‑1.el7.x86_64.rpm
rpm ‑ivh mysql‑community‑libs‑5.7.44‑1.el7.x86_64.rpm
rpm ‑ivh mysql‑community‑devel‑5.7.44‑1.el7.x86_64.rpm
rpm ‑ivh mysql‑community‑client‑5.7.44‑1.el7.x86_64.rpm
rpm ‑ivh mysql‑community‑server‑5.7.44‑1.el7.x86_64.rpm</code></pre>
<p>安装完成之后,启动mysqld服务,后续初始化改密码操作与YUM安装一致。</p>

<h2>八、MySQL安装后测试与远程连接授权</h2>
<p>实例启动成功后,需要创建业务账号`fgedu`,业务库`fgedudb`,授权远程访问权限,用于应用程序连接数据库。</p>

<h3>8.1本地登录数据库</h3>
<pre><code>mysql ‑uroot ‑p</code></pre>

<h3>8.2创建业务数据库fgedudb</h3>
<pre><code>CREATE DATABASE fgedudb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
show databases;</code></pre>

<h3>8.3创建业务账号fgedu,授权远程访问</h3>
<pre><code>CREATE USER 'fgedu'@'%' IDENTIFIED BY 'Fgedu@123456';
GRANT ALL PRIVILEGES ON fgedudb.* TO 'fgedu'@'%';
FLUSH PRIVILEGES;
show grants for fgedu@'%';</code></pre>
<blockquote>说明:`'fgedu'@'%'`代表允许来自任意IP地址登录;生产环境建议将%修改为业务应用服务器IP,缩小访问范围,提升数据库安全。</blockquote>

<h3>8.4远程连接测试</h3>
<p>在另外一台主机测试远程访问,替换数据库主机IP地址:</p>
<pre><code>mysql ‑h fgedu‑net‑cn1的IP ‑ufgedu ‑pFgedu@123456 ‑P3306</code></pre>
<p>连接成功之后执行:</p>
<pre><code>select database();
show databases;</code></pre>

<h2>九、MySQL配置SSL安全连接实战</h2>
<p>MySQL5.7支持SSL加密传输,客户端与数据库之间网络报文加密,防止网络抓包窃取数据,生产环境跨公网访问数据库强烈建议开启SSL连接。</p>

<h3>9.1二进制包环境生成SSL证书文件</h3>
<p>MySQL5.7自带工具`mysql_ssl_rsa_setup`,一键生成CA、服务端、客户端证书密钥文件。</p>
<pre><code>cd /fgedudb/mysql‑soft/mysql
bin/mysql_ssl_rsa_setup --uid=mysql --datadir=/fgedudb/fgedudb‑data
ls /fgedudb/fgedudb‑data/*.pem</code></pre>
<p>生成ca.pem、server‑key.pem、server‑cert.pem等证书文件。</p>

<h3>9.2修改my‑fgedudb.cnf开启ssl</h3>
<p>在[mysqld]段增加参数:</p>
<pre><code>ssl_ca=/fgedudb/fgedudb‑data/ca.pem
ssl_cert=/fgedudb/fgedudb‑data/server‑cert.pem
ssl_key=/fgedudb/fgedudb‑data/server‑key.pem</code></pre>
<p>重启MySQL实例生效:</p>
<pre><code>systemctl restart mysql‑fgedudb</code></pre>

<h3>9.3登录数据库查看SSL状态</h3>
<pre><code>show variables like '%ssl%';</code></pre>
<p>`have_ssl`显示YES代表SSL功能已经启用。</p>

<h3>9.4客户端SSL连接测试</h3>
<pre><code>mysql ‑h 数据库IP ‑ufgedu ‑p --ssl‑mode=REQUIRED</code></pre>
<p>登录之后执行status,输出信息可以看到`SSL: Cipher in use`,代表当前会话使用加密SSL通道传输数据。</p>

<h2>十、MySQL基础管理命令与常见问题排查</h2>
<p>风哥教程本文整理生产环境高频DBA基础管理命令,用于日常状态检查、故障定位。</p>

<h3>10.1实例启停状态管理(二进制systemd方式)</h3>
<pre><code>systemctl start mysql‑fgedudb
systemctl stop mysql‑fgedudb
systemctl restart mysql‑fgedudb
systemctl status mysql‑fgedudb</code></pre>

<h3>10.2登录数据库多种方式</h3>
<pre><code>#socket本地登录
mysql ‑S /fgedudb/fgedudb‑data/mysql.sock ‑uroot ‑p
#TCP本地回环登录
mysql ‑h127.0.0.1 ‑P3306 ‑uroot ‑p
#远程TCP登录
mysql ‑hIP ‑P3306 ‑uroot ‑p</code></pre>

<h3>10.3基础运维SQL</h3>
<pre><code>#查看版本
select version();
#查看当前用户
select user();
#查看数据库进程列表
show processlist;
show full processlist;
#查看变量
show variables like '%max_connections%';
#查看运行状态
show global status like 'Threads_connected';
#查看InnoDB状态
show engine innodb status\G</code></pre>

<h3>10.4常见故障排查思路</h3>
<ul><li>实例启动失败:优先查看错误日志`/fgedudb/fgedudb‑data/fgedudb‑error.log`,排查目录权限、配置参数语法、磁盘满、端口占用;</li>
<li>无法远程连接:检查防火墙、账号授权、skip‑name‑resolve参数;</li>
<li>连接数爆满:观察processlist,定位慢SQL,优化业务SQL或者调大max_connections;</li>
<li>初始化报错:确认libaio依赖包已经安装,目录权限全部归属mysql用户。</li></ul>
<h2>十一、Linux平台MySQL5.7完整卸载实战</h2>
<p>当实例损坏、版本迁移时,需要完成数据库完整卸载,分为二进制包卸载、RPM/YUM包卸载两种场景。</p>

<h3>11.1二进制包实例卸载步骤</h3>
<p>1.停止数据库服务</p>
<pre><code>systemctl stop mysql‑fgedudb
systemctl disable mysql‑fgedudb
rm ‑f /usr/lib/systemd/system/mysql‑fgedudb.service
systemctl daemon‑reload</code></pre>
<p>2.删除软件目录、数据目录、配置文件</p>
<pre><code>rm ‑rf /fgedudb
rm ‑f /etc/my‑fgedudb.cnf
#删除profile环境变量配置,编辑/etc/profile去掉mysql PATH行</code></pre>

<h3>11.2 RPM/YUM安装的MySQL卸载</h3>
<pre><code>systemctl stop mysqld
systemctl disable mysqld
yum remove ‑y mysql‑community‑*
rm ‑rf /var/lib/mysql
rm ‑f /etc/my.cnf
rm ‑rf /var/log/mysqld.log</code></pre>
<blockquote>重要提醒:卸载前确认业务数据已经备份,执行rm删除目录会全部清除业务数据,操作风险极高。</blockquote>

<h2>风哥针对本文总结</h2>
<p>风哥教程本文完整覆盖Linux环境MySQL5.7的项目场景分析、操作系统底层环境调优、介质下载、二进制、源码编译、YUM、RPM四种主流部署方式、基于64G内存8CPU硬件规格的my.cnf参数配置、实例初始化、systemd服务管理、业务账号库创建、远程授权访问、SSL加密连接配置、日常运维命令、故障排查、实例完整卸载全流程。</p>

<p>四种部署方式各有适用边界:二进制包生产环境优先推荐,自由度最高,参数深度可控;YUM/RPM适合标准化、测试环境,部署简单,依赖自动处理;源码编译仅用于特殊安全定制场景,维护成本高,生产环境非必要不使用。操作系统内核参数、资源限制、目录权限是数据库稳定运行的基础,很多数据库后续故障根源来自部署阶段操作系统配置缺失。</p>

<p>部署完成之后,不能仅仅满足实例能够启动,需要完成账号权限最小化、SSL加密、慢查询日志开启、binlog开启、过期日志自动清理等安全与运维配置。生产上线前务必做好业务数据备份策略,定期验证备份文件可用性,规避数据丢失风险。掌握本套风哥教程全部实操内容,能够独立完成企业内部MySQL5.7单机实例部署与基础运维工作,为后续学习主从复制、高可用架构、性能调优打下坚实基础。</p>
        </div>
    </div>
</body>
</html>

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。