ubuntu 22.04 默认通过 sudo apt install mysql-server -y 安装 mysql 8.0.45,无需换源或指定版本;安装自动完成 systemd 服务注册、用户创建与安全配置,但 root 默认启用 auth_socket 认证,需执行 alter user 切换为 mysql_native_password 并 flush privileges 才能密码登录。

sudo apt install mysql-server -y 是最稳妥的安装方式,适用于绝大多数开发和测试场景。Ubuntu 22.04 官方仓库已内置 MySQL 8.0(当前稳定版为 8.0.45),无需手动下载、解压或处理依赖链,也不用担心 libtinfo.so.5 或 libaio1 缺失等二进制包常见报错。
为什么推荐 APT 安装而不是二进制或离线包?
APT 安装由 Ubuntu 维护团队打包验证,自动处理:systemd 服务注册、/var/lib/mysql 目录初始化、mysql 系统用户创建、日志轮转配置、安全插件默认启用(caching_sha2_password)等。而手动解压二进制包需逐条执行 useradd、chown、mysqld --initialize、systemctl enable 等操作,稍有遗漏就会导致 mysqld 启动失败或权限拒绝。
安装后 root 登录失败?注意 auth_socket 插件
Ubuntu 22.04 的 MySQL 8.0 默认让 root@localhost 使用 auth_socket 插件认证——这意味着你只能用 sudo mysql 进入,不能用 mysql -u root -p 输密码登录。这不是 bug,是安全设计。
- 若需密码登录(例如 Navicat / IDEA 连接),运行:
sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_strong_password'; FLUSH PRIVILEGES;" - 不要直接修改
plugin字段或删掉auth_socket行——这会导致sudo mysql失效且无法回退 -
mysql_native_password兼容性更好,但安全性略低于caching_sha2_password;生产环境建议新建普通用户并授予权限,而非改 root
远程访问连不上?别只改 bind-address
仅把 bind-address = 0.0.0.0 写进 /etc/mysql/mysql.conf.d/mysqld.cnf 不够。三个环节必须全部满足:
- MySQL 用户授权:执行
CREATE USER 'dev'@'%' IDENTIFIED BY 'pwd'; GRANT ALL ON *.* TO 'dev'@'%'; FLUSH PRIVILEGES;(避免用root@'%') - 防火墙放行:运行
sudo ufw allow 3306(如果启用了ufw) - 云服务器额外检查:阿里云/腾讯云安全组需显式开放 TCP 3306 端口,且源 IP 设置为具体 IP 或
0.0.0.0/0(后者慎用)
mysql_secure_installation 执行时卡在密码强度校验?
该脚本默认启用 validate_password 插件,要求密码含大小写字母+数字+特殊字符(至少 8 位)。如果输入弱密码(如 123456),会反复提示重输,看似卡住。
- 可临时跳过:在提示“Validate Password plugin?”时输入
0(禁用) - 或提前加载插件并设宽松策略:
sudo mysql -e "SET GLOBAL validate_password.policy=LOW;",再运行mysql_secure_installation - 不建议长期禁用;开发机可用 LOW,生产环境必须 MEDIUM 或 STRONG
真正容易被忽略的是:MySQL 8.0 的 socket 文件路径默认为 /var/run/mysqld/mysqld.sock,但部分客户端(如旧版 PHP mysqli)可能硬编码查找 /tmp/mysql.sock。遇到 Can't connect to local MySQL server through socket 错误时,优先检查这个软链接是否存在,而不是急着改配置。











