温馨提示×

Ubuntu下PHP如何连接MySQL

小樊
42
2026-08-12 08:16:05
栏目: 云计算

在 Ubuntu 下,PHP 连接 MySQL 通常使用 MySQLiPDO 扩展。下面分步骤说明,从安装到示例代码。


一、确认环境

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

该包会同时启用 mysqlipdo_mysql


2. 重启 Web 服务

Apache

sudo systemctl restart apache2

Nginx + PHP-FPM

sudo systemctl restart php8.1-fpm
sudo systemctl restart nginx

三、检查扩展是否启用

php -m | grep -E 'mysqli|pdo_mysql'

或创建测试文件:

<?php
phpinfo();

四、PHP 连接 MySQL 示例

示例 1:使用 MySQLi(面向对象)

<?php
$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(推荐)

<?php
$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

我可以给你更精确的配置方案。

0