Mysql
 sql >> база данни >  >> RDS >> Mysql

lavaral 5 ГРЕШКА{ (SQLSTATE[HY000] [1045] Достъпът е отказан за потребител 'root'@'localhost' (използвайки парола:ДА)}

По подразбиране laravel предполага, че ще искате да имате различни конфигурации за различни среди. напр. в среда за тестване може да искате да имате различно потребителско име и парола, а в производствена среда различна. Тъй като laravel има толкова много конфигурационни файлове, бързо се превръща в кошмар да управлявате всички тях. Следователно laravel използва променливите на средата на PHP.

Вижте документите тук.

Това, което основно се казва, е, че ако искате да използвате променливите "среда", които laravel използва по подразбиране, трябва да поставите всичките си конфигурации в env() метод, както вече беше споменато.

Ако не желаете да направите това, напр. за прости проекти, просто премахнете env от вашия код, както следва.

'mysql' => [
        'driver'    => 'mysql',
        'host'      => 'localhost',
        'database'  => 'laravel',
        'username'  => 'root',
        'password'  => 'password',
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
    ],

Имайте предвид, че можете да смесвате и съчетавате. т.е. можете да имате някои от променливите в env и някои самостоятелни.

Така че защо да използвате env изобщо?

Да приемем, че приложението ви има 100 тестера, всички поставени на различни места. В laravel трябва да кодирате приблизително 8-10 конфигурационни файла. Също така трябва да version-control тези файлове. Така че имате два проблема:

  1. Не искате да изпращате на всички 100 потребители едни и същи идентификационни данни. Също така те могат да използват различна база данни, кеш сървър и т.н., което означава, че ще имат различни конфигурации. Така че всеки потребител трябва да поддържа тези 8-10 конфигурационни файла на ръка.
  2. Не искате да изпращате тези конфигурационни файлове към контрола на версиите. Защото ако го направите, целият свят ще знае вашите тайни на API и вероятно ще се възползва от това (точно като парола). Също така, ако погледнете conf файловете на laravel, ще забележите, че има и друга информация като часова зона, свойство за отстраняване на грешки и т.н., които също са в conf файлове, и вие искате да ги контролирате с версията. И така, как да контролирате версиите на такива конфигурационни файлове и да скриете чувствителната си информация.

Отговорът е env променливи. Laravel използва dotenv чиято документация може да бъде намерена тук . По принцип това са променливи, които живеят в един файл, наречен .env в двойка ключ-стойност. Напр.

Примерно съдържание на .env файл

APP_DEBUG=false
APP_KEY=ABCDEFGH
...

След като дефинирате своя .env файл като този, можете да получите стойността с помощта на ключа като такъв env('APP_DEBUG') .

Така че това решава гореспоменатия проблем по следните начини:

  1. запазвате .env файл за себе си. И също така декларирате друг файл, наречен .env.example което е точно копие на оригиналния файл, с изключение на факта, че съдържа примерни стойности, а не вашите чувствителни стойности. След това предавате този нов примерен файл на всички. Те ще заменят примерните данни със собствена чувствителна информация.
  2. Тъй като контролирате версията на примерния файл, можете да контролирате версията на всичките си conf файлове, тъй като те не съдържат тайната. Тайната е в .env файловете. Всички тези conf файлове съдържат стойности като тези env('APP_KEY') и действителната стойност се заменя по време на изпълнение с помощта на вашия .env файл.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django migrate :не създава таблици

  2. Най-добри практики за дължина на колоната на SQL varchar

  3. Защо функцията 'insert' не добавя редове с помощта на MySQLdb?

  4. Изображения в MySQL

  5. PDO + MySQL винаги връща низове, но какво да кажем за MsSQL?