Настройка доступа к БД в Laravel
Настройки работы с БД хранятся в файле config/database.php . Здесь вы можете указать все используемые вами соединения к БД, а также задать соединение по умолчанию. Примеры настройки большинства поддерживаемых видов подключений находятся в этом же файле.
Laravel поддерживает различные движки базы данных: MySQL, Postgres, SQLite, SQL Server. Движок по умолчанию указан в следующей настройке:
env(‘DB_CONNECTION’, ‘mysql’), ?>?php>
Скорее всего вы будете использовать движок mysql , поэтому нужно настроить доступы к вашей базе именно для этого движка.
Для этого в подмассиве connections найдите подмассив mysql и введите там доступы к вашей базе:
[ ‘driver’ => ‘mysql’, ‘host’ => env(‘DB_HOST’, ‘127.0.0.1’), ‘port’ => env(‘DB_PORT’, ‘3306’), ‘database’ => env(‘DB_DATABASE’, ‘test’), // ! ‘username’ => env(‘DB_USERNAME’, ‘root’), // ! ‘password’ => env(‘DB_PASSWORD’, ‘root’), // ! ‘unix_socket’ => env(‘DB_SOCKET’, »), ‘charset’ => ‘utf8mb4’, ‘collation’ => ‘utf8mb4_unicode_ci’, ‘prefix’ => », ‘strict’ => true, ‘engine’ => null, ], ?>?php>
После этого перезапустите проект с помощью команды:
php artisan serve
Создайте базу данных через PMA (PhpMyAdmin). Пропишите ее в конфигурации Laravel.
Возможные проблемы
Не факт, что после этого Laravel сможет подключиться к базе. Дело в том, что файл с настройками кешируется и это может привести к проблемам, которые будут выражаться в ошибке Access denied for user ‘homestead’@’localhost’ при попытке подключится к БД.
Решение проблемы описано тут: stackoverflow.com.
Подключение к базе данных в Laravel
В Laravel настройки доступа к базе данных хранятся в файле config/database.php . В этом файле можно найти уже существующие примеры подключений к большинству поддерживаемых баз: MySQL, Postgres, SQLite, SQL Server. Сам тип сервера указывается в строке:
'default' => env('DB_CONNECTION', 'mysql'),
Чтобы настроить соединение с этой базой данных найдите соответствующий массив в файле конфигураций и измените параметры доступа (порт и хост, он же ip адрес сервера):
[ 'driver' => 'mysql', 'host' => env('DB_HOST', '127.0.0.1'), // ip адрес сервера БД 'port' => env('DB_PORT', '3306'), // порт, для MySQL по умолчанию 3306 'database' => env('DB_DATABASE', 'имя_базы'), 'username' => env('DB_USERNAME', 'имя_пользователя'), 'password' => env('DB_PASSWORD', 'пароль'), 'unix_socket' => env('DB_SOCKET', ''), 'charset' => 'utf8mb4', 'collation' => 'utf8mb4_unicode_ci', 'prefix' => '', 'strict' => true, 'engine' => null, ], ?>
Для некоторых видов установок в Laravel используется файл «.env.php», в котором хранятся данные для соединения с базой. Поэтому обязательно поменяйте в нём данные на актуальные. Иначе во время подключения можнт появиться ошибка «Access denied for user ‘homestead’@’localhost’«. Чтобы исправить проблему, можно попробовать перезапустить сервис веб сервера и выполнить команду для очистки кеша php artisan config:clear
Динамическое подключение к бд Laravel
Я пытаюсь реализовать через middleware динамическое соединение с бд. (добавлю: будет существовать около 200 подключений к бд. Каждое подключение, может быть, отдельным сервером. Структура бд будет одна и та же, будут меняться сами данные) Успешно приходят данные, я заменяю их в config(‘database.connections.name)
Возникает ошибка:
Как я выяснил эта ошибка возникает из-за удалении сессии. Уходит запрос на удаление сессии в бд, имея при этом старое подключение
Переменная $this — имеет старое подключение, но если я запрашиваю модель, она берется из нового подключения. Если я в middleware убираю DB::purge(‘tr_archive’); Тогда запрос уходит, авторизация прошла успешно. Но сессия не сохраняется в базе данных, и на следующий запрос возвращается 401, необходимо авторизоваться Так же пытался добавить новое подключение к бд и к session.connection, ошибка та же, что и на втором скриншоте 
Отслеживать
задан 28 апр 2022 в 16:10
1 3 3 бронзовых знака
Так инициируйте другое подключение, зачем пытаться соединять два в одно?
28 апр 2022 в 17:09
@Николай, разве есть разница? На первом скриншоте, делал «dynamic_connection», результат тот же
28 апр 2022 в 17:28
@Николай, так же пытался изменить соединение для сессии. Все равно не помогло
28 апр 2022 в 17:37
Я подразумевал создание и использование другого объекта, а не наследование у первого
28 апр 2022 в 17:53
@Николай, сейчас не совсем понимаю о чем речь, можно, пожалуйста, подробнее. Создать новый объект SessionManager?
Как настроить подключение к базе данных laravel 8?
Установил laravel 8 для экспериментов. Не могу настроить подключение к базе данных. При попытке запустить миграции php artisan migrate , ловлю ошибку (скрин). В файле .env прописана база данных, юзер и пароль. Такая база и юзер с таким паролем есть. Кэш чистил, конфиг чистил. Но вот странно что оно там всегда пишет
Access denied for user 'root'@'localhost' (using password: NO)
хотя юзер и пароль указаны другие. В чем может быть дело?


- Вопрос задан более трёх лет назад
- 614 просмотров
7 комментариев
Простой 7 комментариев