直接 apt install mysql-server 安装的是 ubuntu 22.04 官方源提供的 mysql 8.0 稳定版(如 8.0.33–8.0.37),由 canonical 维护;若需 oracle 官方最新小版本(如 8.0.39),必须添加 mysql 官方 apt 仓库并执行 sudo apt install mysql-server=8.0.39-1ubuntu22.04。

直接 apt install mysql-server 就是 MySQL 8.0,但不一定是“最新小版本”
Ubuntu 22.04 官方源里的 mysql-server 包就是 MySQL 8.0 正式版(当前主流为 8.0.33–8.0.37),由 Canonical 维护并适配系统。它不是旧版,而是经过 LTS 验证的稳定分支。所谓“最新版”,得看你怎么定义:如果你指 Oracle 官方刚发布的 8.0.39 或 8.0.40,那 Ubuntu 源默认不提供——它滞后数周,且不支持用 apt install mysql-server=8.0.39 这种方式精确安装。
想装 Oracle 官方最新小版本?必须加 MySQL 官方 APT 仓库
跳过这步,apt list -a mysql-server 永远只显示 Ubuntu 自带的版本号,比如 8.0.33-1ubuntu22.04。要拿到 8.0.39-1ubuntu22.04 这类包,必须手动添加官方源:
- 先装依赖:
sudo apt install wget gnupg - 下载配置包(以当前最新
mysql-apt-config_0.8.29-1_all.deb为例):wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb - 安装并交互选择:
sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb—— 重点:在菜单里选中MySQL Server & Cluster,若需锁定小版本,进入子菜单后选mysql-8.0再按Yes - 刷新索引:
sudo apt update - 精准安装:
sudo apt install mysql-server=8.0.39-1ubuntu22.04(注意版本字符串必须完全匹配apt list -a输出)
别勾选 MySQL Router 或 MySQL Workbench,它们容易引发依赖冲突。
装完 root 登录失败?不是 bug,是 auth_socket 在生效
mysql -u root -p 报 Access denied 是正常现象。MySQL 8.0 默认对 root@localhost 启用 auth_socket 插件,只允许 sudo mysql 直连。要让密码登录生效,必须进 MySQL 执行:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的强密码';-
FLUSH PRIVILEGES;—— 这句漏掉,新密码永远不生效
之后 GUI 工具(DBeaver、Workbench)才能连上。别用 caching_sha2_password,它和很多旧客户端不兼容。
远程连接连不上?bind-address 和用户权限必须同步改
只改 /etc/mysql/mysql.conf.d/mysqld.cnf 里的 bind-address = 0.0.0.0,或只执行 GRANT,都不够。两件事缺一不可,且顺序不能错:
- 先改配置文件,再
sudo systemctl restart mysql - 再进 MySQL 创建用户:
CREATE USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY '密码'; - 再授权:
GRANT SELECT,INSERT ON mydb.* TO 'remote_user'@'%';(别给ALL PRIVILEGES) - 最后开放防火墙:
sudo ufw allow 3306
最容易被忽略的是:改完 bind-address 忘记重启服务,或者开了 ufw 却没放行端口——这两处占远程失败案例的七成以上。











