在 Ubuntu 环境里,PHP 要连接 MySQL,通常会用到 MySQLi 或 PDO 这两个扩展。接下来就按步骤展开,从安装开始,一直到示例代码,依次说明清楚。

一、确认环境
1. 已安装 PHP
php -v如果没有安装:
sudo apt update
sudo apt install php php-cli二、安装 MySQL 扩展
1. Ubuntu 20.04 / 22.04 / 24.04(推荐)
安装 MySQL 服务器(如果还没装)
sudo apt install mysql-server安装 PHP MySQL 扩展
sudo apt install php-mysql安装这个包后,mysqli 和 pdo_mysql 这两个扩展会一并启用。
2. 重启 Web 服务
Apache
sudo systemctl restart apache2Nginx + PHP-FPM
sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx三、检查扩展是否启用
php -m | grep -E 'mysqli|pdo_mysql'或创建测试文件:
phpinfo();四、PHP 连接 MySQL 示例
示例 1:使用 MySQLi(面向对象)
$host = 'localhost';
$user = 'root';
$password = 'your_password';
$database = 'testdb';
$conn = new mysqli($host, $user, $password, $database);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "MySQLi 连接成功";
$conn->close();示例 2:使用 PDO(推荐)
$host = 'localhost';
$db = 'testdb';
$user = 'root';
$pass = 'your_password';
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
try {
$pdo = new PDO($dsn, $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "PDO 连接成功";
} catch (PDOException $e) {
die("连接失败: " . $e->getMessage());
}五、常见问题
1. 连接失败:Access denied
Access denied for user 'root'@'localhost'解决:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password';
FLUSH PRIVILEGES;2. 使用 Socket 连接
如果 MySQL 使用 socket:
$conn = new mysqli('localhost', 'root', 'password', 'testdb', null, '/var/run/mysqld/mysqld.sock');3. PHP 版本与扩展不匹配
查看 PHP 版本:
php -v安装对应版本扩展(如 PHP 8.1):
sudo apt install php8.1-mysql六、推荐做法
- 使用 PDO(支持预处理,更安全)
- 使用 try-catch 处理异常
- 不要在生产环境暴露数据库密码
如果你愿意,可以告诉我:
- 使用的是 Apache / Nginx
- PHP 版本
- 是否用 Docker
我可以给你更精确的配置方案。