Ubuntu 22.04 官方源中 mysql-server 即 MySQL 8.0,安装前必须执行 sudo apt update;默认 root 使用 auth_socket 认证,需用 sudo mysql 登录后执行 ALTER USER 切换为 mysql_native_password 并 FLUSH PRIVILEGES;远程访问须同时修改 bind-address 和授权用户,并重启服务、开放防火墙端口;mysql_secure_installation 是强制安全加固步骤,不可跳过。

Ubuntu 22.04 官方仓库里的 mysql-server 就是 MySQL 8.0,直接用 apt install mysql-server 装就行,不用额外加版本号或换源——这是最稳、最省事的方式。
安装前必须更新软件源索引
跳过 sudo apt update 可能导致安装失败或拉到过期包,尤其在新装系统或长期未更新的机器上:
-
sudo apt update是强制步骤,不是“建议” - 如果提示
Unable to locate package mysql-server,八成是没执行这步,或者源被意外修改过 - 不推荐盲目执行
sudo apt upgrade -y(尤其生产环境),但update必须做
安装后 root 没密码?这是正常设计,别慌
MySQL 8.0 默认用 auth_socket 插件认证 root@localhost,所以 sudo mysql 能直连,但 mysql -u root -p 会报错。这不是装错了,是安全策略:
- 先用
sudo mysql进去,再执行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的强密码'; - 必须指定
mysql_native_password,否则后续客户端(如 MySQL Workbench、DBeaver)连不上 - 改完立刻
FLUSH PRIVILEGES;,否则不生效
远程访问要动两处,缺一不可
只开用户权限或只改配置文件,都会连不上:
- 改配置:
sudo nano /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'@'%';(别直接给ALL PRIVILEGES) - 最后
sudo systemctl restart mysql,sudo ufw allow 3306(如果开了防火墙)
安全加固别跳过 mysql_secure_installation
这个脚本不是可选项,它干的事手动很难全覆盖:
- 删掉匿名用户:
DROP USER ''@'localhost';这类操作容易漏 - 禁用
test数据库(默认存在且权限宽松) - 它还会帮你关掉远程
root登录——这点很多人手动改user表时反而留了后门 - 运行后若提示 “Password validation plugin is not loaded”,说明没装插件,得进 MySQL 手动执行
INSTALL COMPONENT 'file://component_validate_password';
最容易被忽略的是:改完 bind-address 后忘记重启服务,或者开了防火墙但没放行 3306 端口——这两处问题占远程连接失败案例的七成以上。


















