sql >> Databáze >  >> RDS >> Mysql

Nelze se připojit k MySQL 4.1+ pomocí starého ověřování

edit:Toto platí pouze v případě, že ovládáte server MySQL... pokud ne, podívejte se na Stará vs nová metoda hašování hesla Mysql

Nejprve zkontrolujte pomocí dotazu SQL

SHOW VARIABLES LIKE 'old_passwords'

(v klientovi příkazového řádku MySQL, HeidiSQL nebo jakékoli rozhraní, které chcete), zda je server ve výchozím nastavení nastaven na používání starého schématu hesel. Pokud to vrátí old_passwords,Off jen náhodou máte stará hesla v user stůl. Server MySQL bude pro tyto účty používat starou ověřovací rutinu. Můžete jednoduše nastavit nové heslo pro účet a nová rutina bude použita.

Můžete zkontrolovat, která rutina bude použita, když se podíváte na mysql.user tabulky (s účtem, který má k této tabulce přístup)

SELECT `User`, `Host`, Length(`Password`) FROM mysql.user

Tím se vrátí 16 pro účty se starými hesly a 41 pro účty s novými hesly (a 0 pro účty bez hesla se o ně možná budete chtít postarat také).
Buď použijte nástroje pro správu uživatelů frontendu MySQL (pokud nějaké existují) nebo

SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges;

(nahraďte User a Host s hodnotami, které jste získali z předchozího dotazu.) Poté znovu zkontrolujte délku hesla. Mělo by to být 41 nyní a váš klient (např. mysqlnd) by měl být schopen se připojit k serveru.

viz také dokumentaci MySQL:* http://dev. mysql.com/doc/refman/5.0/en/old-client.html
* http://dev.mysql. com/doc/refman/5.0/en/password-hashing.html
* http://dev.mysql. com/doc/refman/5.0/en/set-password.html



  1. SQL vybrat vše, pokud je parametr null, jinak vrátit konkrétní položku

  2. Příkaz SQL pro výpis a zobrazení všech databází v MySQL a MariaDB

  3. SQL Join na hodnotách null

  4. Nastavit NOW() jako výchozí hodnotu pro datový typ datetime?