温馨提示×

ubuntu php-fpm如何连mysql

小樊
37
2026-09-28 13:49:01
栏目: 云计算

在 Ubuntu 上让 PHP-FPM 连接 MySQL,通常包含以下几个步骤。下面以 Ubuntu 20.04/22.04 + PHP 8.x + MySQL 8.0 为例说明。


一、安装必要组件

1. 安装 PHP-FPM 和 MySQL 扩展

sudo apt update
sudo apt install php-fpm php-mysql mysql-server -y

确认 PHP 版本(例如 php8.1):

php -v

二、启动服务

sudo systemctl start php8.1-fpm
sudo systemctl enable php8.1-fpm

sudo systemctl start mysql
sudo systemctl enable mysql

三、配置 MySQL 用户和数据库

1. 登录 MySQL

sudo mysql

2. 创建数据库和用户

CREATE DATABASE testdb;

CREATE USER 'phpuser'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON testdb.* TO 'phpuser'@'localhost';

FLUSH PRIVILEGES;
EXIT;

四、PHP 连接 MySQL 示例

方式 1:使用 PDO(推荐)

<?php
$host = '127.0.0.1';
$db   = 'testdb';
$user = 'phpuser';
$pass = 'password';
$charset = 'utf8mb4';

$dsn = "mysql:host=$host;dbname=$db;charset=$charset";

try {
    $pdo = new PDO($dsn, $user, $pass);
    echo "MySQL 连接成功";
} catch (PDOException $e) {
    echo "连接失败: " . $e->getMessage();
}
?>

方式 2:使用 mysqli

<?php
$conn = new mysqli('127.0.0.1', 'phpuser', 'password', 'testdb');

if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
echo "MySQL 连接成功";
?>

五、PHP-FPM + Web 服务器(Nginx 示例)

1. Nginx 配置

server {
    listen 80;
    server_name example.com;
    root /var/www/html;

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }
}
sudo nginx -t
sudo systemctl reload nginx

六、常见问题排查

1. 连接被拒绝

  • MySQL 是否在运行
  • 使用 127.0.0.1 而不是 localhost(避免 socket 问题)

2. 缺少 php-mysql

php -m | grep pdo_mysql

若无输出,重装扩展:

sudo apt install php8.1-mysql
sudo systemctl restart php8.1-fpm

3. 权限问题

确保:

sudo chown -R www-data:www-data /var/www/html

如果你用的是 Apache + PHP-FPM 或 Docker 环境,可以告诉我,我可以给你对应配置。

0 踩