Tidsbegränsade lösenord

2019-05-16 | Teknik

Från MySQL 5.7.4 och framåt är alla användares lösenord tidsbegränsade. Om en användares lösenord inte ändrats på 365 dagar så blir användarkontot nedlåst.

Denna förändring är bra att ha koll på, då en låst MySQL-användare kan innebära att webbfrontar och andra applikationer som beror på databasen slutar fungera. För affärskritiska system kan det vara värt att överväga om det inte är bäst att stänga av denna inställning.

Stänga av inställningen

Så här stänger man av det nya beteendet med tidsbegränsade lösenord (i detta exempel för root-användaren). Kolla först att inställningen är påslagen:

> mysql -u root -p
mysql> SHOW GLOBAL VARIABLES LIKE 'default_password_lifetime';
+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| default_password_lifetime | 360 |
+---------------------------+-------+
1 row in set (0.00 sec)

”360” innebär 360 dagar innan lösenordet löper ut. Man stänger av tidsbegränsningen genom att ändra värdet till noll:

mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

Det är alltid bra att kontrollera att det gick som det skulle, genom att köra ”SHOW GLOBAL…”-kommandot igen och verifiera att värdet ändrats från 360 till 0.

Sätta lösenordet

Om lösenordet redan har gått ut för användaren så får man först sätta det på nytt, annars får man felmeddelandet ”ERROR 1820 (HY000): You must SET PASSWORD before executing this statement”.

mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somepassword');