Ubuntu安装MySQL 5.5.62

 

MySQL 5.5.62 已经停止官方维护,Ubuntu 22.04 官方 APT 软件源也没有这个版本。因此不能直接使用 apt install mysql-server=5.5.62。

可采用以下方案:

  • 从 MySQL 官方历史归档获取 5.5.62 源码。

  • 在 Ubuntu 22.04 上编译安装。

  • 安装到 /usr/local/mysql。

  • 数据目录使用 /var/lib/mysql。

  • 配置文件使用 /etc/my.cnf。

  • 使用 systemd 管理服务。

  • 配置本机和受限 IP 的远程访问。

注意: MySQL 5.5 的源码与现代 OpenSSL、GCC、CMake 等工具链存在兼容性问题,编译过程可能需要针对性补丁。如果是必须保持 5.5.62 的旧项目,建议使用独立虚拟机隔离运行。

一、检查系统环境

以下教程以 Ubuntu 22.04 x86_64 为例。

先执行:

uname -m
cat /etc/os-release
ldd --version | head -1

预期架构:

x86_64

检查是否已经安装其他 MySQL 或 MariaDB:

dpkg -l | grep -Ei 'mysql|mariadb'

检查端口:

ss -lntp | grep 3306

如果已经有数据库服务运行,不要直接覆盖或删除数据目录。先确认现有数据库是否需要保留。

二、安装依赖

更新软件源:

apt update

安装运行依赖和管理工具:

apt install -y \
  wget \
  curl \
  tar \
  gzip \
  libaio1 \
  libncurses5 \
  libtinfo5 \
  libnuma1 \
  openssl \
  ca-certificates \
  vim \
  ufw

如果某个兼容库在当前软件源中不存在,可以先检查:

apt-cache policy libncurses5 libtinfo5

三、下载 MySQL 5.5.62

这里采用 Linux Generic 二进制发行包,而不是源码编译。

这样可以避免在 Ubuntu 22.04 上使用现代 GCC 和 OpenSSL 3 编译旧版 MySQL 所产生的兼容问题。

MySQL 官方 5.5 手册支持通过通用二进制压缩包安装。

 

MySQL Community Downloads+1

创建下载目录:

mkdir -p /usr/local/src
cd /usr/local/src

下载:

wget -O mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz \
'https://downloads.mysql.com/archives/get/p/23/file/mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz'

如果下载失败,可以进入:

MySQL 官方历史版本下载页面

选择:

  • Product Version:5.5.62

  • Operating System:Linux – Generic

  • OS Version:Linux – Generic (glibc 2.12)

  • Architecture:x86, 64-bit

下载对应的 TAR 包。

检查文件:

ls -lh mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz

解压:

tar -xzf mysql-5.5.62-linux-glibc2.12-x86_64.tar.gz

移动安装目录:

mv mysql-5.5.62-linux-glibc2.12-x86_64 \
/usr/local/mysql-5.5.62

建立软链接:

ln -s /usr/local/mysql-5.5.62 /usr/local/mysql

检查:

ls -l /usr/local/mysql

四、创建 MySQL 用户和目录

创建专用运行用户:

groupadd mysql
useradd -r -g mysql -s /usr/sbin/nologin mysql

创建数据目录:

mkdir -p /var/lib/mysql
mkdir -p /var/log/mysql
mkdir -p /var/run/mysqld

设置权限:

chown -R mysql:mysql /var/lib/mysql
chown -R mysql:mysql /var/log/mysql
chown mysql:mysql /var/run/mysqld

chown -R root:root /usr/local/mysql-5.5.62

安装目录保持 root 所有,MySQL 运行用户只需要读取程序文件和访问数据、日志目录。

五、配置 MySQL

创建配置文件:

vim /etc/my.cnf

写入以下内容:

[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
default-character-set = utf8

[mysqld]
user = mysql

basedir = /usr/local/mysql
datadir = /var/lib/mysql

port = 3306
socket = /var/run/mysqld/mysqld.sock
pid-file = /var/run/mysqld/mysqld.pid

bind-address = 0.0.0.0

character-set-server = utf8
collation-server = utf8_general_ci

default-storage-engine = InnoDB

max_connections = 200

skip-name-resolve

innodb_file_per_table = 1
innodb_buffer_pool_size = 128M

log-error = /var/log/mysql/error.log

[mysql]
default-character-set = utf8

注意:

  • bind-address = 0.0.0.0 表示监听所有 IPv4 网卡。

  • skip-name-resolve 表示不使用 DNS 反向解析,远程授权应使用 IP 或 %。

  • innodb_buffer_pool_size 可以根据服务器实际内存调整。

六、初始化数据库

执行:

cd /usr/local/mysql

scripts/mysql_install_db \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/var/lib/mysql

如果初始化成功,应该看到类似:

OK
Filling help tables...

检查数据目录:

ls -lah /var/lib/mysql

确保数据库文件已经生成。

如果初始化失败,先检查依赖:

ldd /usr/local/mysql/bin/mysqld | grep "not found"

如果有缺失的动态库,需要先解决依赖,再继续启动服务。

七、配置 MySQL 环境变量

创建 PATH 配置:

vim /etc/profile.d/mysql.sh

写入:

export MYSQL_HOME=/usr/local/mysql
export PATH=$MYSQL_HOME/bin:$PATH

生效:

source /etc/profile.d/mysql.sh

检查:

mysql --version

预期:

mysql  Ver 14.14 Distrib 5.5.62

八、配置 systemd 服务

创建服务文件:

vim /etc/systemd/system/mysql.service

写入:

[Unit]
Description=MySQL 5.5.62 Database Server
After=network.target

[Service]
Type=simple

User=mysql
Group=mysql

RuntimeDirectory=mysqld
RuntimeDirectoryMode=0755

ExecStart=/usr/local/mysql/bin/mysqld \
--defaults-file=/etc/my.cnf

Restart=on-failure
RestartSec=5

LimitNOFILE=65535

PrivateTmp=true

[Install]
WantedBy=multi-user.target

重新加载 systemd:

systemctl daemon-reload

启动:

systemctl start mysql

设置开机自启:

systemctl enable mysql

查看状态:

systemctl status mysql
预期状态
Active: active (running)

查看日志:

tail -f /var/log/mysql/error.log

九、设置 root 密码

首次启动后,执行:

mysql_secure_installation

按照交互提示:

  1. 输入当前 root 密码(首次通常为空)。

  2. 设置新的 root 密码。

  3. 删除匿名用户。

  4. 禁止 root 远程登录。

  5. 删除 test 数据库。

  6. 重新加载权限表。

如果该脚本无法正常运行,也可以手动设置:

mysql -uroot

执行:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('你的强密码');

DELETE FROM mysql.user WHERE User = '';

DROP DATABASE IF EXISTS test;

FLUSH PRIVILEGES;

退出:

EXIT;

再次验证:

mysql -uroot -p

十、创建数据库和远程账户

登录:

mysql -uroot -p

创建数据库:

CREATE DATABASE appdb
DEFAULT CHARACTER SET utf8
COLLATE utf8_general_ci;

创建远程账户。

例如允许公网 IP 203.0.113.10 连接:

CREATE USER 'appuser'@'203.0.113.10'
IDENTIFIED BY '替换为强密码';

授权:

GRANT ALL PRIVILEGES ON appdb.*
TO 'appuser'@'203.0.113.10';

刷新权限:

FLUSH PRIVILEGES;

查看用户:

SELECT User, Host FROM mysql.user;

如果你需要多个客户端连接,可以分别创建多个 IP 对应的账户。

如果确实需要允许任意 IP:

CREATE USER 'appuser'@'%'
IDENTIFIED BY '替换为强密码';

GRANT ALL PRIVILEGES ON appdb.*
TO 'appuser'@'%';

FLUSH PRIVILEGES;

但不建议在公网直接使用 %。

十一、配置防火墙

假设:

  • SSH 端口:22

  • MySQL 端口:3306

  • 远程客户端 IP:203.0.113.10

首先放行 SSH,避免启用防火墙后断开远程管理:

ufw allow 22/tcp

只允许指定 IP 连接 MySQL:

ufw allow from 203.0.113.10 to any port 3306 proto tcp

启用:

ufw enable

查看:

ufw status numbered

如果有多个客户端,分别添加规则。

不要执行 ufw allow 3306/tcp,否则会向所有来源开放 MySQL 端口。

如果你的服务器还有云平台安全组,也要同步限制 3306 的来源 IP。

十二、连接测试

1. 本机测试

mysql -h 127.0.0.1 -P 3306 -u appuser -p appdb

2. 远程测试

在另一台服务器执行:

mysql -h 服务器公网IP \
-P 3306 \
-u appuser \
-p appdb

3. 查看监听状态

ss -lntp | grep 3306

预期:

LISTEN 0 80 0.0.0.0:3306

4. 检查数据库版本

SELECT VERSION();

预期:

5.5.62

十三、数据库备份

创建备份目录:

mkdir -p /var/backups/mysql

备份所有数据库:

mysqldump -uroot -p \
--all-databases \
--single-transaction \
> /var/backups/mysql/all.sql

备份指定数据库:

mysqldump -uroot -p appdb \
> /var/backups/mysql/appdb.sql

恢复:

mysql -uroot -p appdb \
< /var/backups/mysql/appdb.sql

建议定期将备份复制到另一台服务器或对象存储,不要只保存在数据库所在磁盘。

十四、日常管理命令

操作

命令

启动

systemctl start mysql

停止

systemctl stop mysql

重启

systemctl restart mysql

状态

systemctl status mysql

开机自启

systemctl enable mysql

取消自启

systemctl disable mysql

查看日志

tail -f /var/log/mysql/error.log

查看端口

ss -lntp \| grep 3306

查看版本

mysql --version

登录

mysql -uroot -p

 

十五、最终目录结构

安装完成后,目录结构如下:

/usr/local/
├── mysql -> mysql-5.5.62/
└── mysql-5.5.62/
    ├── bin/
    ├── include/
    ├── lib/
    ├── share/
    └── scripts/

/etc/
├── my.cnf
├── systemd/system/
│   └── mysql.service
└── profile.d/
    └── mysql.sh

/var/lib/mysql/          # 数据文件
/var/log/mysql/          # 日志文件
/var/run/mysqld/         # 运行文件
/var/backups/mysql/      # 备份文件

十六、建议进一步确认的服务器环境

MySQL 5.5.62 的通用二进制包虽然比源码编译更省事,但仍需要检查实际运行依赖,尤其是 libaio、ncurses 等动态库。官方手册也明确指出 libaio 是运行依赖。

 

MySQL Community Downloads+1

在正式安装之前,可以先执行下面的命令,把结果发给我:

echo "===== OS ====="
cat /etc/os-release | grep -E 'PRETTY_NAME|VERSION='

echo "===== ARCH ====="
uname -m

echo "===== GLIBC ====="
ldd --version | head -1

echo "===== MEMORY ====="
free -h

echo "===== DISK ====="
df -h /

echo "===== MYSQL ====="
dpkg -l | grep -Ei 'mysql|mariadb'

echo "===== PORT ====="
ss -lntp | grep 3306 || true

 

 
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享