在 Debian 下,PHP 连接 MySQL 常见有三种方式:mysqli、PDO_MySQL、mysql(已废弃,不推荐)。下面以 Debian 11/12 为例,从安装到示例代码完整说明。
sudo apt update
sudo apt install php php-cli
sudo apt install php-mysql
此包会同时包含:
mysqlipdo_mysqlsudo apt install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql
sudo systemctl restart apache2
# 或
sudo systemctl restart nginx
sudo systemctl restart php-fpm
php -m | grep -E 'mysqli|pdo_mysql'
或创建测试文件:
<?php
phpinfo();
CREATE DATABASE testdb;
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';
FLUSH PRIVILEGES;
<?php
$host = 'localhost';
$user = 'testuser';
$pass = 'password';
$db = 'testdb';
$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
echo "MySQLi 连接成功";
$conn->close();
?>
<?php
$dsn = "mysql:host=localhost;dbname=testdb;charset=utf8mb4";
$user = 'testuser';
$pass = 'password';
try {
$pdo = new PDO($dsn, $user, $pass);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "PDO 连接成功";
} catch (PDOException $e) {
die("连接失败: " . $e->getMessage());
}
?>
// 不再使用
mysql_connect();
systemctl status mysql
localhost 登录?sudo apt install php-mysql
sudo systemctl restart apache2
$conn = new mysqli("127.0.0.1:3307", "user", "pass", "db");
| 方式 | 推荐度 | 说明 |
|---|---|---|
| PDO | ⭐⭐⭐⭐⭐ | 跨数据库、安全 |
| MySQLi | ⭐⭐⭐⭐ | 仅 MySQL |
| mysql | ❌ | 已废弃 |
如果你使用的是 Debian + Nginx + PHP-FPM 或 Docker / MariaDB,可以告诉我,我可以给你更精确的配置示例。