mysql 8.0 默认认证方式、大小写策略、扩展加载及容器网络配置与cms要求不匹配,需分别修改default_authentication_plugin为mysql_native_password、设置lower_case_table_names=1、启用mysqli扩展并正确配置socket路径、在docker中使用服务名而非localhost并授权@'%'用户。

MySQL 8.0 安装后无法被 CMS 连接?检查 default_authentication_plugin
很多 CMS(如 WordPress、Drupal、Joomla)仍依赖 mysql_native_password 认证方式,而 MySQL 8.0 默认启用 caching_sha2_password,导致连接时抛出 Client does not support authentication protocol 错误。
- 编辑
my.cnf(Linux)或my.ini(Windows),在[mysqld]段落末尾添加:default_authentication_plugin = mysql_native_password
- 重启 MySQL 服务:
sudo systemctl restart mysql(Linux)或服务管理器中重启(Windows) - 对已存在的 CMS 用户重置认证方式:
ALTER USER 'cms_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password';
CMS 安装时提示 mysqli extension is not loaded?确认 PHP 与 MySQL 扩展匹配
PHP 8.x 默认不再捆绑 mysqli 扩展,且部分一键环境(如 XAMPP、WAMP)可能未启用它,CMS 就会卡在数据库配置页。
- 运行
php -m | grep mysqli(Linux/macOS)或查看phpinfo()输出,确认mysqli已启用 - 若缺失,编辑
php.ini,取消注释:extension=mysqli
(注意不是mysql,该扩展已废弃) - 确保
mysqli.default_socket指向正确的 socket 路径(如/var/run/mysqld/mysqld.sock),否则本地连接可能超时
WordPress / Drupal 等 CMS 初始化失败:检查 lower_case_table_names 设置
在 Linux 上安装 MySQL 后若未显式设置 lower_case_table_names=1,CMS 安装过程可能因表名大小写敏感而创建失败(尤其当 CMS 模块含混合大小写表名时)。
PHP商城系统是国内领先商城系统,网店系统,购物系统,网上商城系统,B2C商城系统产品.同时也是一个商业的PHP开发框架。PHP 商城系统由内容、文章、会员、留言、订单、 财务、广告、短消息、数据库管理、营销推广、内置支付管理、商品配送管理、无限级分类、全站搜索等多个功能模块插件组成。在当今瞬机万变的市场环境中,快速高效的IT解决方案是您业务成功的关键。我们PHP商城系统能为您量身打造完全符合需求
- 该参数必须在 MySQL 初始化前设置,运行中不可修改;若已初始化,需导出数据 → 重装 MySQL 并在
my.cnf中加入:lower_case_table_names = 1
- Windows 和 macOS 默认为 1,Linux 默认为 0;CMS 核心和主流插件/模块均假设此值为 1
- 不设此项可能导致后续模块启用时报
Table 'wp_XXX' doesn't exist,即使SHOW TABLES可见对应表
Docker 环境下 CMS 连接 MySQL 失败:别只改 host,还要处理网络与权限
用 docker-compose 启动 CMS + MySQL 时,常见错误是 CMS 容器内填了 localhost 当 host——这实际指向容器自身,而非 MySQL 容器。
- host 必须填 MySQL 服务名(如
db),且两个容器需在同一个自定义网络中(docker-compose.yml中定义networks) - MySQL 容器启动后,需手动进容器执行:
CREATE USER 'cms_user'@'%' IDENTIFIED BY 'pass'; GRANT ALL ON cms_db.* TO 'cms_user'@'%'; FLUSH PRIVILEGES;
(@'%'允许跨容器访问) - 避免使用
mysql:latest镜像——它可能拉取 MySQL 9.0 测试版,CMS 尚未兼容;明确指定mysql:8.0
CMS 数据库环境真正卡点不在安装步骤本身,而在 MySQL 底层行为与 CMS 假设之间的隐性错位:认证方式、大小写策略、socket 路径、容器网络语义——这些地方一旦默认值不匹配,错误往往不直接报在数据库连接字段,而是延迟到模块加载或表操作时才暴露。









