You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在本地Laravel 8应用中连接Bluehost远程数据库?

解决Laravel 8本地连接Bluehost远程数据库的1045访问拒绝错误

问题场景

本地Laravel 8应用尝试连接Bluehost创建的远程数据库时,执行查询抛出权限错误:

SQLSTATE[HY000] [1045] Access denied for user 'ngtonlin_cron_jobs_test'@'Shared IP Address.braintel.net.pk' (using password: YES) (SQL: select * from users)

当前.env配置:

DB_CONNECTION=mysql
DB_HOST=Shared IP Address
DB_PORT=3306
DB_DATABASE=db_name
DB_USERNAME=user_name
DB_PASSWORD="D$8]!2?^kg(!"

测试查询代码:

Route::get('/', function () {
    $users = DB::table('users')->get();
    dd($users);
});

解决方案

1. 给数据库用户开放远程访问权限

Bluehost默认仅允许服务器本地IP访问数据库,需手动授权你的本地公网IP:

  • 登录Bluehost的cPanel面板,找到MySQL Databases
  • 进入Remote MySQL选项
  • 添加你的本地公网IP(可通过执行curl ifconfig.me获取);测试阶段可临时用%允许所有IP访问(生产环境禁用此操作)

2. 修正.env密码格式

密码包含特殊字符时,不需要包裹双引号,修改为:

DB_PASSWORD=D$8]!2?^kg(!

修改后执行以下命令清除配置缓存:

php artisan config:clear
php artisan cache:clear

3. 验证凭证与连通性

  • 用Navicat、DBeaver等数据库工具直接使用现有凭证连接远程数据库,确认IP、端口、用户名、密码、数据库名完全匹配
  • 检查Bluehost是否使用非默认3306端口,部分主机可能自定义数据库端口

4. 排查本地网络限制

  • 确认本地防火墙未阻止3306端口的出站请求
  • 执行telnet <DB_HOST> 3306测试与远程数据库服务器的连通性,无报错则说明网络通路正常

内容的提问来源于stack exchange,提问作者Irshad Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 03:31:38