温馨提示×

ubuntu thinkphp如何连接数据库

小樊
49
2026-09-22 20:52:58
栏目: 编程语言

在 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 unzip

查看 PHP 版本:

php -v

2. 安装并启动 MySQL

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

初始化(可选):

sudo mysql_secure_installation

3. 创建数据库和用户(示例)

CREATE DATABASE tp_db CHARACTER SET utf8mb4;
CREATE USER 'tp_user'@'localhost' IDENTIFIED BY '123456';
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' => '123456',
            '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=123456
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'),

三、测试数据库连接

方法 1:在控制器中测试

use think\facade\Db;

public function test()
{
    $res = Db::query("SELECT VERSION()");
    dump($res);
}

访问路由后能看到 MySQL 版本即表示连接成功。


方法 2:使用模型

namespace app\model;

use think\Model;

class User extends Model
{
    protected $table = 'user';
}

四、常见问题排查(Ubuntu)

1. 连接被拒绝

  • MySQL 是否启动:sudo systemctl status mysql
  • host 是否写错(localhost / 127.0.0.1)
  • 用户权限是否只限制 localhost

2. 缺少 pdo_mysql

php -m | grep pdo_mysql

没有就安装:

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

3. 权限问题

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

五、总结

✅ Ubuntu
✅ PHP + MySQL
✅ ThinkPHP 配置 database.php 或 .env
✅ 用 Db::query() 测试

如果你用的是 ThinkPHP 5 / 8 / 特定数据库(PostgreSQL / SQLite),可以告诉我,我可以给你对应版本的配置示例。

0 踩