在wsl2 ubuntu中成功搭建php 8.3.14并连接本地mysql,需依次完成:启用wsl2并安装ubuntu;在wsl内安装配置mysql 8.x并切换root认证方式为密码认证;通过ppa安装php 8.3.14及mysql扩展;最后用pdo脚本验证连接。

在 Windows 10 的 WSL(推荐 WSL2)中搭建 PHP 8.3.14 并连接本地 MySQL,关键不是“装完就通”,而是理清三件事:MySQL 运行在哪、PHP 能不能找到它、连接参数是否匹配。整个过程不依赖 Windows 原生 MySQL 或 XAMPP,全部在 WSL Ubuntu 环境内完成,干净可控。
一、确认并安装 WSL2 和 Ubuntu
确保已启用 WSL2:
- 以管理员身份打开 PowerShell,运行:wsl --install(需 Windows 10 2004 / Build 19041+)
- 重启电脑后,首次启动 Ubuntu,设置 Linux 用户名和密码(非 Windows 账户)
- 验证:终端输入 wsl -l -v,状态应为 Running,版本为 WSL2
二、安装并配置 MySQL 8.x(在 WSL 内)
使用 Ubuntu 官方源快速安装(适合开发):
- 更新系统:sudo apt update && sudo apt upgrade -y
- 安装 MySQL:sudo apt install mysql-server -y
- 启动服务并设为开机自启:sudo systemctl start mysql && sudo systemctl enable mysql
- 安全初始化(可选但推荐):sudo mysql_secure_installation,按提示设 root 密码、禁用匿名用户等
- 登录验证:sudo mysql -u root -p,输入密码后执行 SELECT VERSION(); 确认是 8.x
⚠️ 注意:WSL 默认的 root@localhost 认证方式是 auth_socket,PHP 连接会失败。需切换为密码认证:
- 进入 MySQL:sudo mysql
- 执行:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_strong_password';
- FLUSH PRIVILEGES;,然后 exit
三、安装 PHP 8.3.14(非默认源,需添加 PPA)
Ubuntu 自带的 PHP 版本通常较旧,必须用 Ondřej Surý 的 PPA 获取 8.3:
- 添加仓库:sudo apt install software-properties-common -y
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update - 安装 PHP 8.3 及 MySQL 扩展:sudo apt install php8.3 php8.3-cli php8.3-mysql php8.3-curl php8.3-mbstring -y
- 验证版本:php -v 应输出 8.3.14;php -m | grep mysqli 应显示 mysqli 和 pdo_mysql
四、PHP 连接 MySQL 的实操验证
写一个测试脚本,确认连接可用:
- 创建文件:nano ~/test_db.php
- 粘贴以下内容(替换 your_strong_password):
<?php $host = '127.0.0.1'; // 不要用 localhost(可能走 socket,不稳定)
$port = 3306;
$user = 'root';
$pass = 'your_strong_password';
$db = 'mysql'; // 连系统库即可验证
try {
$pdo = new PDO("mysql:host=$host;port=$port;dbname=$db;charset=utf8mb4", $user, $pass, [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
]);
echo "✅ 连接成功!MySQL 版本:" . $pdo->query("SELECT VERSION()")->fetchColumn() . "\n";
} catch (PDOException $e) {
echo "❌ 连接失败:" . $e->getMessage() . "\n";
}
?>
- 运行:php ~/test_db.php
- 看到 ✅ 即表示 PHP 8.3.14 已成功连接 WSL 内的 MySQL 8.x
如遇 Connection refused,检查 MySQL 是否运行(sudo systemctl status mysql);如遇 Access denied,确认是否已执行 mysql_native_password 切换。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











