在 Laravel 中“连接 CentOS 上的数据库”,关键不是“CentOS”本身,而是数据库类型(MySQL / PostgreSQL 等)和数据库所在服务器的地址。下面以最常见的情况:Laravel 连接 CentOS 服务器上的 MySQL为例说明。
例如 MySQL:
# 查看状态
systemctl status mysqld
# 启动
systemctl start mysqld
MySQL 默认只允许 127.0.0.1。
vi /etc/my.cnf
确保:
bind-address = 0.0.0.0
或注释掉:
# bind-address = 127.0.0.1
重启:
systemctl restart mysqld
CREATE DATABASE laravel_db CHARACTER SET utf8mb4;
CREATE USER 'laravel'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel'@'%';
FLUSH PRIVILEGES;
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
假设:
192.168.1.100laravel_dblaravelpassword.envDB_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();
bind-address 配置错误%DB_CONNECTION=pgsql
DB_HOST=192.168.1.100
DB_PORT=5432
DB_DATABASE=laravel_db
DB_USERNAME=laravel
DB_PASSWORD=password
如果你能告诉我:
我可以给你更精确的配置方式。