LECMS数据库连接失败如何解决

域名注册
域名注册 正式会员超兽战士 👑年卡会员
发布于 2026-10-07 09:22 ·1 浏览 ·0 回复

照着下面的顺序排查一遍,你基本能自己定位并修好 LECMS 的数据库连接失败问题,不用再去论坛发帖等回复。

第一步:先读懂报错内容,别急着改配置

这一步的目的是分清「连不上数据库」和「连上了但选不到库」,两者改的地方完全不同。

常见提示有三类:

  • SQLSTATE[HY000] [2002] Connection refused 或 Can't connect to MySQL server —— 服务没启动、端口或地址不对。
  • Access denied for user 'xxx'@'localhost' —— 账号或密码错,或者该账号没有这个库的权限。
  • Unknown database 'xxx' —— 库名写错,或者数据库根本没建。

把报错原文复制下来对照,再去改对应的地方,能省掉大半时间。

注意:如果页面是白屏、只显示「数据库连接失败」而没有细节,先打开调试模式(ThinkPHP 内核在配置文件里把 app_debug 改为 true),才能看到真实错误。

第二步:确认 MySQL 服务在运行

结果是:服务是 running 状态,才谈得上后面的事。

Linux 服务器执行:

systemctl status mysqld
# 或
systemctl status mysql

如果不是 active (running),执行 systemctl start mysqld 启动。老一点的系统用 service mysql start。

Windows 服务器:按 Win+R 输入 services.msc,在列表里找 MySQL 或 MySQL57,右键「启动」。

第三步:核对数据库配置文件里的参数

LECMS 基于 ThinkPHP 内核,配置文件位置按版本不同:

  • ThinkPHP 5 内核(LECMS 3.x 等):站点根目录 /config/database.php
  • ThinkPHP 3.2 内核(老版本):/Application/Common/Conf/config.php

如果版本对不上,直接在站点根目录用搜索命令找:

grep -rn "DB_PASSWORD\|db_password" /www/wwwroot/你的站点目录 --include=*.php -l

打开文件,重点核对这几项:

参数说明
hostname数据库地址
database库名,一字不能差
username数据库用户名
password密码,含 #、&、$ 等符号时用单引号包住
hostport默认 3306,改过端口的要写对
prefix表前缀,必须和实际表一致
charset用 utf8 或 utf8mb4

注意:localhost 和 127.0.0.1 不是一回事。localhost 走 Unix socket,127.0.0.1 走 TCP。宝塔面板、虚拟主机给的连接地址经常是 127.0.0.1 或某个内网 IP,别想当然写 localhost。

第四步:手动验证账号密码和库是否存在

结果是:用命令行能连上,说明配置之外的环节没问题。

mysql -u你的用户名 -p -h127.0.0.1 -P3306

输入密码后能进 mysql> 提示符,再执行 show databases; 看目标库在不在。进不去说明账号密码或权限有问题。

用 phpMyAdmin 的话,登录后进「用户账户」→ 找到对应用户点「编辑权限」→ 检查「数据库权限」里有没有勾选目标数据库,没有就补上并执行。

注意:数据库密码在面板里重置后,配置文件不会自动同步,两边都要改。

第五步:检查 PHP 的 MySQL 扩展

结果:确认 PHP 确实具备连数据库的能力。

写一个 phpinfo.php 放到站点根目录,内容 <?php phpinfo();?>,浏览器访问后搜索 mysqli 或 pdo_mysql。没有的话,在宝塔「软件商店」→ 对应 PHP 版本 →「设置」→「安装扩展」里勾选安装;命令行环境执行 php -m | grep -i mysql 检查。

注意:查完记得删掉 phpinfo.php,这东西会暴露服务器信息。

第六步:排除端口、防火墙和安全组

结果:外部能访问到 3306 端口。

netstat -tlnp | grep 3306

本地有监听,但远程连不上,通常是云服务器安全组没放行 3306。到阿里云/腾讯云控制台的「安全组」里添加入方向规则,端口 3306,来源填你的网站服务器 IP(不要图省事填 0.0.0.0/0)。

第七步:清缓存后重试

改完配置仍报错,多半是旧缓存还在。删除站点目录下的 runtime 目录(TP5 内核)或 Application/Runtime(TP3.2 内核)里的全部内容,刷新页面。

第八步:还不行就看 MySQL 错误日志

日志会直接告诉你原因,比如连接数满了、表损坏了。

  • 宝塔:/www/server/data/ 下的 .err 文件
  • CentOS:/var/log/mysqld.log
  • Ubuntu:/var/log/mysql/error.log

连接数满的话,在 my.cnf 里调大 max_connections 后重启 MySQL。

小结

  • 先看报错原文分类:连不上、权限不足、库不存在,三条路走法不同。
  • 依次查:MySQL 服务是否运行 → 配置参数是否对 → 账号能否手动登录 → PHP 扩展是否安装 → 端口是否放行 → 缓存是否清掉。
  • localhost 与 127.0.0.1 不等价,密码含特殊字符要加引号。
  • 改完配置一定要清 runtime 缓存,否则改动看不到效果。
  • 最后兜底手段是看 MySQL 错误日志,比猜快得多。
版权声明:本文来自 GJ站长论坛《LECMS数据库连接失败如何解决》
原文链接:https://www.gj0.com/thread-205.html
转载请注明出处并保留本声明;内容仅代表作者观点,与本站立场无关。若本文涉嫌侵权,请联系本站处理。

全部回复 0

还没有回复,来抢沙发~