MAMP Pro OSX上的Laravel远程数据库连接问题

问题描述 投票:0回答:1

我在Laravel上已有一个项目。我想与远程数据库服务器建立连接,以便我们的团队可以使用相同的数据集进行测试。

。ENV文件

APP_NAME=Laravel
APP_ENV=live
APP_KEY=base64:FE9rhqH/+5UHVJCfoYS6xHNsU9U1DJaPkUDmRSv6JxI=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://laravel.test/

DB_CONNECTION=mysql
DB_HOST=104.1XX.XX.XX
DB_PORT=3306
DB_DATABASE=My_db_name
DB_USERNAME=db_username
DB_PASSWORD=db_password
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

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

REDIS_HOST=127.0.0.1
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=

database.php

'mysql' => [
        'driver' => 'mysql',
        'host' => env('DB_HOST', '104.1XX.XX.XX'),
        'port' => env('DB_PORT', ''),
        'database' => env('DB_DATABASE', 'My_db_name'),
        'username' => env('DB_USERNAME', 'db_usernamel'),
        'password' => env('DB_PASSWORD', 'db_password'),
        'unix_socket' => env('DB_SOCKET', '/Applications/MAMP/tmp/mysql/mysql.sock'),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'strict' => true,
        'engine' => null,
    ],

错误显示它正在尝试连接到本地主机

Illuminate\Database\QueryException thrown with message "SQLSTATE[HY000] [1045] Access denied for user 'db_username'@'localhost' (using password: YES) (SQL: select `users`.* from `followers` inner join `users` on `followers`.`follower_id` = `users`.`id` inner join `countries` on `users`.`country_id` = `countries`.`id` where (`followers`.`user_id` is null))"

预期的行为:应该连接到远程数据库

/Applications/MAMP/Library/bin/mysql -u db_username -h 104.1XX.XX.XX -p

可以在终端中使用上述字符串进行连接

Laravel Framework 5.8.37

PHP 7.3.11 (cli)

Mamp Pro - 5.7

任何帮助将不胜感激。

php mysql laravel macos mamp
1个回答
0
投票

根据您的错误,这不是Laravel项目的问题。它是您数据库的问题。您不能在部署数据库的服务器之外访问数据库。

可能的问题如下:

1. Database user configured to access only for localhost and not outside

2. Proper database credentials

对于1,您可以使用以下选项

% -> stands for anywhere

基本上,根据下面的内容,您将授予用户USERNAME所有的访问权限,使其可以从世界任何地方访问

GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION; 
FLUSH PRIVILEGES;

此外,请确保执行以下操作

更改bind-address在文件/ etc / mysql / mysql.conf.d / mysqld.conf

基本上它将是127.0.0.1,或者您的服务器IP地址将其更改为0.0.0.0

希望它对您有用。干杯。

© www.soinside.com 2019 - 2024. All rights reserved.