温馨提示×

LNMP如何配置数据库连接

小樊
50
2026-07-23 05:26:20
栏目: 大数据

LNMP(Linux + Nginx + MySQL + PHP) 环境下,“配置数据库连接”一般包括 三层

  1. MySQL 本身(数据库、用户、权限)
  2. PHP 连接 MySQL(PHP 代码或框架配置)
  3. Nginx(一般不直接参与数据库连接,但常见相关配置)

下面按最常见场景一步步说明。


一、MySQL 端:创建数据库和用户(必须)

1️⃣ 登录 MySQL

mysql -u root -p

2️⃣ 创建数据库

CREATE DATABASE testdb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

3️⃣ 创建数据库用户

CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password123';

4️⃣ 授权

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

✅ 推荐:

  • 生产环境 不要用 root
  • 密码要复杂
  • 权限最小原则

二、PHP 连接 MySQL(重点)

✅ 方式一:原生 PHP(mysqli / PDO)

mysqli 示例

<?php
$host = '127.0.0.1';
$port = 3306;
$db   = 'testdb';
$user = 'testuser';
$pass = 'password123';

$conn = new mysqli($host, $user, $pass, $db, $port);

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

PDO 示例(推荐)

<?php
try {
    $dsn = "mysql:host=127.0.0.1;port=3306;dbname=testdb;charset=utf8mb4";
    $pdo = new PDO($dsn, 'testuser', 'password123');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "连接成功";
} catch (PDOException $e) {
    echo "连接失败:" . $e->getMessage();
}

✅ 方式二:常见 PHP 框架配置

Laravel(.env

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=testdb
DB_USERNAME=testuser
DB_PASSWORD=password123

ThinkPHP(config/database.php)

return [
    'default' => 'mysql',
    'connections' => [
        'mysql' => [
            'type'     => 'mysql',
            'hostname' => '127.0.0.1',
            'database' => 'testdb',
            'username' => 'testuser',
            'password' => 'password123',
            'hostport' => '3306',
            'charset'  => 'utf8mb4',
        ],
    ],
];

三、Nginx 相关配置(很少直接涉及数据库)

Nginx 不直接连接数据库,但常见注意点:

1️⃣ PHP-FPM 是否正常运行

systemctl status php-fpm

2️⃣ Nginx 配置是否正确转发 PHP

location ~ \.php$ {
    fastcgi_pass   unix:/run/php-fpm/www.sock;
    fastcgi_index  index.php;
    include        fastcgi.conf;
}

3️⃣ 防火墙 / 端口(本地一般不用)

# 如果是远程数据库
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload

四、常见问题排查

❌ 连接失败常见原因

问题 排查
Access denied 用户名 / 密码 / 权限
Unknown database 数据库不存在
Connection refused MySQL 没启动 / 端口错
本地连不上 host 用 127.0.0.1 而不是 localhost(socket 问题)
PHP 报错无 mysql 没装扩展

检查 MySQL 是否运行

systemctl status mysqld
# 或
mysqladmin -u root status

检查 PHP 扩展

php -m | grep -i mysql

五、总结一句话

LNMP 中数据库连接 = MySQL 授权 + PHP 配置 + PHP-FPM 正常运行


如果你愿意,可以告诉我:

  • ✅ 用的是 原生 PHP / Laravel / ThinkPHP / 其他
  • ✅ 报错信息
  • ✅ 是否是 远程数据库

我可以一步一步帮你查到具体哪一行配置出错。

0