Ошибка доступа к БД после обновления до laravel 5.8

Я обновляю laravel до 5.8 с 5.3, используя laravelshift шаг за шагом и проверяя каждое обновление, например

  • Обновление до 5.4, проверено
  • Обновление до 5.5, проверено...
  • Обновление до 5.8, проверено

но когда я развертываю его на сервере, Linode Server с настройкой Cpanel, и я выбираю php7.2 в Mutiphp Manager для этого веб-сайта.

Теперь это отлично работает в локальной среде в усадьбе, но в реальном времени я получаю ошибку db «Доступ запрещен для пользователя« усадьба »@« локальный хост »(с использованием пароля: ДА)».

Я также пытался подключиться к БД с помощью инструмента командной строки mysql, и он работает с тем же паролем. Я также изменил пароль в cpanel и попробовал с новым паролем. ничего не работает.


person Sohail    schedule 01.04.2019    source источник


Ответы (4)


Несмотря на то, что OP нашел решение, используя пароль без специальных символов, настоящая причина этой проблемы заключается в том, что Laravel 5.8 использует новый пакет phpdotenv, который обрабатывает символ # как начало комментария.

Из руководства по обновлению Laravel 5.8.

символ # в значении без кавычек теперь будет считаться комментарием, а не частью значения.

Чтобы сохранить предыдущее поведение, вы можете заключить значения окружения в кавычки:

person chanafdo    schedule 04.05.2019

Изменение пароля на что-то более простое, например, только цифры и числовые символы, никаких специальных символов, таких как # или ( и т. д., у меня не сработало.

Сложный пароль, который включает специальные символы, работал у меня с помощью инструмента mysql в командной строке, но вызывал ошибку, когда я запускал php artisan install или запускал свой код в браузере http://my-project.dev

person Sohail    schedule 03.04.2019
comment
+1 Это самый правильный ответ. # char создает проблему с 5.8, это также можно исправить, заключить пароль из двойной кавычки DB_PASSWORD="xxxx#" - person Girish; 29.08.2019

у вас может не быть базы данных с именем homestead на вашем сервере. Сначала создайте базу данных, а затем попробуйте подключиться.

person Hasan    schedule 01.04.2019
comment
Нет, имя базы данных, имя пользователя и пароль верны. Я подключился с помощью инструмента командной строки mysql, и он работает. - person Sohail; 02.04.2019

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

Посмотрите здесь: https://superuser.com/questions/603026/mysql-how-to-fix-access-denied-for-user-rootlocalhost

person Paladin    schedule 03.04.2019