mysql远程可以登陆本地登陆不了(user表中host字段的通配符%)
来源:互联网 发布:室内采光优化 编辑:程序博客网 时间:2024/05/02 02:18
在MySQL数据库中,使用select user();查看当前登陆用户。
mysql中host字段的%与localhost不是谁包括谁的问题,是由精确到模糊进行匹配的。
说明
当用户从客户端请求登陆时,MySQL将授权表中的条目与客户端所提供的条目进行比较,包括用户的用户名,密码和主机。授权表中的Host字段是可以使用通配符作为模式进行匹配的,如test.example.com, %.example.com, %.com和%都可以匹配test.example.com这个主机。授权表中的User字段不允许使用模式匹配,但是可以有一个空字符的用户名代表匿名用户,并且空字符串可以匹配所有的用户名,就像通配符一样。 当user表中的Host和User有多个值可以匹配客户端提供的主机和用户名时,MySQL将user表读入内存,并且按照一定规则排序,按照排序规则读取到的第一个匹配客户端用户名和主机名的条目对客户端进行身份验证。
排序规则:
对于Host字段,按照匹配的精确程度进行排序,越精确的排序越前,例如当匹配test.example.com这个主机时, %.example.com比%.com更精确,而test.example.com比%.example.com更精确。
对于User字段,非空的字符串用户名比空字符串匹配的用户名排序更靠前。 User和Host字段都有多个匹配值,MySQL使用主机名排序最前的条目,在主机名字段相同时再选取用户名排序更前的条目。因此,如果User和Host字段都有多个匹配值,主机名最精确匹配的条目被用户对用户进行认证。
转角遇到爱
今天偶遇了%不能在本地登录的问题。
官方说%不包括localhost。
%是匹配所有host的主机的,但是MySQL的user匹配host是从具体到模糊的,所以如果有localhost或127.0.0.1存在,就不会去匹配%这个用户了。
但是为何本地mysql -uXXX 可以直接登录,而mysql -uXXX -pxxxxxx却登录不了?
答:查看mysql库的user表,发现host为localhost,用户为XXX的password为空;而host为%,用户为XXX的password不为空。
使用XXX在本机登录数据时,不指定-h参数默认为localhost主机登录,而在MySQL中有两个匹配的条目:@’%’ 和 ”@’localhost’,根据匹配规则,由精确到模糊,于是先匹配上了host=localhost这条,于是判断其密码为空。
匿名用户能够匹配的原因上面说过,空字符串可以匹配所有的用户名,就像通配符一样。
根据MySQL认证时的排序规则,第一个条目的用户名排序更前,第二个条目的主机名更精确,排序更前。
而MySQL会优先使用主机名排序第一的条目进行身份认证,因此”@’localhost’被用户对客户端进行认证。因此,只有使用匿名用户的空密码才能登录进数据库。就会出现下面的情况了。
- mysql远程可以登陆本地登陆不了(user表中host字段的通配符%)
- linux 本地无法登录 远程可以登陆
- 解决mysql本地登陆可以,远程登陆不行的问题
- mysql登陆不了
- mysql数据库user表host字段的%问题
- mysql远程可登录,本地无法登陆问题
- mysql远程授权登陆的问题
- Mysql 本地登陆和密码登陆
- asmack登陆抛出异常,可以注册新用户,但是登陆不了
- Centos下mysql允许远程连接后本地登陆失败问题(已解决)
- mysql中user表的host为::1
- mysql输入正确的密码也登陆不了
- mysql 安装完成后登陆不了mysql的 shell 即mysql>遇到:ERROR 1045 (28000): Access denied for user 'root'@'localhost‘
- MSN登陆不了的解决方案
- 邮箱登陆不了的解决办法
- SVN远程密码修改本地无法登陆的问题修复
- 关于mysql 修改权限表user字段host导致权限丢失的问题
- 多实例mysql本地登陆
- js闭包为动态数据添加addEventListener传参问题
- JOIN的线程谁来唤醒
- No qualifying bean of type [org.springframework.data.mongodb.core.MongoTemplate]
- 超经典:小明趣解什么叫网关?
- 单词记了又忘怎么办?6大方法教你高效背英语单词
- mysql远程可以登陆本地登陆不了(user表中host字段的通配符%)
- C++第四次上级实验-输出星号图
- 应用系统之间数据传输的几种方式
- IOS 获取当前方法的方法名
- python在接口测试的实际应用
- C#构造函数继承
- 结构体的使用
- json数据处理
- 《Unix环境高级编程》准备apue.h