在 Windows 上的 MariaDB 中,我使用以下内容创建用户和数据库
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'@'%';
之后我无法连接到数据库
.\mysql.exe -u "test-one" -p
Enter password: ********
ERROR 1045 (28000): Access denied for user 'test-one'@'localhost' (using password: YES)
类似的行为
.\mysql.exe -u "test-one" -p -h 127.0.0.1
有效的是(替换为实际主机名) .\mysql.exe -u "test-one" -p -h
这是设计使然吗?主机名通配符 '%' 不包括 localhost 也不包括 127.0.0.1
只要数据库中存在匿名用户,情况就是如此。当您删除这些用户
localhost
并127.0.0.1
开始匹配通配符时。从MariaDB 文档:
这些匿名用户也可以在
mysql_secure_installation
脚本运行时被删除: