Korzystam z Mac OS Yosemite i Laravel 5.0.
W moim lokalnym środowisku biegam php artisan migrate
i otrzymuję:
Odmowa dostępu dla użytkownika „homestead” @ „localhost” (używając hasła: TAK)
Konfiguracja
Oto mój .env
APP_ENV=local
APP_DEBUG=true
APP_KEY=*****
DB_HOST=localhost
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
aplikacja \ config \ database.php
'mysql' => [
'driver' => 'mysql',
'host' => env('DB_HOST', 'localhost'),
'database' => env('DB_DATABASE', 'homestead'),
'username' => env('DB_USERNAME', 'homestead'),
'password' => env('DB_PASSWORD', 'secret'),
'unix_socket' => '/tmp/mysql.sock',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
'strict' => false,
]
Jak uniknąć tego rodzaju błędów?
Próbowałem :
1
w app / database.php
wymienić localhost
z127.0.0.1
'host'=> env('DB_HOST', 'localhost')
->'host' => env('DB_HOST', '127.0.0.1')
Również w .env
DB_HOST=localhost
-> DB_HOST=127.0.0.1
2
Spróbuj określić środowisko
php artisan migrate --env=local
3
Sprawdź, czy MySQL działa, uruchamiając
mysqladmin -u homestead -p status Enter password: secret
mam
Uptime: 21281 Threads: 3 Questions: 274 Slow queries: 0 Opens: 327 Flush tables: 1 Open tables: 80 Queries per second avg: 0.012
Co oznacza, że działa.
4
Sprawdź gniazdo MySQL UNIX ( ten krok działa dla mnie )
Odpowiedzi:
Przyczyną odmowy dostępu z powodu błędu laravel 5 użytkownika „homestead” @ „localhost” jest problem z buforowaniem pliku .env.php, ponieważ Laravel 5 używa konfiguracji opartej na środowisku w pliku .env.
1 . Przejdź do katalogu głównego aplikacji i otwórz plik .env (w Ubuntu może być ukryty, więc naciśnij ctrl+, haby wyświetlić ukryte pliki, a jeśli jesteś w terminalu, wpisz:
ls -a
aby wyświetlić ukryte pliki) w edytorze i zmień ustawienia konfiguracji bazy danych. następnie zapisz plik .env2 . następnie zrestartuj serwer Apache / serwer WWW. i odśwież stronę i gotowe
3 . Jeśli problem nadal występuje, spróbuj uruchomić poniższe polecenie, aby wyczyścić stary plik pamięci podręcznej konfiguracji.
Teraz skończyłeś z błędem
źródło
PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu'
._..env
iconfig:clear
cache:clear
wszystkie polecenia, wznowionaapache
, ale wciąż otrzymuję ten sam problem.TLDR: Musisz zatrzymać serwer Ctrl+ ci zacząć ponownie używać
php artisan serve
Detale:
Jeśli używasz Laravel i już uruchomiłeś lokalny serwer deweloperski do dnia
php artisan serve
A gdy powyższy serwer już działa, zmieniasz rzeczy związane z serwerem bazy danych w pliku .env. Jak przejście z MySQL do SQLite czy coś w tym stylu. Musisz się upewnić, że zatrzymałeś powyższy proces, tj.
Ctrcl C
Lub cokolwiek, co zatrzymuje proces. Następnie ponownie uruchom usługę Artisan Serve, tj.php artisan serve
Odśwież przeglądarkę, a problem związany z bazą danych zostanie naprawiony. To właśnie zadziałało w przypadku Laravel 5.3źródło
Dwa sposoby rozwiązania tego problemu
Pierwszy sposób (niezalecane)
Otwórz plik konfiguracyjny bazy danych (laravel_root / config / database.php) i wyszukaj poniższy blok kodu.
Zmień blok kodu jak poniżej
Drugi sposób (zalecane przez Laravel)
Sprawdź, czy w katalogu głównym Laravel jest plik o nazwie .env, jeśli nie istnieje, poszukaj pliku .env.example, skopiuj / zmień jego nazwę na .env, po czym plik wygląda na zepsuty!
Zmodyfikuj poniższy blok w następujący sposób
Teraz będzie działać dobrze.
źródło
root/config/database.php
wydaje się zbędna.jeśli używasz
php artisan migrate
NIE z vagrant box, ale z komputera hosta, musisz zdefiniować wewnątrz.env
adresu IP pudełka192.168.10.10
i oczywiście ustaw pozwolenie na zawłaszczenie użytkownika ze swojego adresu IP, na przykład
w
.env
plikuźródło
grant all privileges on *.* to 'homestead'@'localhost' identified by 'secret';
pracował dla mnie.Jeśli używasz domyślnego serwera WWW PHP (np.
php artisan serve
), Musisz zrestartować serwer po zmianie wartości w pliku .env.źródło
sprawdź ten wątek na laracastach lub ten wpis na blogu, aby uzyskać więcej informacji
jeśli dostajesz
spróbuj zmienić „host” w pliku /app/config/database.php z „localhost” na „127.0.0.1”. więcej szczegółów i innych poprawek można znaleźć w tym wątku .
Sprawdź również, czy podałeś poprawną
unix_socket
. sprawdź ten wątek .źródło
Sprawdź gniazdo MySQL UNIX
Znajdź lokalizację unix_socket za pomocą MySQL
mysql -u homestead -p
Następnie przechodzę do config / database.php
Aktualizuję tę linię:
'unix_socket' => '/tmp/mysql.sock',
do :
'unix_socket' => '/var/run/mysqld/mysqld.sock',
Otóż to. To działa w mojej czwartej próbie. Mam nadzieję, że te kroki komuś pomogą. :RE
źródło
Miałem ten sam problem i ostatecznie okazało się, że muszę tylko zrestartować serwer i zacząć od nowa
Ctrl+ cwtedy
źródło
Na komputerze z systemem Windows Postępuj zgodnie z poniższymi instrukcjami.
Uzyskaj dostęp do folderu głównego aplikacji.
Edytuj plik .env
Edytuj podświetlony i zmień odpowiednio nazwę użytkownika i hasło oraz nazwę bazy danych.
źródło
w moim przypadku po ponownym uruchomieniu serwera problem zniknął.
zakończ / zamknij polecenie "php artisan serv" i
uruchom ponownie polecenie „php artisan serv” .
źródło
Kiedyś w przyszłości. Spróbuj najpierw wyczyścić konfigurację
Zamknij wszystkie okna terminala / cmd, a następnie uruchom ponownie terminal / CMD, co powinno pozbyć się komunikatu o błędzie. Sprawdź, czy to działa.
źródło
po konfiguracji db zrestartuj:
Jeśli serwis jest aktywny przed ustawieniem db config.
źródło
Używam laravel 5. * i myślę, że mam wywołanie pliku
.env
w katalogu głównym projektu, które wygląda mniej więcej tak:I to był koniec pisania konfiguracji bd, więc możesz usunąć te zmienne konfiguracyjne, więc laravel weźmie konfigurację w / config lub skonfiguruj ją tutaj.
Zrobiłem drugie i u mnie działa :)
źródło
Rozumiem! Zaloguj się jako root i przyznaj homestead @ localhost prawa do wszystkiego.
Z Twojego terminala:
Teraz zwykły użytkownik homesteads ma dostęp do wszystkich twoich tabel i jako taki powinien być w stanie uruchamiać takie rzeczy jak migracje.
źródło
Po zmianie .env na nową konfigurację, musisz zatrzymać serwer i uruchomić go ponownie (serwis php artisan). Ponieważ laravel pobiera środowisko po zainicjowaniu serwera. Jeśli nie zrestartujesz, zmienisz plik .env, zadając sobie pytanie, dlaczego zmiany nie mają miejsca !!
źródło
Wszystko, co musisz zrobić, to zmienić plik .env .
Przed DB_DATABASE wpisz nazwę bazy danych, a przed DB_USERNAME użyj root .
źródło
Chciałem to opublikować, ponieważ ten problem denerwował mnie dzisiaj przez około 3 godziny. Nie wypróbowałem żadnej z metod wymienionych w innych odpowiedziach, chociaż wszystkie wydają się rozsądne. Właściwie to właśnie miałem spróbować przejść przez każde z zaproponowanych powyżej rozwiązań, ale jakimś cudem dostałem tę inspirację. Oto, co zadziałało, aby przywrócić mi pracę - YMMV:
1) Znajdź swój plik .env. 2) Zmień nazwę pliku .env na inną. Laravel 5 musi używać tego pliku jako nadpisania ustawień w innym miejscu we frameworku. Zmieniłem nazwę mojej na .env.old 3) Być może trzeba będzie zrestartować serwer WWW, ale nie musiałem.
Powodzenia!
źródło
Musisz uruchomić
$ php artisan migrate
polecenie z poziomu Homestead, a nie komputera Mac.źródło
MBP-bheng-aveniors
. To nie jest twoja maszyna wirtualna. Musisz$ homestead ssh
uruchomić SSH w Homestead ( ), a następnie uruchomić$ php artisan migrate
z tej sesji SSH.Sprawdź plik „ .env ” w folderze głównym. czy to jest poprawne?
źródło
znalazłem rozwiązanie
Przejdź do katalogu głównego aplikacji i otwórz plik .env (w Ubuntu może być ukryty, więc naciśnij ctrl + h, aby wyświetlić ukryte pliki) w edytorze i zmień ustawienia konfiguracji bazy danych. następnie zapisz plik .env
następnie zrestartuj serwer Apache / serwer WWW. i odśwież stronę i gotowe
To zadziałało dla mnie gl ...
źródło
po prostu zmień te rzeczy w pliku .env folderu głównego.
U mnie to zadziałało.
źródło
w moim przypadku (laravel 5+) musiałem zawinąć hasło w pojedyncze cudzysłowy i wyczyścić pamięć podręczną konfiguracji:
a następnie uruchom:
źródło
Zaloguj się do MYSQL - skorzystaj z bazy danych mysql.
Wybierz * od użytkownika;
Upewnij się, że kolumna HOST jest poprawna. Powinien to być host, z którego się łączysz (serwer aplikacji), czy to adres IP, czy nazwa DNS. Również „%” będzie działać (co oznacza symbol wieloznaczny), ale nie będzie bezpieczne.
źródło
Sprawdź swój plik .env, jeśli edytowałeś którąkolwiek ze zmiennych, uprzejmie zrestartuj serwer laravel, a problem zostanie rozwiązany
źródło
A. Po zaktualizowaniu pliku .env z ustawieniami bazy danych, wyczyść ustawienia larw przez „uruchomienie php artisan config: clear”
B. Upewnij się, że zrestartowałeś serwer Apache / uruchom ponownie polecenie "php artisan serv", aby ustawienia odniosły skutek.
źródło
Miałem ten sam problem, używając SQLite. Mój problem polegał na tym, że DB_DATABASE wskazywało niewłaściwą lokalizację pliku.
Utwórz plik sqlite za pomocą polecenia touch i wyślij ścieżkę do pliku za pomocą php artisan tinker.
Następnie wyprowadź dokładną ścieżkę do zmiennej DB_DATABASE.
Bez poprawnej ścieżki pojawi się błąd odmowy dostępu
źródło
Jeśli masz błąd zwracania czegoś takiego, jak
PDOException in Connector.php line 55: SQLSTATE[HY000] [1049] Unknown database 'laravelu'
jest to spowodowane zmianą konfiguracji batabase jakoDB_DATABASE=laravelu
. Na razie więc:DB_DATABASE=
[yourdatabase]
laravelu
phpmyadminto powinno być w stanie go rozwiązać
źródło
W moim przypadku błąd był "spowodowany" moją konfiguracją Homestead / Vagrant, o której zapomniałem :) próbując uruchomić migrację tylko z linii poleceń.
W przypadku korzystania ze środowiska Homestead Vagrant Box należy przeprowadzić migrację z komputera Homestead (po połączeniu się z nim za pomocą ssh:),
[email protected]:22
wtedy prawa dostępu będą OK i umożliwią migrację.źródło
Z twojego pytania wynika, że prowadzisz domostwo. W takim przypadku upewnij się, że uruchamiasz polecenia na swojej maszynie wirtualnej. Wielu programistów, w tym ja, często popełnia błąd i wykonuje polecenia rzemieślnicze poza maszyną wirtualną, które będą próbowały połączyć się z naszą lokalną bazą danych dostępną za pośrednictwem hosta lokalnego, który różni się od bazy danych używanej przez homestead. Cd do katalogu Homestead i uruchom
następnie wykonaj cd do kodu, jeśli to tam trzymasz swoje projekty i CD do swojego projektu i uruchom.
php artisan migrate again
Mam nadzieję, że to pomoże innym ludziom.źródło