Po upgradu serveru PHP z PHP 5.3.3 na PHP 5.6.x při práci se serverem MySQL 5.1.x na obyčejném 64bitovém boxu CentOS 6.x se u několika nových webových aplikací objevila tato chyba připojení mysqlnd: mysqlnd nelze připojte se k MySQL 4.1+ pomocí staré nezabezpečené autentizace
Toto byla úplná a přesná chyba:
mysqlnd se nemůže připojit k MySQL 4.1+ pomocí starého nezabezpečeného ověřování. Pro resetování hesla použijte prosím administrační nástroj pomocí příkazu SET PASSWORD =PASSWORD(‘vaše_existující_heslo‘). Tím se do mysql.user uloží nová a bezpečnější hodnota hash. Pokud je tento uživatel používán v jiných skriptech spouštěných PHP 5.2 nebo staršími, možná budete muset odstranit příznak old-passwords z vašeho souboru my.cnf
To se děje proto, že nový php klient mysqlnd odmítá pracovat se starými hesly z MySQL. Takže i když máte old_passwords=1, nebude to fungovat pro tyto nové webové aplikace, které vyžadují silnější zabezpečení heslem.
Jak mohu opravit chybu, že se mysqlnd nemůže připojit k MySQL 4.1+ pomocí staré nezabezpečené autentizace?
Tuto chybu lze snadno opravit, pokud budete postupovat podle následujících kroků:
Upravit hlavní konfigurační soubor MYSQL:
nano -w /etc/my.cnf
Změna:
old_passwords=1
do
old_passwords=0
Použít změny:
service mysqld restart
Připojte se ke konzoli MySQL jako root:
mysql -u root -p
Nyní resetujte uživatelské heslo, abyste mohli používat nový hash:
SET PASSWORD FOR 'mysqluser'@'localhost'=PASSWORD('passwordhere'); flush privileges;
Nahraďte „mysqluser“ a „passwordhere“ svým skutečným uživatelským jménem a heslem.
Nyní se vraťte do /etc/my.cnf a vraťte dříve provedené změny, nastavte:
old_password=1
Chcete-li použít změny, restartujte MySQL:
service mysqld restart
Vše hotovo, nyní by váš uživatel měl používat silnější hash hesla MySQL.
To lze ověřit z konzole MySQL pomocí tohoto příkazu:
mysql> SELECT user, Length(Password) FROM mysql.user; +------------------+------------------+ | user | Length(Password) | +------------------+------------------+ | root | 16 | | forum_user | 16 | | user2 | 41 | | lorex | 41 | | m3user | 16 |
Pokud vidíte „41“, pak daný uživatel používá nový hash a „16“ znamená, že používá starý hash.
Vše hotovo, v tuto chvíli se vaše chyba mysqlnd nemůže připojit k MySQL 4.1+ pomocí staré nezabezpečené autentizace by měla být opravena a měli byste být schopni normálně pracovat se svými webovými aplikacemi.
Jak opravit:mysqlnd se nemůže připojit k MySQL 4.1+ pomocí staré nezabezpečené autentizace byla naposledy upravena:7. února 2017 Esteban Borges