Ten komunikat o błędzie zwykle oznacza, że albo hasło, którego używamy, nie jest zgodne z tym, jakie według MySQL powinno być hasło dla użytkownika, z którym się łączymy, albo pasujący użytkownik MySQL nie istnieje (nie został utworzony).
W MySQL użytkownik jest identyfikowany przez nazwę użytkownika („test2”) i host ("localhost").
Komunikat o błędzie identyfikuje użytkownika („test2”) i host ("localhost") wartości...
'test2'@'localhost'
Możemy sprawdzić, czy użytkownik istnieje, używając tego zapytania od klienta, z którego możemy się połączyć:
SELECT user, host FROM mysql.user
Szukamy wiersza z „test2” dla użytkownika i „localhost” dla hosta .
user host
------- -----------
test2 127.0.0.1 cleanup
test2 ::1
test2 localhost
Jeśli ten wiersz nie istnieje, host może być ustawiony na wartość wieloznaczną %
, aby dopasować dowolny inny host, który nie jest dopasowany.
Jeśli wiersz istnieje, hasło może się nie zgadzać. Możemy zmienić hasło (jeśli jesteśmy połączeni jako użytkownik z wystarczającymi uprawnieniami, np. root
SET PASSWORD FOR 'test2'@'localhost' = PASSWORD('mysecretcleartextpassword')
Możemy również zweryfikować, czy użytkownik ma uprawnienia do obiektów w bazie danych.
GRANT SELECT ON jobs.* TO 'test2'@'localhost'
EDYTUJ
Jeśli dokonamy zmian w tabelach uprawnień mysql za pomocą operacji DML (INSERT,UPDATE,DELETE), zmiany te nie zaczną obowiązywać, dopóki MySQL nie ponownie odczyta tabel. Możemy wprowadzić zmiany, które będą skuteczne, wymuszając ponowne przeczytanie za pomocą FLUSH PRIVILEGES
instrukcja wykonywana przez uprzywilejowanego użytkownika.