商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > Ubuntu怎么安装MySQL 5.7 Ubuntu低版本数据库安装教程

Ubuntu怎么安装MySQL 5.7 Ubuntu低版本数据库安装教程

  发布于2026-05-22 阅读(0)

扫一扫,手机访问

如果你正在Ubuntu 22.04或更新的24.04系统上,试图通过apt install mysql-server-5.7来安装MySQL 5.7,那么结果几乎是注定的:失败。这并非你的配置有误,而是因为官方仓库已经彻底移除了这个版本。

Ubuntu怎么安装MySQL 5.7 Ubuntu低版本数据库安装教程

为什么 apt install mysql-server-5.7 总是报 “E: Version ‘5.7.x’ for ‘mysql-server’ was not found”

从Ubuntu 22.04开始,MySQL 8.0被设定为唯一的默认版本。以往用来切换版本的mysql-apt-config工具,在新系统上也已失效——即便你选择了5.7,它也会静默地回退到8.0。即便你手动添加旧版软件源,或者下载旧版的mysql-apt-config_0.8.12-1_all.deb配置包,在执行apt update后,用apt-cache policy mysql-server命令查看,候选列表里依然只会出现8.0。

根本原因在于,MySQL官方已经停止为Ubuntu 22.04及之后的版本提供APT仓库支持。你可以通过一个简单的命令验证:curl -I https://repo.mysql.com/apt/ubuntu/dists/jammy/(针对22.04),返回的将是404状态码,意味着对应的目录根本不存在。

因此,可行的替代方案只剩下两种:手动安装deb包,或者使用二进制tar.gz包安装。前者更接近我们熟悉的传统安装流程,而后者则提供了更高的可控性,但需要自行配置环境变量。

deb 包安装必须按顺序执行 dpkg -i,且依赖要提前装好

mysql-server_5.7.40-1ubuntu18.04_amd64.deb-bundle.tar这样的捆绑包中解压出的deb文件,存在严格的依赖顺序。跳过或颠倒顺序执行,dpkg命令就会报出“unresolved dependency”的错误,导致后续的包无法正确配置。

正确的安装顺序是线性的:

  1. 首先安装:mysql-common_5.7.40-1ubuntu18.04_amd64.deb
  2. 接着安装:libmysqlclient20_5.7.40-1ubuntu18.04_amd64.deb(这一步很关键,新版Ubuntu默认缺少这个库,不安装它,后续的mysql-community-server安装会在postinst配置阶段卡住)
  3. 最后安装:mysql-community-server_5.7.40-1ubuntu18.04_amd64.deb(这才是真正启动MySQL服务的核心包)

在安装之前,还需要确保系统依赖已经就位。执行以下命令安装必要依赖:

sudo apt install libaio1t64 libtinfo6 libncurses6 libmecab2 -y

这里有两个细节需要注意:对于Ubuntu 24.04,需要用libaio1t64替代旧版的libaio1;同时,libtinfo5已被libtinfo6取代,因此必须手动创建一个软链接来兼容:

sudo ln -sf /usr/lib/x86_64-linux-gnu/libtinfo.so.6 /usr/lib/x86_64-linux-gnu/libtinfo.so.5

安装后 mysql -u root -p 连不上?大概率是 auth plugin 不兼容

MySQL 5.7在Ubuntu 22.04+系统上首次启动时,其默认的身份验证插件仍可能被设置为caching_sha2_password(尤其是如果你的系统之前安装过MySQL 8.0),这会导致许多老版本的客户端工具连接时报错:“Client does not support authentication protocol”。

最稳妥的办法是防患于未然,不要在安装完成后再去修改。建议在首次配置mysql-community-server包(即运行dpkg -i后会触发的mysql_install_db过程)之前,就创建一个临时配置文件来锁定插件类型:

sudo mkdir -p /etc/mysql/conf.d

然后在该目录下创建一个配置文件(例如default_auth.cnf),并写入以下内容:

[mysqld]
default_authentication_plugin = mysql_native_password

如果已经安装完毕并遇到了连接问题,可以尝试跳过密码验证启动MySQL:

sudo mysqld_safe --skip-grant-tables &

然后使用mysql -u root无密码连接,执行SQL修改root用户的插件:

UPDATE mysql.user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;

需要特别警惕的是,在此场景下,不要运行mysql_secure_installation这个安全初始化脚本,因为它会强制将身份验证插件重置为caching_sha2_password,让你的努力前功尽弃。

远程连接失败?bind-address 不是唯一问题

很多朋友在配置远程连接时,以为在my.cnf里设置bind-address = 0.0.0.0就万事大吉了。这确实解决了服务监听所有IP地址的问题,但在Ubuntu 22.04+上,还有两道“关卡”需要突破。

首先,是系统自带的ufw防火墙。默认情况下,它可能会阻止3306端口的传入连接。记得放行:

sudo ufw allow 3306

其次,是MySQL自身的用户权限。MySQL 5.7安装后,user表中root用户的host字段默认是localhost,这意味着它只允许本地连接。你需要创建一个允许从任何主机连接的root用户(或修改现有用户),命令如下:

CREATE USER 'root'@'%' IDENTIFIED BY 'your_pass';
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;

请注意,直接修改现有root@localhost用户的host字段可能并不总是有效,显式创建一个root@‘%’用户是更可靠的做法。修改权限后,务必执行:

FLUSH PRIVILEGES;

最后,验证服务是否在正确监听。执行ss -tlnp | grep :3306,输出中应该看到*:3306,而不是127.0.0.1:3306

还有一个极其容易被忽略的坑:Ubuntu 22.04+的systemd对MySQL服务单元文件有严格的路径锁定。如果你通过手动安装deb或二进制包的方式安装了5.7,但没有正确注册或更新service文件,那么systemctl start mysql命令可能会静默失败。这时,你需要检查/lib/systemd/system/mysql.service这个文件,确保其中ExecStart指向的mysqld路径是你实际安装的5.7路径,而不是系统里可能残留的MySQL 8.0的路径。

本文转载于:https://www.php.cn/faq/2388717.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注