公司有个系统是几年前开发的,当时数据库用的Mysql5.7,服务器是CENTOS6。如今CENTOS已经停止维护,为安全升级势在必行,考虑更换为Ubuntu24.04LTS。但这个系统虽几经升级,数据库依然是Mysql5.7,升级数据库版本工作量太大,而不升级的话Ubuntu24.04LTS已不支持Mysql5.7,这就意味着无法从官方仓库中直接下载安装。测试了用DOCKER方式安装Mysql5.7,但发现在高负载时性能存在瓶颈,尝试了优化仍未能解决问题,所以考虑还是要采用非DOCKER方式安装部署Mysql5.7。
1. 安装基础库
sudo apt update
sudo apt install libaio1t64 libtinfo6 psmisc libnuma1 libmecab2
2. 创建必要的符号链接
sudo ln -sf /usr/lib/x86_64-linux-gnu/libaio.so.1t64.0.2 /usr/lib/x86_64-linux-gnu/libaio.so.1
sudo ln -sf /usr/lib/x86_64-linux-gnu/libncursesw.so.6.4 /usr/lib/x86_64-linux-gnu/libncurses.so.6
sudo ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5
3. 下载 MySQL 5.7.40 DEB Bundle
Wget https://downloads.mysql.com/archives/get/p/23/file/mysql-server_5.7.40-1ubuntu18.04_amd64.deb-bundle.tar
解包
tar -xvf mysql-server_5.7.40-1ubuntu18.04_amd64.deb-bundle.tar
4. 按顺序安装deb包
sudo dpkg -i mysql-common_5.7.40-1ubuntu18.04_amd64.deb
sudo dpkg -i mysql-community-client_5.7.40-1ubuntu18.04_amd64.deb
sudo dpkg -i mysql-client_5.7.40-1ubuntu18.04_amd64.deb
sudo dpkg -i mysql-community-server_5.7.40-1ubuntu18.04_amd64.deb
安装mysql-community-client时报错
后续两个包也都报错,存在libaio1包依赖问题。
强制安装 MySQL 包(忽略libaio1包依赖检查)
sudo dpkg -i --ignore-depends=libaio1 \
mysql-common_5.7.40-1ubuntu18.04_amd64.deb \
mysql-community-client_5.7.40-1ubuntu18.04_amd64.deb \
mysql-client_5.7.40-1ubuntu18.04_amd64.deb \
mysql-community-server_5.7.40-1ubuntu18.04_amd64.deb
还是报错,这次提示libtinfo5包依赖问题。
继续强制安装 MySQL 包(忽略两个包依赖检查)
sudo dpkg -i --ignore-depends=libaio1,libtinfo5 \
mysql-common_5.7.40-1ubuntu18.04_amd64.deb \
mysql-community-client_5.7.40-1ubuntu18.04_amd64.deb \
mysql-client_5.7.40-1ubuntu18.04_amd64.deb \
mysql-community-server_5.7.40-1ubuntu18.04_amd64.deb
这次应该是成功了,提示输入root用户密码
DEEPSEEK提示这步完成后要修复系统依赖
sudo apt --fix-broken install -y
测试发现选择修复会删除5.7.40 community-server 和community-client,然后自动安装client8.0,安装就失败了。
这步一定要跳过。
5. 手动初始化 MySQL
# 创建必要的目录
sudo mkdir -p /var/lib/mysql
# 设置权限
sudo chown -R mysql:mysql /var/lib/mysql
6. 创建 systemd 服务文件
sudo tee /etc/systemd/system/mysql.service <<EOF
[Unit]
Description=MySQL Community Server
After=network.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/sbin/mysqld
LimitNOFILE=5000
[Install]
WantedBy=multi-user.target
EOF
# 重载 systemd
sudo systemctl daemon-reload
7. 启动 MySQL 服务
sudo systemctl start mysql
sudo systemctl enable mysql
验证安装
# 检查服务状态
sudo systemctl status mysql
可以看到mysql服务已经运行
# 验证版本
mysql --version
这里又报错了,缺少`NCURSES_TINFO_5.0.19991023'
这可能是因为Ubuntu 24.04自带的ncurses库(libtinfo6)虽然提供了`libtinfo.so.5`的符号链接,但实际库文件中的符号版本已经更新,不包含旧版本符号。因此需要安装一个包含旧版本符号的ncurses库。在Ubuntu 24.04中,官方仓库已经移除了libncurses5,因此只能下载兼容的deb包并安装。
8、安装兼容的 ncurses 5
下载兼容 ncurses 包:
wget http://archive.ubuntu.com/ubuntu/pool/main/n/ncurses/libtinfo5_6.1-1ubuntu1_amd64.deb
wget http://archive.ubuntu.com/ubuntu/pool/main/n/ncurses/libncurses5_6.1-1ubuntu1_amd64.deb
安装兼容包:
sudo dpkg -i libtinfo5_6.1-1ubuntu1_amd64.deb
sudo dpkg -i libncurses5_6.1-1ubuntu1_amd64.deb
修复符号链接:
sudo rm -f /usr/lib/x86_64-linux-gnu/libtinfo.so.5
sudo ln -s /usr/lib/x86_64-linux-gnu/libtinfo.so.5.9 /usr/lib/x86_64-linux-gnu/libtinfo.so.5
更新动态链接器缓存:
sudo ldconfig
9、测试连接
mysql -u root -p -e "SELECT VERSION();"
安装成功。