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 查询也返回了正确的实例与端口。
备注:内容仅供参考。
