KSWEB MySQL 连不上 检查 3306 端口是否被占 和 MariaDB 冲突
现象
CMS 访问时报:
- WordPress:"建立数据库连接时出错"
- Joomla:"数据库无法连接"
- Drupal:"SQLSTATE[HY000] [2002] Connection refused"
或 phpMyAdmin 自己也登不上。
按顺序排查
第一步:看 MySQL 在不在跑
打开 KSWEB → MYSQL 标签页 → 看开关是不是打开的、状态页上 MySQL 那行是不是写"运行中"。
如果没开:打开开关,等几秒让 MySQL 初始化完成。
第二步:检查 3306 端口是不是被占了
MySQL 和 MariaDB 不能同时监听 3306 端口。
打开 KSWEB → MARIADB 标签页 → 看它的开关是不是也开着。如果是,关掉 MariaDB,等 10 秒让 MySQL 重新绑定端口,再试 CMS。
TOOLS 里有端口测试工具,输入 3306 能看到当前是谁在占用。
第三步:用 phpMyAdmin / Adminer 手动登一次
phpMyAdmin 和 CMS 用的是同一个 MySQL,手动登一下就能排除到底是 CMS 配置错了还是 MySQL 本身有问题。
打开 phpMyAdmin,填:
- 服务器:
localhost或127.0.0.1 - 用户名:
root - 密码:空(部署后默认是空,改了的话填你改的新密码)
| phpMyAdmin 结果 | 含义 | 下一步 |
|---|---|---|
| 能登上 ✅ | MySQL 没问题,CMS 配置错了 | 跳到第四步 |
| 登不上 ❌ | MySQL 本身有问题 | 跳到第五步 |
第四步:CMS 配置文件里的连接信息
不同 CMS 的数据库连接配置位置不同,都在站点根目录:
| CMS | 配置文件 | 要改的字段 |
|---|---|---|
| WordPress | wp-config.php | DB_HOST、DB_NAME、DB_USER、DB_PASSWORD |
| Joomla | configuration.php | $dbhost、$dbname、$dbuser、$dbpass |
| Drupal | sites/default/settings.php | $databases 数组 |
| Yii2 | config/db.php | host、dbname、username、password |
| MODX | core/config/config.inc.php | $database_server、$dbase、$database_user、$database_password |
逐一核对四个字段:主机是不是 localhost / 127.0.0.1、数据库名是不是在 phpMyAdmin 里建过、用户名是不是 root、密码——部署没改过就是空,改过就填新密码。
常见坑:改过 root 密码但没同步 CMS 配置文件,CMS 还拿着空密码去连 MySQL,肯定连不上。
第五步:MySQL 日志
如果 phpMyAdmin 也登不上,看 MySQL 自己的日志:
- MYSQL 标签页 → Log File / Log
- 看最后几行的错误信息
端口被占(最常见)
1014 10:00:00 [ERROR] Can't start server: Bind on TCP/IP port. Got error: 98
解决:关掉 MariaDB 开关。
数据文件损坏
1014 10:00:00 [ERROR] InnoDB: Corruption in space header
1014 10:00:00 [ERROR] Plugin 'InnoDB' init function returned error.
解决:MYSQL 标签页里点 Repair 尝试修复。修复前建议先备份数据文件。
磁盘空间不足
1014 10:00:00 [ERROR] No space left on device
解决:清理手机存储,至少留 500MB 给 MySQL 数据文件。
初始化文件损坏
1014 10:00:00 [ERROR] /data/data/ru.kslabs.ksweb/files/mysql/data/mysql.frm 损坏
解决:如果不重要,备份数据后重置 MySQL(KSWEB SETTINGS → Components → 重装 MySQL)。
第六步:端口号
极少数情况 MySQL 用了非 3306 端口。确认方法:
- MYSQL 标签页 → Configuration → Edit
- 搜
port =这一行,看是多少 - CMS 配置文件里也要填这个端口(比如 WordPress 的
DB_HOST写成localhost:3307)
但 KSWEB 默认就用 3306,正常情况不用改。
快速排查清单(按顺序走)
[ ] MySQL 开关开了吗?状态页显示运行中吗?
[ ] MariaDB 是不是也开着?两个不能同时监听 3306
[ ] phpMyAdmin 能不能登上去?(主机 localhost,root,空密码或你改过的)
[ ] CMS 配置文件里的 DB_HOST/DB_NAME/DB_USER/DB_PASSWORD 对吗?
[ ] 改过 root 密码后 CMS 配置同步更新了吗?
[ ] MYSQL 日志里有没有错误信息?
[ ] 手机存储还剩多少?