温馨提示×

Debian下PHP如何连接MySQL

小樊
47
2026-07-05 20:18:02
栏目: 云计算

Debian 下,PHP 连接 MySQL 常见有三种方式:mysqliPDO_MySQLmysql(已废弃,不推荐)。下面以 Debian 11/12 为例,从安装到示例代码完整说明。


一、安装 PHP 与 MySQL 扩展

1️⃣ 安装 PHP(如未安装)

sudo apt update
sudo apt install php php-cli

2️⃣ 安装 MySQL 扩展(推荐)

sudo apt install php-mysql

此包会同时包含:

  • mysqli
  • pdo_mysql

3️⃣ 安装并启动 MySQL

sudo apt install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql

4️⃣ 重启 Web 服务(如使用 Apache / Nginx)

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 连接 MySQL 示例

✅ 方式一:MySQLi(面向对象,推荐)

<?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();
?>

✅ 方式二:PDO(最推荐,可移植性好)

<?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(已废弃,不推荐)

// 不再使用
mysql_connect();

五、常见问题排查

1️⃣ 连接失败

  • MySQL 是否启动?
systemctl status mysql
  • 用户是否允许 localhost 登录?
  • 密码是否正确?

2️⃣ 未找到扩展

sudo apt install php-mysql
sudo systemctl restart apache2

3️⃣ 端口不是 3306

$conn = new mysqli("127.0.0.1:3307", "user", "pass", "db");

六、推荐方案总结

方式 推荐度 说明
PDO ⭐⭐⭐⭐⭐ 跨数据库、安全
MySQLi ⭐⭐⭐⭐ 仅 MySQL
mysql 已废弃

如果你使用的是 Debian + Nginx + PHP-FPMDocker / MariaDB,可以告诉我,我可以给你更精确的配置示例。

0