Błąd odmowy dostępu MySQL

9

Mam wspólny problem, ale zwykłe rozwiązania nie działają, więc przepraszam za to, co przy pierwszym pojawieniu się może wydawać się wcześniej zadanym pytaniem.

Występuje następujący błąd podczas próby wyświetlenia mojej witryny na moim komputerze lokalnym

    Access denied for user 'sitename'@'localhost' (using password: YES)

Błędnie użyte dane uwierzytelniające, ale nie wiem, skąd pochodzą. Sprawdziłem aplikację / etc / local.xml i ma ona wszystkie poprawne dane uwierzytelniające. Usunąłem wszystkie inne pliki xml z katalogu (oprócz config.xml). Usunąłem zawartość folderu var (wiele razy)

Mam inne strony Magento działające na moim lokalnym, więc moje ustawienia serwera powinny być w porządku. Naprawdę mnie to zaskoczyło i nie wiem, jaki kolejny krok powinienem zrobić. Każda pomoc będzie mile widziana.

rozwijać się
źródło
Chciałbym przejść do metody connect w adapterze DB i tuż przed wywołaniem metody połączenia umieścić coś takiego: „$ e = new Exception (); Mage :: log ($ e-> getTraceAsString (), null, 'logname', true); ' uzyskanie takiego śladu jest bardziej kompaktowe. Następnie w tym śladzie sprawdź nieparzyste ścieżki kodu. Rejestruj także rzeczywiste dane uwierzytelniające przekazywane do PDO.
Petar Dzhambazov

Odpowiedzi:

8

Musisz umożliwić użytkownikowi sitename@localhostdostęp do bazy danych i tabel. Użyj następującego kodu SQL jako administratora lub administratora w instancji MySQL, aby nadać uprawnienia:

GRANT ALL ON magento_local.* TO 'sitename'@'localhost';

Więcej informacji na temat Grants w MYSQL znajduje się w podręczniku: http://dev.mysql.com/doc/refman/5.1/en/grant.html

philwinkle
źródło
Dziękuję za odpowiedź. Natrafiłem na tę opcję wcześniej, ale nie sądziłem, że zadziała. Ponieważ użytkownik: „sitename” i pass: „yes” nie są poprawnymi / określonymi poświadczeniami db, założyłem, że to tak naprawdę nie rozwiązuje problemu użycia niewłaściwych szczegółów lub czy może jakoś znaleźć szczegóły w app / etc / local.xml po możliwość jednokrotnego połączenia się z
bazą
Istnieje różnica między bezpośrednim dostępem do mysql a komunikacją „localhost” przez sieć. Musisz udzielić jawnie w lokalizacji localhost.
philwinkle
2
pamiętajcie i biegnijcie: flush privilegespo waszym poleceniu
Matthew Haworth,
5

W przypadku przesłonięcia pliku local.xml wyszukaj w swojej witrynie pliki zawierające coś takiego <username>sitename</username>. Do tego rodzaju pracy wolę potwierdzenie :

ack --xml "<username>.*sitename.*</username>" app/

... a nawet po prostu:

ack sitename app/
mechanizm zegarowy
źródło
4

Spróbuj wyczyścić pamięć podręczną, być może używasz warstw buforowania innych firm, wyłącz je. Ostatnią opcją jest zmiana nazwy aplikacji / etc / local.xml i otwarcie strony internetowej, Magento powinien uruchomić proces instalacji, podczas instalacji podać stary klucz szyfrowania z pliku local.xml.

mageUz
źródło
1

Wszystkie pozostałe odpowiedzi były świetnym sposobem na zawężenie wszystkich możliwości co do problemu. W tym celu czułem, że każdy z nich zasługuje na głosowanie. Nie rozwiązali bezpośrednio mojego problemu, więc czułem, że powinienem udzielić odpowiedzi jako uprzejmości, a także dlatego, że wiele osób używa wordpress z Magento.

Ta konkretna strona używa wordpress jako modułu. Ten moduł zawiera poświadczenia bazy danych, a także zwykłą aplikację magento / etc / local.xml. Nie wiedziałem, że ten moduł jest renderowany prawie w całej witrynie i jest odpowiedni dla bazy danych. W rezultacie uniemożliwiło to przeglądanie strony bez zmiany tutaj również danych.

rozwijać się
źródło
0

Miałem ten sam problem, po rozwiązaniu tego dla mnie:

  1. Pobierz oryginalną wersję Magento
  2. wykonaj kopię zapasową aplikacji / etc (np .: app / _etc)
  3. Prześlij oryginalną aplikację / etc z oryginalnego folderu Magento
  4. Wejdź na swoją stronę i wykonaj proces instalacji Magento, użyłem mojej oryginalnej nazwy bazy danych, ustawień bazy danych (użytkownik / pw) i klucza szyfrowania.
  5. Prześlij swoją aplikację / etc / modułów do nowego folderu ETC
  6. Po instalacji mogłem się zalogować i wyczyścić pamięć podręczną. Strona znów działała jak wcześniej.

źródło