PAYATHON 2026

Wamp 中如何让 MySQL 使用 3306、MariaDB 使用 3310?

数据小陈

结论

MySQL 使用 3306、MariaDB 使用 3310 时,两个服务可以同时运行。需要分别确认数据库服务实际监听的端口、Wamp 的管理配置和 PHP 的连接端口。

“Default DBMS: None”表示 Wamp 当前没有识别到默认 DBMS。仅凭这条提示,不能认定 MariaDB 不支持 3310,也不能确定数据库服务是否启动失败。禁用 MySQL 后配置又回到 3306,还需要核对当时操作的是哪个数据库实例,以及 Wamp 如何处理默认 DBMS。

先恢复两个服务并确认实际配置文件

要同时使用两个数据库,应启用 MySQL 和 MariaDB,并保留 MySQL 的 3306 配置。

修改前先备份相关配置文件,然后在 PowerShell 中查看数据库服务的启动信息:

Get-CimInstance Win32_Service |
    Where-Object { $_.Name -match 'mysql|maria' } |
    Select-Object Name, State, PathName

重点查看 MariaDB 对应的可执行文件和启动参数。如果 PathName 中包含 --defaults-file,检查它指定的配置文件,确认是否就是你修改的 wamp64\mariadb\my.ini。

如果没有该参数,不能直接认定某个 my.ini 已生效,需要继续核对服务读取配置文件的方式。

将 MariaDB 的服务端端口设为 3310

确认 MariaDB 实际读取的配置文件后,将服务端端口配置为:

[mysqld]
port=3310

你给出的配置还包含:

[client]
port=3310

[wampmariadb64]
port=3310

这些配置组的用途不同:

  • [client] 为读取该配置的客户端提供默认参数,修改它不会直接改变服务器监听端口。
  • [mysqld] 是服务端配置组。
  • [wampmariadb64] 是否被读取,取决于服务名称和启动方式,需要结合服务启动信息确认。

检查同一配置文件中是否有重复的 port 设置,以及启动参数中是否另行指定了端口。保存后重启 MariaDB 服务,只修改文件不会改变已经运行的进程。

如果当前 Wamp 菜单提供 MariaDB 端口修改功能,可以优先使用,但要先确认操作对象是 MariaDB。原始信息不足以确认 Wamp 3.4 中该入口的准确位置,也不能确定它与旧帖子中的菜单完全一致。

核对 Wamp 的默认 DBMS 与端口记录

你修改的配置:

[mariadboptions]
mariaPortUsed="3310"

不能替代 MariaDB 服务端的端口配置。即使这里写着 3310,仍需验证 MariaDB 是否实际监听该端口。

对于“Default DBMS: None”,先恢复 MySQL 服务,再检查 Wamp 是否重新识别出默认 DBMS。如果当前版本提供默认 DBMS 设置入口,可以选择仍使用 3306 的 MySQL,让 MariaDB 使用独立端口 3310。

即使没有“Invert default DBMS MariaDB <-> MySQL”按钮,应用仍可以通过明确的主机和端口连接数据库。该按钮涉及 Wamp 的默认实例管理,不能用来判断 MariaDB 端口是否配置成功。

如果两个数据库都能正常连接,而 Wamp 仍显示该提示,应继续检查 Wamp 的管理配置和日志,不能仅凭界面提示反复修改数据库端口。

用监听状态和 SQL 验证结果

在 Windows 命令提示符中查看监听端口:

netstat -ano | findstr LISTENING | findstr ":3306 :3310"

检查本地地址列,确认有 3306 和 3310 的监听记录,再通过最后一列的 PID 核对对应进程。端口有监听只说明某个进程正在使用它,还不能证明该进程就是目标 MariaDB 实例。

在 PHP 中明确指定 MariaDB 的 TCP 端口:

$token = new PDO(
    "mysql:host=127.0.0.1;port=3310;dbname=my_db",
    $dbuser,
    $dbpass,
    $pdo_options
);

$result = $token->query(
    "SELECT VERSION() AS server_version, @@port AS server_port"
)->fetch(PDO::FETCH_ASSOC);

var_dump($result);

这里使用 127.0.0.1 明确测试 TCP 连接,MariaDB 仍使用 PDO 的 mysql: 驱动前缀。

返回结果应同时满足两个条件:版本信息属于目标 MariaDB 实例,server_port 为 3310。然后通过端口 3306 连接 MySQL,执行相同查询,确认它仍是目标 MySQL 实例。

仍然失败时如何定位

  • 3310 没有监听:检查 MariaDB 服务状态和错误日志,重点查看配置文件是否读取成功、3310 是否被占用,以及重启是否成功。
  • 3310 可以连接,但版本不符:核对监听进程和服务启动路径,确认没有连接到其他实例。
  • 数据库连接正常,Wamp 仍显示 None:继续排查 Wamp 的默认 DBMS 识别和管理配置。
  • 出现 Access denied 或 Unknown database:检查 MariaDB 实例中的账号、授权和数据库。两个独立实例中的用户和数据库需要分别确认。

配置完成后,应确认两个服务分别监听目标端口,SQL 查询也返回了正确的实例与端口。

备注:内容仅供参考。