PHP artisan возвращает отказ в доступе к базе данных в Laravel - PullRequest
2 голосов
/ 30 июня 2019

Я перенес проект Laravel на основе перемещения проекта Laravel между компьютерами
Все было хорошо с первого взгляда. Я мог установить компоновщик без каких-либо проблем, затем я установил свои переменные среды в моем .env, такие как имя базы данных, пользователь базы данных и т. Д.


Когда я начал использовать следующую команду,

php artisan cache: clear

Я получил эти две ошибки,

В строке Connection.php 664:
SQLSTATE [HY000] [1045] Доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: Да) (SQL: выберите * из information_schema.tables, где tabale_schema = *** и table_name = ****)

В строке Connector.php 67:
SQLSTATE [HY000] [1045] Доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: Да)

Дополнительная информация:

  1. Похоже, что .env не был прочитан приложением, потому что, когда я просматриваю домашнюю страницу приложения, я получаю ошибку Whoops, которая показывает, что переменная среды пуста. empty var
  2. Я проверил соединение с базой данных, такое как имя пользователя, пароль и другие параметры, я знаю, что они работают правильно.

В конце я приложил фотографию, чтобы уточнить этот вопрос. issue

  1. Интересно, что в моем файле .env значение DB_DATABASE равно "nlp", а DB_USERNAME равно "Javad", но, как вы можете видеть из ошибок, они не работают, и Artisan принимает рут как пользователь!

Ответы [ 3 ]

0 голосов
/ 01 июля 2019

Я думаю, что файлы конфигурации не доступны для записи пользователю apache, учитывая, что вы используете apache.Убедитесь, что вы дали разрешение на запись для начальной загрузки / кэша для пользователя.Этот каталог содержит кэшированные файлы конфигурации. Если это так, поздравления будут загружены отсюда и ваша ранее использованная конфигурация будет загружена, что может быть причиной проблемы.

Также вам нужно дать разрешение на запись и в каталог хранилища.Поскольку есть файл журнала, и пользователю apache тоже нужно написать об этом.

0 голосов
/ 01 июля 2019

Откройте файл .env и отредактируйте его. Просто установите правильные учетные данные БД:

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=            // Your Database Name
DB_USERNAME=           // Your Database Username, If no username has been set then by default there is a root as a username
DB_PASSWORD=          // Your Database Password, If no password is set on the database, clear it  

После завершения редактирования .env введите эту команду в своем терминале для очистки кэша:

php artisan config:cache

Если ошибка сохраняется, попробуйте другое возможное решение.

У меня тоже была такая же проблема, я попробовал все возможные ответы в StackOverflow, но ничто не могло мне помочь, это решение сработало с первой попытки:

Если вы используете веб-сервер PHP по умолчанию (например, php artisan serve), вам необходимо перезагрузить сервер после изменения значений файла .env.

Я нашел это решение отсюда laravel.io (Прочтите решение Byjml)

0 голосов
/ 01 июля 2019

После перемещения проекта Laravel в другое место, первое, что вам нужно сделать, это восстановить APP_KEY в файле .env, выполнив команду из корневого каталога вашего приложения:

php artisan key:generate

После этого вы перенастраиваете свой кеш:

php artisan config:cache

Кроме того, убедитесь, что все параметры вашей базы данных в вашем файле .env и config/database.php правильные и совпадают с вашими предыдущими настройками Laravel - вы можете изменить их вручную, а затем перенастроить кэш, как показано выше. Если нет (например, имя базы данных изменено), вам, возможно, придется повторно запустить перенастройку базы данных и ее отправителей снова:

php artisan migrate

и

php artisan db:seed
...