在 Ubuntu 下使用 ThinkPHP 连接数据库,通常步骤如下(以 ThinkPHP 6 / 8 为例,MySQL 最常见):
sudo apt update
sudo apt install php php-cli php-fpm php-mysql php-mbstring php-xml php-curl
检查扩展:
php -m | grep pdo_mysql
sudo apt install mysql-server
sudo systemctl start mysql
sudo systemctl enable mysql
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;
编辑:
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");
localhostsudo apt install php-mysql
sudo systemctl restart php-fpm
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),可以告诉我,我给你对应配置。