No MariaDB no windows eu crio um usuário e banco de dados com o seguinte
flush privileges;
CREATE USER 'test-one'@'%' IDENTIFIED BY 'test-one';
GRANT USAGE ON *.* TO 'test-one'@'%' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE DATABASE IF NOT EXISTS `test-one`;
GRANT ALL PRIVILEGES ON `test-one`.* TO 'test-one'@'%';
Depois disso, não consigo me conectar ao banco de dados
.\mysql.exe -u "test-one" -p
Enter password: ********
ERROR 1045 (28000): Access denied for user 'test-one'@'localhost' (using password: YES)
Comportamento semelhante para
.\mysql.exe -u "test-one" -p -h 127.0.0.1
O que funciona é (substituir pelo nome do host real) .\mysql.exe -u "test-one" -p -h
Isso é por design? O curinga do nome do host '%' não inclui localhost nem 127.0.0.1
Isso é verdade desde que existam usuários anônimos no banco de dados. Quando você remove esses usuários
localhost
e127.0.0.1
começa a corresponder os curingas.Da documentação do MariaDB :
Esses usuários anônimos também podem ser removidos quando o
mysql_secure_installation
script é executado: