linux环境安装MySQL的详细步骤记录(二进制包形式)

 更新时间:2026年01月23日 11:11:19   作者:L162476  
MySQL是一个广泛使用的开源关系型数据库管理系统,最新版本为 8.0,这篇文章主要介绍了linux环境安装MySQL(二进制包形式)的相关资料,需要的朋友可以参考下

前言

二进制包安装 MySQL 是灵活度最高的方式(支持自定义程序目录、数据目录等所有路径),以下是分步骤、带详细解释的完整流程(适配aarch64/x86_64架构,以 MySQL 8.0.44 为例):

一、前置准备(必做:环境检查 + 依赖 + 用户组)

1. 确认系统架构(选对应二进制包)

# 查看系统架构(aarch64/x86_64)
uname -m
  • 若输出aarch64:选aarch64版本的二进制包;
  • 若输出x86_64:选x86_64版本的二进制包。

2. 安装依赖包(避免初始化 / 启动失败)

# CentOS/RHEL系
yum install -y libaio-devel numactl-devel perl net-tools openssl-devel
# Debian/Ubuntu系
apt-get install -y libaio-dev numactl perl net-tools libssl-dev
  • 依赖作用:libaio是 InnoDB 引擎的异步 IO 依赖;numactl优化多 CPU 架构性能。

3. 创建 MySQL 专用用户 / 组(安全规范)

MySQL 服务需以非 root 用户运行,避免权限过大:

# 创建系统组(-r:系统组,ID<1000)
groupadd -r mysql
# 创建系统用户(-r:系统用户;-g:关联mysql组;-s:禁止登录;-M:不创建家目录)
useradd -r -g mysql -s /sbin/nologin -M mysql
# 验证创建结果
id mysql

二、下载并解压二进制包

1. 下载对应架构的二进制包

从 MySQL 官网获取包(或用 wget 直接下载):

# 进入临时目录(避免污染系统目录)
cd /tmp

# ① aarch64架构下载链接
wget https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.44-linux-glibc2.28-aarch64.tar.xz

# ② x86_64架构下载链接
# wget https://cdn.mysql.com/Downloads/MySQL-8.0/mysql-8.0.44-linux-glibc2.28-x86_64.tar.xz

2. 解压到自定义程序目录(示例:/opt/mysql)

二进制包可解压到任意目录(如/opt//usr/local),这里以/opt/mysql为例:

# 解压包(替换为实际包名)
tar -xvf mysql-8.0.44-linux-glibc2.28-aarch64.tar.xz -C /opt/

# 重命名(或创建软链接,方便后续升级)
# 方式1:重命名(简单直接)
mv /opt/mysql-8.0.44-linux-glibc2.28-aarch64 /opt/mysql

# 方式2:软链接(升级时只需替换软链接指向)
# ln -s /opt/mysql-8.0.44-linux-glibc2.28-aarch64 /opt/mysql

三、配置环境变量(简化命令调用)

若不配置环境变量,需用/opt/mysql/bin/mysql这类完整路径调用命令,配置后可直接用mysql

# 将MySQL的bin目录加入系统环境变量
echo "export PATH=/opt/mysql/bin:\$PATH" >> /etc/profile

# 立即生效环境变量
source /etc/profile

# 验证(输出MySQL版本则成功)
mysql --version

四、准备自定义目录(数据 / 日志 / PID)

二进制包的所有目录都需手动创建,核心目录包括:

目录作用
/data/mysql数据存储目录(存放数据库、表、InnoDB 文件等核心数据)
/data/mysql/log日志目录(存放错误日志、慢查询日志等)
/var/run/mysqldPID 文件目录(记录 MySQL 服务的进程 ID)

1. 创建目录并设置权限

# 1. 数据目录
mkdir -p /data/mysql
# 2. 日志目录
mkdir -p /data/mysql/log
# 3. PID目录
mkdir -p /var/run/mysqld

# 给所有目录赋予mysql用户权限(必须!否则MySQL无读写权限)
chown -R mysql:mysql /data/mysql
chown -R mysql:mysql /var/run/mysqld
# 设置目录权限(755:用户可读可写可执行,组/其他可读可执行)
chmod -R 755 /data/mysql

五、编写 MySQL 主配置文件(/etc/my.cnf)

my.cnf是 MySQL 的核心配置文件,所有目录、参数都在这里定义,直接复制以下内容(需根据你的目录调整):

vi /etc/my.cnf

写入配置:

[mysqld]
# 1. 程序目录(二进制包解压路径)
basedir=/opt/mysql
# 2. 数据目录(自定义的/data/mysql)
datadir=/data/mysql
# 3. Socket文件路径(本地连接的通信文件,需和数据目录同权限)
socket=/data/mysql/mysql.sock
# 4. 运行用户
user=mysql
# 5. 端口(默认3306)
port=3306
# 6. 错误日志路径(自定义到日志目录)
log-error=/data/mysql/log/mysqld.log
# 7. PID文件路径
pid-file=/var/run/mysqld/mysqld.pid
# 8. 禁用符号链接(安全选项)
symbolic-links=0
# 9. 字符集(避免乱码)
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 10. 打开文件数限制(避免高并发时文件数不足)
open_files_limit=65535

[client]
# 客户端连接的Socket路径(必须和mysqld的socket一致)
socket=/data/mysql/mysql.sock
# 客户端字符集
default-character-set=utf8mb4

六、初始化 MySQL(生成系统表 + 临时密码)

初始化是创建 MySQL 系统库(如mysql库,存储用户权限)、生成临时密码的关键步骤:

# 执行初始化(--user:指定运行用户;--datadir:指定数据目录)
mysqld --initialize --user=mysql --datadir=/data/mysql

1. 获取临时密码

初始化成功后,临时密码会写入错误日志/data/mysql/log/mysqld.log):

# 从日志中提取临时密码(最后一行的“root@localhost:”后即为密码)
TEMP_PWD=$(grep "temporary password" /data/mysql/log/mysqld.log | awk '{print $NF}')
echo "MySQL临时密码:$TEMP_PWD"
  • 示例输出:MySQL临时密码:abc123!@#

七、配置 Systemd 服务(用systemctl管理 MySQL)

手动创建 Systemd 服务文件,实现systemctl start/stop等便捷管理:

vi /usr/lib/systemd/system/mysqld.service

写入配置:

[Unit]
# 服务描述
Description=MySQL Server
# 启动依赖(网络就绪后再启动)
After=network.target remote-fs.target nss-lookup.target

[Service]
# 进程类型(notify:MySQL启动后主动通知Systemd)
Type=notify
# 运行用户/组
User=mysql
Group=mysql
# 启动命令(指定配置文件路径)
ExecStart=/opt/mysql/bin/mysqld --defaults-file=/etc/my.cnf
# 打开文件数限制(和my.cnf保持一致)
LimitNOFILE=65535
# 进程数限制
LimitNPROC=65535
# 失败后自动重启
Restart=on-failure
# 禁止重启的退出状态码
RestartPreventExitStatus=1
# 超时时间(0:无超时)
TimeoutSec=0

[Install]
# 多用户模式下启动
WantedBy=multi-user.target

八、启动 MySQL 并配置

1. 启动服务并设置开机自启

# 1. 重新加载Systemd配置(识别新的mysqld.service)
systemctl daemon-reload
# 2. 启动MySQL
systemctl start mysqld
# 3. 设置开机自启
systemctl enable mysqld
# 4. 检查服务状态(显示Active: running则成功)
systemctl status mysqld

2. 重置初始密码(临时密码已过期)

MySQL 初始化的临时密码仅用于首次登录,必须重置后才能使用:

# 用临时密码登录并重置密码(替换为你的临时密码和新密码)
mysql -uroot -p"$TEMP_PWD" --connect-expired-password << EOF
# 新密码需符合策略(至少8位,含大小写+数字+特殊字符)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MySQL@8888';
# 刷新权限(确保修改生效)
FLUSH PRIVILEGES;
EOF

九、配置远程访问(可选,如 Navicat 连接)

1. 允许 root 远程连接

mysql -uroot -p"MySQL@8888" << EOF
# 将root的访问主机改为“%”(任意远程主机)
USE mysql;
UPDATE user SET host='%' WHERE user='root';
FLUSH PRIVILEGES;
EOF

2. 解决 Navicat 兼容问题(MySQL 8.0 专属)

MySQL 8.0 默认用caching_sha2_password认证插件,旧版 Navicat 不兼容,需改为传统插件:

mysql -uroot -p"MySQL@8888" << EOF
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'MySQL@8888';
FLUSH PRIVILEGES;
EOF

3. 开放防火墙端口

# 开放3306端口(永久生效)
firewall-cmd --add-port=3306/tcp --permanent
# 重启防火墙
firewall-cmd --reload

十、验证安装成功

# 1. 验证MySQL版本
mysql --version
# 2. 验证数据目录(输出/data/mysql则正确)
mysql -uroot -p"MySQL@8888" -e "show variables like 'datadir';"
# 3. 创建测试库(验证数据写入)
mysql -uroot -p"MySQL@8888" -e "CREATE DATABASE test_db;"
# 查看/data/mysql下是否生成test_db目录
ls -l /data/mysql | grep test_db

常见问题排查

  • 初始化失败:Permission denied

    • 原因:目录权限未给mysql用户;
    • 解决:重新执行chown -R mysql:mysql /data/mysql
  • 启动失败:Can't read PID file

    • 原因:/var/run/mysqld权限不足;
    • 解决:chown -R mysql:mysql /var/run/mysqld
  • 远程连接超时

    • 原因:防火墙未开放 3306 端口;
    • 解决:执行firewall-cmd --add-port=3306/tcp --permanent

总结 

到此这篇关于linux环境安装MySQL(二进制包形式)的文章就介绍到这了,更多相关linux安装MySQL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL中预处理语句prepare、execute与deallocate的使用教程

    MySQL中预处理语句prepare、execute与deallocate的使用教程

    这篇文章主要介绍了MySQL中预处理语句prepare、execute与deallocate的使用教程,文中通过示例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考学习价值,需要的朋友们下面跟着小编一起来学习学习吧。
    2017-08-08
  • JDBC连接mysql处理中文时乱码解决办法详解

    JDBC连接mysql处理中文时乱码解决办法详解

    这篇文章主要介绍了JDBC连接mysql处理中文时乱码解决办法详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • MySQL导出sql脚本文件操作指南

    MySQL导出sql脚本文件操作指南

    mysql数据库是非常常用的一种数据库,属于中小型数据库,常用于网站业务和一些WEB系统业务,下面这篇文章主要给大家介绍了关于MySQL导出sql脚本文件操作的相关资料,需要的朋友可以参考下
    2023-01-01
  • MySQL中Like模糊查询速度太慢该如何进行优化

    MySQL中Like模糊查询速度太慢该如何进行优化

    在业务场景中经常会用到like模糊查询,但是大家都知道,like是用不到索引的,所以当数据量非常大时,速度会非常慢,这篇文章主要给大家介绍了关于MySQL中Like模糊查询速度太慢该如何进行优化的相关资料,需要的朋友可以参考下
    2021-12-12
  • MySQL语句加锁的实现分析

    MySQL语句加锁的实现分析

    MySQL的加锁分析,一直是一个比较困难的话题。我在工作过程中,经常会有同事咨询这方面的问题。今天我们来简单谈谈这个问题
    2017-10-10
  • MySQL获取版本号的N种方法(全网最全以及避坑大全)

    MySQL获取版本号的N种方法(全网最全以及避坑大全)

    相信大家在工作学习中经常有需要查询 MySQL 数据库版本的情况,这里给大家介绍几种在 MySQL 中查询数据库版本的方法以及每种方法适用的场景,相信总有一种可以帮到你,需要的朋友可以参考下
    2024-10-10
  • mysql 5.7.23 安装配置图文教程

    mysql 5.7.23 安装配置图文教程

    这篇文章主要为大家详细介绍了mysql 5.7.23 安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • mysql触发器同步表的数据方式

    mysql触发器同步表的数据方式

    这篇文章主要介绍了mysql触发器同步表的数据方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • Java的Struts框架中append标签与generator标签的使用

    Java的Struts框架中append标签与generator标签的使用

    这篇文章主要介绍了Java的Struts框架中append标签与generator标签的使用方法,Struts是Java的SSH三大web开发框架之一,需要的朋友可以参考下
    2015-12-12
  • MySql二进制连接方式详解

    MySql二进制连接方式详解

    这篇文章主要介绍了MySql二进制连接方式详解的相关资料,需要的朋友可以参考下
    2016-05-05

最新评论