在 Laravel 中连接 Debian 服务器上的数据库,本质上和普通数据库连接一样,关键是:
.env 或 config/database.php 配置正确下面以 MySQL / MariaDB 为例(Laravel 最常用),PostgreSQL 也可以类比。
sudo apt update
sudo apt install mariadb-server
启动并设置开机自启:
sudo systemctl start mariadb
sudo systemctl enable mariadb
登录数据库:
sudo mysql -u root -p
创建数据库:
CREATE DATABASE laravel_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
创建用户并授权(推荐方式):
CREATE USER 'laravel_user'@'%' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'%';
FLUSH PRIVILEGES;
%表示允许远程连接
如果是本机 Laravel,可用'laravel_user'@'localhost'
编辑 MySQL 配置:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
找到:
bind-address = 127.0.0.1
改为:
bind-address = 0.0.0.0
重启数据库:
sudo systemctl restart mariadb
.envDB_CONNECTION=mysql
DB_HOST=127.0.0.1 # 本地
# DB_HOST=Debian服务器IP # 远程
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=strong_password
✅ 本地 Laravel + 本地 Debian 数据库
DB_HOST=127.0.0.1
✅ Laravel 在另一台服务器
DB_HOST=192.168.1.100
config/database.php一般无需修改,确认如下即可:
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', '127.0.0.1'),
'port' => env('DB_PORT', '3306'),
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
'password' => env('DB_PASSWORD', ''),
'unix_socket' => env('DB_SOCKET', ''),
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
],
php artisan config:clear
php artisan tinker
DB::connection()->getPdo();
✅ 无报错说明连接成功
SQLSTATE[HY000] [2002] Connection refusedbind-address 未改为 0.0.0.0sudo ufw allow 3306
Access denied for userSELECT user, host FROM mysql.user;
Unknown database.env 中 DB_DATABASE 写错sudo apt install postgresql
sudo -u postgres createuser laravel_user
sudo -u postgres createdb laravel_db -O laravel_user
.env:
DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=password
Laravel 连接 Debian 数据库 = Debian 上数据库允许连接 + Laravel
.env配置正确
如果你愿意,可以告诉我:
我可以给你更精确的配置方案 ✅