温馨提示×

laravel怎样连接centos数据库

小樊
36
2026-10-17 11:32:30
栏目: 智能运维

在 Laravel 中“连接 CentOS 上的数据库”,关键不是“CentOS”本身,而是数据库类型(MySQL / PostgreSQL 等)和数据库所在服务器的地址。下面以最常见的情况:Laravel 连接 CentOS 服务器上的 MySQL为例说明。


一、前提条件(CentOS 端)

1. CentOS 已安装并启动数据库

例如 MySQL:

# 查看状态
systemctl status mysqld

# 启动
systemctl start mysqld

2. 数据库允许远程连接(重要)

MySQL 默认只允许 127.0.0.1。

修改 MySQL 配置

vi /etc/my.cnf

确保:

bind-address = 0.0.0.0

或注释掉:

# bind-address = 127.0.0.1

重启:

systemctl restart mysqld

3. 创建数据库和用户(推荐)

CREATE DATABASE laravel_db CHARACTER SET utf8mb4;

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

GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel'@'%';

FLUSH PRIVILEGES;

4. 开放防火墙端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload

二、Laravel 配置(.env 文件)

假设:

  • CentOS IP:192.168.1.100
  • 数据库名:laravel_db
  • 用户:laravel
  • 密码:password

.env

DB_CONNECTION=mysql
DB_HOST=192.168.1.100
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel
DB_PASSWORD=password

如果 Laravel 也在 CentOS 本机,用:

DB_HOST=127.0.0.1

三、测试连接

php artisan migrate

或:

php artisan tinker
>>> DB::connection()->getPdo();

四、常见问题排查

1. SQLSTATE[HY000] Connection refused

  • CentOS 防火墙未开放
  • MySQL 未启动
  • bind-address 配置错误

2. Access denied for user

  • 用户权限不对
  • 用户 host 不是 %

3. 超时

  • 安全组(云服务器)未放行 3306
  • IP 写错

五、其他数据库示例

PostgreSQL

DB_CONNECTION=pgsql
DB_HOST=192.168.1.100
DB_PORT=5432
DB_DATABASE=laravel_db
DB_USERNAME=laravel
DB_PASSWORD=password

如果你能告诉我:

  • Laravel 在 本地 / CentOS / Docker
  • 数据库是 MySQL / PostgreSQL / SQLite

我可以给你更精确的配置方式。

0 踩