MySQL – это в прошлом открытая система управления базами данных. После покупки Sun компанией Oracle, MySQL стала принадлежать последней. Но свободный код позволил сделать ответвление – MariaDB (нельзя было использовать именно название "MySQL"). Потому эти базы данных и похожи.
И так и там при создании пользователя нужно указать, как будет авторизоваться пользователь. И там и там часто пишут нечто-то следующее (с версии 5.7):
mysql> GRANT USAGE ON *.* TO 'user'@'localhost' IDENTIFIED BY PASSWORD 's3cr3t';
На что получают:
ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number
А с некоторых пор (MySQL Server 8.0) и вообще:
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
И это правильно, ведь функция PASSWORD
предоставляет очень слабое хеширование:
mysql> SELECT PASSWORD('xyz123');
54fg56gs32sgi3862
Такой короткий хеш может быть причиной взлома перебором.
Вместо этого вы можете писать:
mysql> GRANT USAGE ON *.* TO 'user'@'localhost' IDENTIFIED BY 's3cr3t';
Query OK, 0 rows affected (0.00 sec)
В этом случае MySQL и MariaDB будут использовать более стойкий хеш, и ошибки не будет.