Laravel проблема удаленного подключения к БД в MAMP Pro OSX - PullRequest
0 голосов
/ 26 марта 2020

У меня есть проект на Laravel. Я хочу установить соединение с удаленным сервером БД, чтобы наша команда могла тестировать с одним и тем же набором данных.

.ENV File

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,
    ],

Ошибка показывает, что он пытается подключиться к localhost

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

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 26 марта 2020

По вашей ошибке это не проблема проекта 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

Надеюсь, это работает для вас. Приветствия.

...