温馨提示×

ubuntu下thinkphp如何连接数据库

小樊
35
2026-09-28 17:51:11
栏目: 编程语言

在 Ubuntu 下使用 ThinkPHP 连接数据库,通常步骤如下(以 ThinkPHP 6 / 8 为例,MySQL 最常见):


一、准备环境(Ubuntu)

1. 安装 PHP 和扩展

sudo apt update
sudo apt install php php-cli php-fpm php-mysql php-mbstring php-xml php-curl

检查扩展:

php -m | grep pdo_mysql

2. 安装并启动 MySQL

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

3. 创建数据库和用户

CREATE DATABASE tp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'tp_user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON tp_db.* TO 'tp_user'@'localhost';
FLUSH PRIVILEGES;

二、ThinkPHP 数据库配置

方式一:修改配置文件(推荐)

编辑:

config/database.php

示例(MySQL):

return [
    'default' => 'mysql',
    'connections' => [
        'mysql' => [
            'type'     => 'mysql',
            'hostname' => '127.0.0.1',
            'database' => 'tp_db',
            'username' => 'tp_user',
            'password' => 'password',
            'hostport' => '3306',
            'charset'  => 'utf8mb4',
            'prefix'   => '',
        ],
    ],
];

方式二:使用 .env 文件(更优雅)

.env 文件:

DB_TYPE=mysql
DB_HOST=127.0.0.1
DB_NAME=tp_db
DB_USER=tp_user
DB_PASS=password
DB_PORT=3306
DB_CHARSET=utf8mb4

config/database.php 中使用:

'hostname' => env('DB_HOST'),
'database' => env('DB_NAME'),
'username' => env('DB_USER'),
'password' => env('DB_PASS'),

三、测试数据库连接

控制器中测试

use think\facade\Db;

public function test()
{
    $list = Db::table('user')->select();
    return json($list);
}

或原生 SQL:

Db::query("SELECT 1");

四、常见问题排查

1. 连接失败

  • MySQL 是否启动
  • 用户是否允许 localhost
  • 防火墙 / 端口

2. 缺少 pdo_mysql

sudo apt install php-mysql
sudo systemctl restart php-fpm

3. 权限问题

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

五、远程数据库(非本机)

'hostname' => '192.168.1.100',
'hostport' => '3306',

MySQL 需允许远程连接:

CREATE USER 'tp_user'@'%' IDENTIFIED BY 'password';

如果你用的是 ThinkPHP 5 / 特定版本 / 非 MySQL(PostgreSQL、SQLite),可以告诉我,我给你对应配置。

0 踩