【问题标题】:Connection refused - Laravel, remote database连接被拒绝 - Laravel,远程数据库
【发布时间】:2022-03-21 19:06:09
【问题描述】:

在我的本地环境中,将数据插入我的数据库是可行的。但是在我的远程服务器上它不起作用。

我已经更改了我的远程 .env 和 database.php 文件,以便我的远程数据库和服务器可以正常工作。我可以通过mysqlworkbench 连接到数据库,没有任何问题。

但是我收到以下错误:

异常:“Illuminate\Database\QueryException” 文件:“/var/www/html/go/releases/1/vendor/laravel/framework/src/Illuminate/Database/Connection.php” 线路:664 消息:“SQLSTATE[HY000] [2002] 连接被拒绝(SQL:插入temp_usersenergydietcarshortFlightslongFlightslongFlightscountry,@ 987654331@, updated_at, created_at) 值 (1.13, 1.7, 0.55, 0, 0, test51@mail.com, 荷兰, 5.38, 2019-09-10 15:27:41, 2019-09-10 15 :27:41))” 追踪:[,…]

.env(用默认值替换了一些值,以保护隐私)。

APP_NAME=thename
APP_ENV=production
APP_KEY=the key
APP_DEBUG=true
APP_LOG_LEVEL=error
APP_URL=theurl

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=thedatabasename
DB_USERNAME=theusername
DB_PASSWORD=thepassword

BROADCAST_DRIVER=log
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=localhost
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=mt1

MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

database.php(重要部分)

'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', 'localhost'),
        'port' => env('DB_PORT', '3306'),
        'database' => env('DB_DATABASE', 'thedatabasename'),
        'username' => env('DB_USERNAME', 'theusername'),
        'password' => env('DB_PASSWORD', 'thepassword'),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
    ],

数据库名称正确。该表存在,所有字段也存在。提前致谢。

【问题讨论】:

  • 将 DB_HOST 更改为您的远程服务器 IP 而不是 localhost
  • @PalakJadav 当我将DB_HOST 都更改为我的 ip 时,我仍然遇到同样的问题。
  • 运行命令 php artisan config:clear
  • 它告诉我Could not open input file: artisan。我也从未使用 php artisan 进行本地开发。

标签: mysql database laravel


【解决方案1】:

正如@PalakJadav 正确指出的那样,您的remote .env 文件中的DB_HOST 应更改为远程数据库服务器的远程IP 或主机名。还要与您的数据库服务提供商核实其他参数是否正确。

更改.env 文件后,通过安全外壳进入远程服务器。从你的远程服务器根目录,运行php artisan 命令重新加载你的 laravel 配置

 php artisan config:cache

清除旧的缓存配置

 php artisan config:clear

最后,清空你的应用缓存

 php artisan cache:clear

您现在可以重试 mysql 查询。

更新

还记得在首次将应用程序上线时迁移表

php artisan migrate

【讨论】:

  • 好的,但是为什么我需要重置我的本地缓存?这会影响我的远程服务器吗?只是问,因为问题从来都不是本地的,只是在远程服务器上。不知何故,与数据库的连接被拒绝,我确实改变了我的DB_HOST,但它没有改变任何东西。所有登录详细信息等都是正确的,应该可以正常工作。提前致谢。在我的远程服务器上使用 Nginx。
  • 您的旧配置已被缓存。因此,在对.env 文件应用正确的更改后,仍会使用缓存的配置。您不是在重置本地缓存,而是在重新加载它以反映您在 .env 文件中所做的更改
  • 好有趣,但是如果我手动替换了我的远程 .env 文件,它仍然使用缓存吗?
  • 我清除了缓存并将其部署到我的服务器。但是它给了我同样的错误。
  • 哦!我认为您只是连接到远程数据库提供程序。如果您也远程托管文件,这与本地服务器无关。更新您的远程 .env 文件,如果您可以 ssh 进入远程服务器,请清除那里的缓存。抱歉,我没有清楚地了解您的问题。
【解决方案2】:

我面临的问题是我的mysql user 没有正确的权限。

最后我将其更改为使用root 登录到mysql --> 这就是我发现user 上缺少权限的方法。

确保将GRANT ALL ON laravel_database.* TO 'laravel_user'@'localhost'; 设置为您登录时使用的用户。

拼写非常重要!!!因为我只有一个错字,这让我很沮丧。

【讨论】:

    【解决方案3】:

    这是因为您无法远程访问远程数据库,因此请打开您的终端并运行这些命令。

    sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
    
    . . .
    bind-address            = 127.0.0.1
    . . .
    

    默认情况下,此值设置为 127.0.0.1,这意味着服务器将仅查找本地连接。您需要更改此指令以引用外部 IP 地址。出于故障排除的目的,您可以将此指令设置为通配符 IP 地址,*、:: 或 0.0.0.0:

    更新您的 . . . 绑定地址 = 0.0.0.0 . . . 跑 sudo systemctl 重启 mysql 那么

    mysql -u username -p
    RENAME USER 'sammy'@'localhost' TO 'sammy'@'remote_server_ip';
    CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED BY 'password';
    GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'sammy'@'remote_server_ip' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    exit
    sudo ufw allow from remote_IP_address to any port 3306
    sudo ufw allow 3306
    

    这会解决你的问题。

    【讨论】:

      猜你喜欢
      • 2017-10-03
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-12
      • 1970-01-01
      • 2013-08-02
      相关资源
      最近更新 更多