我已创建用户“demo”并授予“demo”@“%”权限。我可以从任何远程服务器登录,但是当我尝试从本地主机连接时,出现错误:
Access denied for user 'demo_@'%''@'localhost' (using password: YES)
这对我来说很奇怪,因为根据文档,“%”应该匹配任何 IP 地址。显而易见的解决方案是为“demo”@“localhost”创建第二组权限,但我想知道,这是设计成这样的吗?或者它与 mysql 客户端尝试连接数据库的方式有关? (环回网络接口(interface)与真实网络接口(interface))。我可以从同一台机器上的 mysql 客户端作为“demo”@“%”进行连接吗?
--编辑--
有人建议我的问题与 Are Users 'User'@'%' and 'User'@'localhost' not the same? 相同然而,事实并非如此,因为接受的答案指出:
User@% would allow access from all locations.
在我的实际情况中,User@% 将允许从除本地主机之外的所有位置进行访问。因为答案来自 2012 年,同时我们已经分支到 MariaDB,所以我提供了确切的版本信息:
D:\xampp\mysql\bin>mysql --version mysql Ver 15.1 Distrib
10.1.16-MariaDB, for Win32 (AMD64)
最佳答案
尝试将 skip-name-resolve
选项添加到 my.cnf 中的 mysqld 部分。也许确实存在从/到“localhost”解析的问题。使用该选项,服务器仅使用 IP 地址。
关于具有从 '%' 登录权限的 Mysql 用户无法从 'localhost' 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41632960/