Úvod
Tento článek je určen uživatelům, kteří se snaží přihlásit k MySQL se správným heslem, ale dostávají chybu: „Error 1045: Access denied for user (using password: YES)“
Pokud jste zapomněli své kořenové heslo MySQL, přečtěte si tento článek:
- Jak obnovit kořenové heslo MySQL.
Pokoušíte-li se přihlásit jako root prostřednictvím phpMyAdmin, přečtěte si prosím:
- Nemůžete se přihlásit do phpMyAdmin: mysqli_real_connect(): (HY000/1698): Přístup odepřen pro uživatele ‚root’@’localhost‘
Podle uživatelů a hostitelů MySQL
MySQL omezuje přístup uživatelů na základě hodnoty host
uživatele. Ve výchozím nastavení je hodnota host
pro účet root a nové uživatele nastavena na localhost
, což znamená, že se můžete přihlásit pouze přes místní počítač nebo přes phpMyAdmin, pokud je nainstalován na stejném localhostu. Pokud se pokusíte přihlásit k účtu localhost
vzdáleně, může dojít k odmítnutí správného hesla s hláškou „Přístup byl uživateli odepřen (pomocí hesla: ANO).“
Podíváme-li se na tento jednoduchý seznam uživatelů MySQL níže jako na příklad:
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |
Nahoře máme tři uživatele MySQL s různými hodnotami host
.
Podívejme se na několik scénářů, kdy může být vaše správné heslo odmítnuto v závislosti na hodnotě host
:
- Uživatel
- ✅ Může se přihlásit z
localhost
, tedy ze stroje, na kterém běží služba MySQL. - ✅ Může se přihlásit z phpMyAdmin, pokud je nainstalován na stejném localhostu.
- ❌Nemůže se přihlásit vzdáleně a zobrazí se zpráva „Access denied for user (using password: YES)“.
- ✅ Může se přihlásit z
- Uživatel
- ✅ Lze se přihlásit pouze z IP adresy
10.0.53.185
. - ❌ Nelze se přihlásit z jiné IP adresy „Access denied for user (using password: YES)“.
- ❌ Nelze se přihlásit z localhostu „Přístup odepřen pro uživatele (s použitím hesla: ANO)“.
- ❌ Nelze se přihlásit z phpMyAdmin „Přístup odepřen pro uživatele (s použitím hesla: ANO)“.
- ✅ Lze se přihlásit pouze z IP adresy
- User
%
- ✅ Lze se přihlásit odkudkoli (
%
je zástupný znak).
- ✅ Lze se přihlásit odkudkoli (
Změna hodnoty hostitele uživatele MySQL
Můžete změnit hodnotu hostitele pro uživatele, který používá účet MySQL root nebo jakýkoli účet s právy superuživatele. To lze provést pomocí příkazového řádku nebo phpMyAdmin.
Pomocí příkazového řádku
Budete muset přistupovat k databázi MySQL pomocí roota nebo superuživatele, který má přístup k tabulce MySQL Users.
Účet root je ve výchozím nastavení přístupný pouze z localhostu, takže při pokusu o vzdálené přihlášení se může zobrazit zpráva „Access denied for user (using password: YES)“. V takovém případě budete muset nějakým způsobem získat místní přístup k serveru.
Pro přihlášení do místní databáze MySQL:
mysql -u root -p
Pro přihlášení do vzdálené databáze MySQL jednoduše nahraďte hostname_or_ip
svým vlastním.
mysql -u root -h hostname_or_ip -p
Po přihlášení do MySQL vypište všechny uživatele MySQL a jejich odpovídající hostitele v databázi.
SELECT User,Host FROM mysql.user;
Výsledek:
+------------------+-------------+| User | Host |+------------------+-------------+| test-user1 | localhost || test-user3 | 10.0.53.185 || test-user2 | % |+------------------+-------------+3 rows in set (0.00 sec)
Výše vidíme seznam uživatelů MySQL a jejich hostitelů.
Pokud se chceme přihlásit pomocí test-user1
vzdáleně odkudkoli, musíme změnit hodnotu hostitele na zástupný znak %
, který umožní vzdálené přihlášení odkudkoli. Pro zvýšení bezpečnosti můžete tuto hodnotu změnit na IP adresu.
V níže uvedeném příkladu měníme hostitele pro test-user1
z localhost
na %
%
znamená zástupný znak a umožní tomuto uživateli vzdálené přihlášení odkudkoli.
RENAME USER 'test-user1'@'localhost' TO 'test-user1'@'%';
Musíte zrušit práva MySQL, aby se změny projevily.
FLUSH PRIVILEGES;
Nyní se zkuste znovu vzdáleně přihlásit.
Přes phpMyAdmin
Přihlaste se do phpMyAdmin pomocí účtu root nebo účtu s právy superuživatele.
- Po přihlášení do phpMyadmin klikněte na databázi
mysql
v levém sloupci. - Klikněte na kartu SQL.
- Dotaz SQL zadejte nebo vložte do pole SQL:
SELECT User,Host FROM mysql.user;
pro výpis všech uživatelů MySQL v databázi. - Klikněte na tlačítko Přejít pro spuštění dotazu.
Měli byste nyní vidět seznam všech uživatelů MySQL a jejich příslušných hostitelů.
Chcete-li změnit hodnotu hostitele uživatele MySQl:
- Dvakrát klikněte do pole hostitele vedle uživatele, kterého chcete změnit (červeně níže).
- Zadejte
%
, abyste komukoli umožnili přihlásit se k tomuto uživateli odkudkoli. Můžete jej také změnit na vzdálenou IP adresu pro lepší zabezpečení. - Stiskněte
ENTER
na klávesnici pro uložení změn.
Ještě jste neskončili. Nyní musíte propláchnout práva MySQL.
- Znovu klikněte na kartu SQL
- Dotaz SQL zadejte nebo vložte do pole SQL:
FLUSH PRIVILEGES;
- Klepnutím na tlačítko Přejít dotaz spustíte.
Nyní byste měli být schopni se vzdáleně přihlásit.
Dejte mi vědět, zda to pomohlo. Sledujte mě na Twitteru, Facebooku a YouTube nebo mi 🍊 kupte koktejl.
p.s. Pomocí AI jsem zvýšil příjmy z AdSense o 200 % 🤖. Přečtěte si mou recenzi Ezoic a zjistěte jak.