Ubuntu 24.04 自带 mysql-server 即 MySQL 8.0,安装后 root 默认使用 auth_socket 认证,需运行 sudo mysql_secure_installation 设置密码并切换认证插件;远程访问应创建专用用户并授权,而非开放 root 远程权限或盲目修改 bind-address。

Ubuntu 24.04 自带的 mysql-server 包就是 MySQL 8.0(当前稳定版如 8.0.36-0ubuntu0.24.04.1),官方源安装本身无兼容性问题——但多数“报错”其实来自配置惯性、权限模型变更或工具链不匹配,不是版本冲突。
auth_socket 认证导致本地 sudo mysql 能进、-p 却连不上
Ubuntu 包默认让 root@localhost 使用 auth_socket 插件,这意味着它跳过密码校验,只认系统用户身份。所以 sudo mysql -u root 成功,但 mysql -u root -p 会报 Access denied for user 'root'@'localhost'。
- 这不是 bug,是安全默认行为;不要强行删插件或改
plugin字段 - 正确做法:运行
sudo mysql_secure_installation,它会在设置密码时自动切换为caching_sha2_password - 若已手动改过认证方式但连接失败,检查是否漏了
FLUSH PRIVILEGES;,且确认客户端支持该插件(旧版 MySQL client 或某些 GUI 工具可能不兼容)
caching_sha2_password 插件引发远程连接拒绝
MySQL 8.0 默认用 caching_sha2_password,而很多老客户端(如旧版 PHP MySQLi、某些 Qt 应用、甚至部分 JDBC 驱动)默认不支持,报错类似:Authentication plugin 'caching_sha2_password' cannot be loaded。
- 临时解法(仅限开发环境):建用户时显式指定旧插件:
CREATE USER 'appuser'@'%' IDENTIFIED WITH mysql_native_password BY 'Pass123!'; - 长期建议:升级客户端驱动;例如 PHP 7.4+、Connector/J 8.0+ 原生支持该插件
- 别全局降级服务器插件(如改
default_authentication_plugin),这会削弱安全性,且 Ubuntu 包不鼓励修改此值
bind-address 改成 0.0.0.0 后本地 socket 连接失效
Ubuntu 24.04 的 mysql 客户端默认优先走 Unix socket(/var/run/mysqld/mysqld.sock),而非 TCP。一旦把 bind-address = 0.0.0.0,MySQL 仍监听 socket,但部分工具(尤其脚本里硬写 -h 127.0.0.1)会强制走 TCP,此时若防火墙或用户权限没配好,就连接超时。
面向 CRM 系统的 MySQL 8 数据库模式设计。当用户需要为客户关系管理(CRM)系统设计、评审、优化或生成数据库模式时,应使用此项技能。
- 验证方式:
mysql -u root -S /var/run/mysqld/mysqld.sock能进,说明 socket 没问题 - 真正要远程访问,优先创建专用用户(如
'appuser'@'192.168.1.%'),再开ufw allow 3306,最后才考虑改bind-address - 改完必须
sudo systemctl restart mysql,且确认netstat -tlnp | grep :3306显示监听*:3306而非127.0.0.1:3306
Qt5 程序加载 libqsqlmysql.so 失败
Ubuntu 24.04 的 MySQL 8.0 客户端库(libmysqlclient.so.21)与 Qt5 默认链接的旧版不兼容,常见错误:Cannot load library ... libqsqlmysql.so: (libmysqlclient.so.20: cannot open shared object file)。
- 先确认系统已装
libmysqlclient-dev:sudo apt install libmysqlclient-dev - Qt 编译时需用系统新版头文件和库,不能混用 Qt 自带的旧驱动;重新编译
qsqlmysql插件(路径通常在~/Qt5.12.1/5.12.1/Src/qtbase/src/plugins/sqldrivers/mysql/) - 运行时确保
LD_LIBRARY_PATH包含/usr/lib/x86_64-linux-gnu(Ubuntu 24.04 的libmysqlclient.so.21所在位置)
最易被忽略的一点:Ubuntu 24.04 的 mysql_secure_installation 脚本执行后,root@localhost 权限会被严格限制——它不再允许远程连接,也不再能直接授权其他用户远程权限。所有远程访问必须通过新建的、带明确 host 段的用户(如 'user'@'192.168.%')来实现,而不是试图“放开 root”。










