直接运行 sudo apt install mysql-server 就能装上 mysql 8.0,这是 ubuntu 22.04 官方源默认提供的稳定版本(如 8.0.34–8.0.37),无需换源、不需加版本号;安装前必须执行 sudo apt update,否则报“unable to locate package”;root 默认使用 auth_socket 认证,需先 sudo mysql 进入后执行 alter user 切换认证方式并 flush privileges;远程访问须同时修改 bind-address 为 0.0.0.0 和授权用户,再重启服务并开放 3306 端口。

直接运行 sudo apt install mysql-server 就能装上 MySQL 8.0 —— 这是 Ubuntu 22.04 官方源默认提供的稳定版本(如 8.0.34–8.0.37),无需换源、不需加版本号,也不用下载 .deb 包。
为什么 apt install mysql-server 就是 MySQL 8.0?
Ubuntu 22.04 的 mysql-server 包由 Canonical 维护,它不是“旧版”或“阉割版”,而是经过 LTS 系统长期验证的 MySQL 8.0.x 稳定分支。当前官方源中该包版本号形如 8.0.34-0ubuntu0.22.04.1,已包含关键安全修复(如 CONNECTION_CONTROL 模块绕过漏洞补丁)和生产级稳定性保障。
常见误解:
- 误以为必须加
=8.0或=8.0.39才能指定版本 —— 实际上apt install mysql-server=8.0.39会报错 “Version not found”,因为该版本不在 Ubuntu 官方源中 - 看到 Oracle 官网有 8.0.39 就以为本地 apt 落后 —— 但 Ubuntu 的 8.0.34 同样满足绝大多数开发与生产场景,且依赖更干净
sudo apt update 是强制前置步骤,跳过就大概率失败
不执行这步,apt 会基于陈旧的本地索引查找包,导致:
-
E: Unable to locate package mysql-server—— 不是网络问题,是本地元数据没刷新 - 新装系统、长期未更新的机器尤其容易中招
-
sudo apt upgrade -y不是必须的,尤其在生产环境,盲目升级可能意外中断服务
只需确保执行了:sudo apt update
装完无法用 mysql -u root -p 登录?这是设计,不是故障
MySQL 8.0 在 Ubuntu 22.04 上默认启用 auth_socket 插件认证 root@localhost,所以:
-
sudo mysql可直连(靠 Unix socket + 系统用户身份) -
mysql -u root -p必然失败(它走 TCP 或密码校验路径)
正确做法是:
- 先运行
sudo mysql - 执行
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的强密码'; - 立刻执行
FLUSH PRIVILEGES;(漏掉这句,改密码不生效)
之后客户端(DBeaver、Navicat、PHP PDO)才能用密码连接。
远程访问连不上?几乎总是两处配置只改了一处
缺一不可:
- 改监听地址:编辑
/etc/mysql/mysql.conf.d/mysqld.cnf,把bind-address = 127.0.0.1改成bind-address = 0.0.0.0 - 开用户权限:进 MySQL 执行
CREATE USER 'remote_user'@'%' IDENTIFIED WITH mysql_native_password BY '密码';,再GRANT SELECT,INSERT ON mydb.* TO 'remote_user'@'%';(别直接GRANT ALL) - 改完必须重启服务:
sudo systemctl restart mysql,并开放防火墙端口:sudo ufw allow 3306
最容易被忽略的是:改完配置不重启服务,或者开了权限却忘了放开 bind-address —— 这两个动作必须同时完成,否则任何客户端都连不上。











