Diferentemente do PostgreSQL, o MySQL e o MariaDB não possuem funções de nome de usuário único. O usuário chamado test
sem nome de host definido é interpretado como usuário test@%
, para qualquer host, que é um usuário diferente de test@localhost
e pode ter uma senha totalmente diferente.
Você vai querer fazer
GRANT ALL PRIVILEGES ON test.* TO test@localhost;
em vez disso.
Na verdade, você pode omitir completamente a declaração CREATE USER
e fazer:
CREATE DATABASE test;
GRANT ALL PRIVILEGES ON test.* TO test@localhost IDENTIFIED BY 'password';
E o MySQL cuidará do resto.