Laravel SQL ошибка соединения через Интернет, работает в ремесленнике - PullRequest
0 голосов
/ 28 июня 2018

При попытке получить доступ к моему веб-сайту Laravel я получаю сообщение об отказе в соединении SQL при попытке выполнить $candidate = App\Models\Candidate::find(400);

SQLSTATE[HY000] [1698] Access denied for user 'root'@'localhost' (SQL: select * from `candidates` where `candidates`.`candid` = 400 limit 1)

Однако, я могу нормально подключиться, используя php artisan tinker из командной строки:

root@454ab4403b8f:/app# php artisan tinker
Psy Shell v0.9.6 (PHP 7.2.7-1+ubuntu18.04.1+deb.sury.org+1 — cli) by Justin Hileman
>>> App\Models\Candidate::find(400)
=> App\Models\Candidate {#2865
     candid: 400,
     firstname: "",
     ...
   }

Есть ли другая конфигурация для ремесленника, чем веб? Почему один работает, а другой нет?

1 Ответ

0 голосов
/ 28 июня 2018

Учетная запись ROOT в базе данных MySQL обычно блокируется для входа в систему, который не является консольным. Artisan - консоль, и ваш пользователь узнается.

Просто сделайте в своей базе данных выделенную базу данных и пользователя базы данных для ваших целей разработки.

И никогда не используйте root для веб-приложений. Всегда делайте выделенного пользователя для баз данных и тому подобного. Root обладает слишком большой мощностью, и некоторые ошибки, которые могут появиться у обычного пользователя, не будут появляться под root, что может привести к непредвиденным ошибкам при переходе в рабочую среду. В вашей местной среде вы хотите имитировать производство как можно ближе со всеми теми же ограничениями.

Кроме того, если ваш веб-сайт окажется слабым, и на производстве вы также будете использовать ROOT в качестве пользователя базы данных, то, если хакер обнаружит слабость, он сможет прочитать / изменить / стереть все данные во всех ваших базах данных и, возможно, иметь доступ к вашей файловой системе и собирать другие файлы таким образом. Просто никогда не используйте root, кроме как для настройки базы данных.

...