在 Ubuntu 24.04 LTS 上安装“最新版”MySQL,通常有两种主要策略:
- 官方 APT 源(推荐):安装 MySQL 8.0 或 9.0(取决于官方源的最新状态),这是最稳定、维护最方便的方式。
- 官方二进制包(Binary Tarball):从官网下载最新的编译版,适合需要最新特性且不依赖系统包管理的场景。
注意:Ubuntu 24.04 默认的软件源中通常包含的是 MySQL 8.0。如果你需要 MySQL 9.0(目前处于开发/早期发布阶段)或特定版本,建议直接使用官方提供的 .deb 包或二进制包。
以下是两种主流方案的详细步骤:
方案一:使用官方 MySQL APT 仓库(推荐,适合生产环境)
这种方法会自动处理依赖关系,并允许你通过 apt 命令轻松升级。我们将添加 MySQL 官方仓库来获取最新版本(通常是 8.0,若官方源已更新则包含 9.0)。
1. 下载并安装 MySQL APT 配置工具
首先下载官方的 .deb 包来配置软件源。
# 切换到临时目录下载
cd /tmp
# 下载 MySQL APT 配置工具 (版本号可能会随时间变化,请根据官网最新链接调整)
wget https://dev.mysql.com/get/mysql-apt-config_0.8.32-1_all.deb
# 安装该工具 (如果提示交互选择版本,请选择 "MySQL Server & Cluster")
sudo dpkg -i mysql-apt-config_0.8.32-1_all.deb
关键步骤:在安装过程中会弹出一个交互式界面。
- 选择 MySQL Server & Cluster (默认)。
- 在版本选择页面,选择你想要的版本(例如 MySQL 8.0 或 MySQL 9.0,如果有显示的话)。如果没有 9.0 选项,说明当前官方源尚未提供 9.0 的正式包,此时选 8.0 是最稳定的选择。
2. 更新软件包列表
sudo apt update
3. 安装 MySQL Server
sudo apt install mysql-server
4. 初始化与设置 root 密码
安装完成后,MySQL 会自动运行并生成一个临时的 root 密码。你需要查看日志获取它:
# 查看临时密码
sudo grep 'temporary password' /var/log/mysql/error.log
然后登录并进行安全加固:
sudo mysql_secure_installation
按提示操作:
- 输入刚才查到的临时密码。
- 修改 root 密码(强烈建议修改)。
- 移除匿名用户 (
Remove anonymous users? [Y/n]) -> 选 Y。 - 禁止 root 远程登录 (
Disallow root login remotely? [Y/n]) -> 选 Y(除非你有特殊需求)。 - 移除测试数据库 (
Remove test database and access to it? [Y/n]) -> 选 Y。 - 重新加载权限表 (
Reload privilege tables now? [Y/n]) -> 选 Y。
5. 验证安装
mysql --version
# 或者进入命令行
mysql -u root -p
方案二:手动安装二进制包(适合获取 MySQL 9.0 或特定版本)
如果你确定需要 MySQL 9.0(Beta/RC 版本)且官方 APT 源尚未提供,或者需要非标准路径安装,可以使用此方法。
1. 下载二进制包
前往 MySQL Downloads 页面,选择 Linux – Generic 版本。
假设下载的文件名为 mysql-9.0.x-linux-glibc2.28-x86_64.tar.xz(文件名以实际为准):
cd /opt
# 使用 wget 下载 (请替换为实际 URL)
wget https://cdn.mysql.com/archives/mysql-9.0/mysql-9.0.x-linux-glibc2.28-x86_64.tar.xz
2. 解压并移动文件
tar -xvf mysql-9.0.x-linux-glibc2.28-x86_64.tar.xz
mv mysql-9.0.x-linux-glibc2.28-x86_64 mysql-9.0
3. 创建用户和目录
sudo groupadd mysql
sudo useradd -r -g mysql -s /bin/false mysql
sudo mkdir -p /data/mysql
sudo chown -R mysql:mysql /data/mysql
sudo chown -R mysql:mysql /opt/mysql-9.0
4. 初始化数据库
sudo /opt/mysql-9.0/bin/mysqld --initialize --user=mysql --basedir=/opt/mysql-9.0 --datadir=/data/mysql
同样,这里会生成一个临时密码,请记录 `/data/mysql/.err日志中的temporary password`。*
5. 创建 systemd 服务文件
为了让 MySQL 能够开机自启,需要创建一个服务文件:
sudo nano /etc/systemd/system/mysql.service
粘贴以下内容(注意修改路径):
[Unit]
Description=MySQL Community Server
After=network.target
[Service]
Type=forking
User=mysql
Group=mysql
PIDFile=/data/mysql/mysql.pid
ExecStart=/opt/mysql-9.0/bin/mysqld_safe --defaults-file=/etc/mysql/my.cnf
ExecStop=/opt/mysql-9.0/bin/mysqladmin -u root shutdown
Restart=on-failure
[Install]
WantedBy=multi-user.target
保存退出后,启动服务:
sudo systemctl daemon-reload
sudo systemctl start mysql
sudo systemctl enable mysql
sudo systemctl status mysql
6. 配置环境变量(可选)
为了方便在任意位置使用 mysql 命令,可以将 bin 目录加入 PATH:
echo 'export PATH=$PATH:/opt/mysql-9.0/bin' | sudo tee -a /etc/profile.d/mysql.sh
source /etc/profile.d/mysql.sh
常见问题排查
- 端口被占用:
如果安装时提示端口 3306 被占用,检查是否有旧版本残留:sudo lsof -i :3306 sudo kill -9 <PID> - 防火墙设置:
云服务器(如阿里云、腾讯云、AWS)需要在控制台的安全组中开放 TCP 3306 端口,否则无法远程连接。# Ubuntu 本地防火墙 sudo ufw allow 3306/tcp - 如何确认版本?
登录后执行:SELECT VERSION();
总结建议
- 如果是生产环境,强烈建议使用 方案一(APT 源)。虽然可能暂时只能装到 8.0,但其稳定性、自动更新机制和安全性远高于手动编译的二进制包。
- 如果你必须使用 MySQL 9.0 的新特性,且能接受手动管理升级和备份,请使用 方案二。
你可以先尝试方案一,如果 apt list -a mysql-server 能看到 9.0 的版本号,那就直接安装即可;如果没有,再考虑方案二。
CLOUD技术博