ubuntu系统mysql安装

12 阅读4分钟

Ubuntu 26.04 系统 MySQL 8.0 TAR 包安装指南

本指南适用于 Ubuntu 26.04 LTS,其他版本需验证,使用官方 Linux 通用二进制 TAR 包安装 MySQL 8.0。
此方式可自定义安装路径、数据目录,适合离线或需要精细控制的场景。

1. 系统环境准备

1.1 更新系统并安装基础工具

sudo apt update
sudo apt upgrade -y
sudo apt install -y wget tar perl

1.2 安装 libaio 异步 I/O 库

Ubuntu 26.04 中,libaio 的包名为 libaio1t64,但 MySQL 二进制仍查找 libaio.so.1,需创建软链接。

bash


# 查找实际库文件位置(版本号可能略有不同,以实际输出为准)
dpkg -L libaio1t64 | grep '.so'

# 进入库目录并创建软链接(示例路径,请根据上一步输出调整)
cd /usr/lib/x86_64-linux-gnu
sudo ln -sf libaio.so.1t64.0.2 libaio.so.1   # 版本号如不同请替换

# 更新动态链接器缓存
sudo ldconfig

# 验证是否成功
ldconfig -p | grep libaio
# 应同时出现 libaio.so.1 和 libaio.so.1t64

1.3 解决 libtinfo.so.5 依赖(若后续报错)

部分 MySQL 版本需要 libtinfo.so.5,但 Ubuntu 26.04 仅提供 libtinfo.so.6。
若未报错可跳过此步;若后续运行 mysql 时提示缺少该库,则执行以下操作:

bash

# 查找 libtinfo.so.6 位置
find /usr/lib -name "libtinfo.so.6*"

# 创建软链接(路径以实际为准)
sudo ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5
sudo ldconfig

2. 创建 MySQL 专用系统用户

bash

sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql

3. 下载 MySQL TAR 包

访问 MySQL 官方下载页 选择 Linux - Generic 版本,或使用 wget 下载。

先确认 glibc 版本(Ubuntu 26.04 通常 ≥ 2.28,可直接使用 glibc2.28 包):

bash

ldd --version   # 查看版本

以 8.0.24 为例(请替换为实际需要的版本号):

采用华为云的镜像加速下载

bash

wget https://mirrors.huaweicloud.com/mysql/Downloads/MySQL-8.0/mysql-8.0.24-linux-glibc2.12-x86_64.tar.xz

4. 解压并安装至 /usr/local

bash

sudo tar xf mysql-8.0.43-linux-glibc2.28-x86_64.tar.xz -C /usr/local
sudo ln -s /usr/local/mysql-8.0.43-linux-glibc2.28-x86_64 /usr/local/mysql

5. 配置环境变量(将 MySQL 命令加入 PATH)

bash

echo 'export PATH=/usr/local/mysql/bin:$PATH' | sudo tee /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh

6. 创建数据目录并设置权限

bash

sudo mkdir -p /data/mysql
sudo chown -R mysql:mysql /usr/local/mysql
sudo chown -R mysql:mysql /data/mysql

7. 创建自定义配置文件 /etc/my.cnf

bash

sudo tee /etc/my.cnf <<-'EOF'
[mysqld]
datadir=/var/mysql/data/mysql
socket=/var/mysql/data/mysql.sock
log-error=/var/mysql/data/mysql.log
pid-file=/var/mysql/data/mysql.pid

[client]
socket=/data/mysql/mysql.sock
EOF

8. 初始化数据库

两种方式任选其一:

方式 A:生成随机临时密码(安全)

bash

sudo mysqld --initialize --user=mysql --datadir=/var/mysql/data

# 查看临时密码(务必保存)
sudo grep password /var/mysql/data/mysql.log
# 输出示例:A temporary password is generated for root@localhost: K39lgjhHlu:U

方式 B:生成空密码(需立即设置新密码)

bash

sudo mysqld --initialize-insecure --user=mysql --datadir=/data/mysql

9. 启动 MySQL 服务

9.1 创建 systemd 服务文件

bash

sudo tee /etc/systemd/system/mysql.service <<-'EOF'
[Unit]
Description=MySQL Server
After=network.target

[Service]
Type=forking
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld_safe --user=mysql
ExecStop=/usr/local/mysql/bin/mysqladmin shutdown
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

9.2 启动并设置开机自启

bash

sudo systemctl daemon-reload
sudo systemctl enable mysql
sudo systemctl start mysql
sudo systemctl status mysql   # 检查运行状态

10. 设置 root 密码

根据初始化方式操作:

若采用方式 A(有临时密码)

bash

mysql -u root -p
# 输入临时密码,进入 MySQL 命令行

若采用方式 B(空密码)

bash

mysql -u root --skip-password

进入后执行以下 SQL 设置新密码(将 '你的新强密码' 替换为实际密码):

sql

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新强密码';
FLUSH PRIVILEGES;
EXIT;

11. 验证安装

bash

mysql --version          # 应显示 8.0.x
mysql -u root -p -e "SHOW DATABASES;"

12. 常见问题及解决

12.1 error while loading shared libraries: libaio.so.1

原因:libaio.so.1 软链接未正确创建或未执行 ldconfig。
解决:重新执行第 1.2 节步骤,确保 ldconfig 执行成功。

12.2 error while loading shared libraries: libtinfo.so.5

原因:缺少终端库。
解决:按第 1.3 节创建软链接。

12.3 无法通过 socket 连接

检查 /etc/my.cnf 中 socket 路径是否一致,或确认 MySQL 服务已启动。

12.4 忘记 root 密码

停止服务,用 --skip-grant-tables 启动并重置:

bash

sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables &
mysql -u root

在 MySQL 中执行:

sql

FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
FLUSH PRIVILEGES;
EXIT;

然后重启服务:

bash

sudo systemctl restart mysql

13. 总结

通过 TAR 包安装 MySQL 8.0 在 Ubuntu 26.04 上验证可行,关键点在于:

  • 正确安装 libaio1t64 并为其创建 libaio.so.1 软链接
  • 为可能的 libtinfo.so.5 需求创建软链接
  • 合理设置目录权限并使用 systemd 管理服务

本文档已涵盖全部步骤,可直接执行使用。如有其他问题,请参考 MySQL 官方文档。