Mysql
 sql >> Baza danych >  >> RDS >> Mysql

lavaral 5 ERROR{ (SQLSTATE[HY000] [1045] Odmowa dostępu dla użytkownika 'root'@'localhost' (przy użyciu hasła:YES)}

Domyślnie laravel zakłada, że ​​będziesz chciał mieć różne konfiguracje dla różnych środowisk. Np. w środowisku testowym możesz chcieć mieć inną nazwę użytkownika i hasło, a w środowisku produkcyjnym inne. Ponieważ laravel ma tak wiele plików konfiguracyjnych, zarządzanie nimi szybko staje się koszmarem. Dlatego laravel korzysta ze zmiennych środowiskowych PHP.

Zobacz dokumentację tutaj.

Zasadniczo mówi się, że jeśli chcesz użyć zmiennych "środowiskowych", których domyślnie używa laravel, musisz umieścić wszystkie swoje konfiguracje w env() jak już wspomniano.

Jeśli nie chcesz tego robić, np. w przypadku prostych projektów po prostu usuń env z kodu, w ten sposób.

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

Pamiętaj, że możesz mieszać i dopasowywać. tzn. możesz mieć niektóre zmienne w env, a niektóre samodzielne.

Dlaczego więc używać env w ogóle?

Załóżmy, że Twoja aplikacja ma 100 testerów rozmieszczonych w różnych lokalizacjach. W laravelu musisz zakodować około 8-10 plików konfiguracyjnych. Musisz także version-control te pliki. Masz więc dwa problemy:

  1. Nie chcesz wysyłać wszystkim 100 użytkownikom tych samych danych uwierzytelniających. Mogą również używać innej bazy danych, serwera pamięci podręcznej itp., co oznacza, że ​​będą miały różne konfiguracje. Więc każdy użytkownik musi ręcznie utrzymywać te 8-10 plików konfiguracyjnych.
  2. Nie chcesz wysyłać tych plików konfiguracyjnych do kontroli wersji. Bo jeśli to zrobisz, cały świat pozna Twoje sekrety API i prawdopodobnie skorzysta z tego (podobnie jak hasło). Jeśli spojrzysz na pliki konfiguracyjne laravel, zauważysz, że są też inne informacje, takie jak strefa czasowa, właściwość debugowania itp., które również znajdują się w plikach konfiguracyjnych i chcesz je kontrolować. Jak więc kontrolować wersje takich plików konfiguracyjnych i nadal ukrywać poufne informacje.

Odpowiedź to env zmienne. Laravel używa dotenv którego dokumentację można znaleźć tutaj . Zasadniczo są to zmienne, które znajdują się w jednym pliku o nazwie .env w parze klucz-wartość. Np.

Przykładowa zawartość pliku .env

APP_DEBUG=false
APP_KEY=ABCDEFGH
...

Po zdefiniowaniu pliku .env w ten sposób, możesz uzyskać wartość za pomocą klucza, takiego jak env('APP_DEBUG') .

Rozwiązuje to powyższy problem w następujący sposób:

  1. zachowujesz plik .env złożyć do siebie. Deklarujesz również inny plik o nazwie .env.example który jest dokładną repliką oryginalnego pliku, z wyjątkiem tego, że zawiera wartości przykładowe, a nie wartości wrażliwe. Następnie przekazujesz wszystkim ten nowy przykładowy plik. Zastąpią przykładowe dane własnymi poufnymi informacjami.
  2. Ponieważ kontrolujesz wersję przykładowego pliku, możesz kontrolować wersję wszystkich swoich plików konfiguracyjnych, ponieważ nie zawierają one klucza tajnego. Sekret znajduje się w plikach .env. Wszystkie te pliki konfiguracyjne zawierają wartości takie jak te env('APP_KEY') a rzeczywista wartość jest zastępowana w czasie wykonywania przy użyciu pliku .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. Limit SQL WYBIERZ, ale nie JOIN

  2. Kalendarz PHP z powtarzającymi się wydarzeniami z bazy danych MySQL

  3. Xampp MySQL nie uruchamia się — próba uruchomienia usługi MySQL...

  4. Jak naprawić serializowany ciąg, który został uszkodzony przez nieprawidłową długość licznika bajtów?

  5. Jakie są zalety i wady przechowywania plików w bazie danych?