Где в laravel подключение к бд
Перейти к содержимому

Где в laravel подключение к бд

  • автор:

Настройка доступа к БД в Laravel

Настройки работы с БД хранятся в файле config/database.php . Здесь вы можете указать все используемые вами соединения к БД, а также задать соединение по умолчанию. Примеры настройки большинства поддерживаемых видов подключений находятся в этом же файле.

Laravel поддерживает различные движки базы данных: MySQL, Postgres, SQLite, SQL Server. Движок по умолчанию указан в следующей настройке:

env(‘DB_CONNECTION’, ‘mysql’), ?>

Скорее всего вы будете использовать движок 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 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)

хотя юзер и пароль указаны другие. В чем может быть дело?

5f71903a038af769828343.png

5f719044e5654528395761.png

  • Вопрос задан более трёх лет назад
  • 614 просмотров

7 комментариев

Простой 7 комментариев

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *