user表中存在多条相同user不同host用户信息时MySQL该匹配哪条记录登录?
2016-04-09 11:51
579 查看
问题:
当用户名相同,但主机名不同的多条记录。用户由不同主机登录时,选择使用那条记录来验证,数据库版本为:5.6.25
如:IP为192.168.141.241 hostname为vhost02主机上的MySQL上有下面几个用户:
test01@localhost、test01@127.0.0.1、test01@192.168.196.128、test01@192.168.196.%、test01@vhost02 、test01@vhost03
如果要用root用户登录数据,数据库会选择哪个用户?
实验结论:
1.仅当用户的host='localhost'存在时,不指定-h可以登录;
2.其它情况,本机登录,-h 指定为什么(localhost,127.0.0.1,IP)就用host等于什么的用户登录;
3.其它情况,异地登录,登录机器IP为多少就用能够与它匹配的host登录(host越具体,此用户优先级越高)。
4.实验证明,-h指定为hostname,即使有hostname记录用户也不能通过hostname登录;
5.实验证明,-h指定为hostname,且配置/etc/hosts中对应hostname的记录时,将-h hostname 转化为-h IP登录;
测试过程:
mysql> create user test01@'localhost' identified by 'localhost'; Query OK, 0 rows affected (0.25 sec)
mysql> create user test01@'127.0.0.1' identified by '127001'; Query OK, 0 rows affected (0.00 sec)
mysql> create user test01@'192.168.196.128' identified by '192168196128'; Query OK, 0 rows affected (0.01 sec)
mysql> create user test01@'192.168.196.%' identified by '192168196%';Query OK, 0 rows affected (0.17 sec)
mysql> create user test01@'vhost02' identified by 'vhost02'; Query OK, 0 rows affected (0.00 sec)
mysql> create user test01@'vhost03' identified by 'vhost03';Query OK, 0 rows affected (0.12 sec)
test01@localhost、test01@127.0.0.1、test01@192.168.196.128、test01@192.168.196.%、test01@vhost02都存在时
NO.1 不指定-h
NO.2 指定-h localhost
测试127.0.0.1时需要打开skip-name-resolve
NO.3 指定-h 127.0.0.1
NO.4 指定-h 192.168.196.128
NO.5 指定-h vhost02
test01@localhost不存在、test01@127.0.0.1、test01@192.168.196.128、test01@192.168.196.%、test01@vhost02都存在时
test01@192.168.196.128\test01@192.168.196.%
mysql> drop user test01@'192.168.196.128';Query OK, 0 rows affected (0.26 sec)
配置/etc/hosts,再使用-h vhost02登录
vhost02上测试
vhost03上测试
当用户名相同,但主机名不同的多条记录。用户由不同主机登录时,选择使用那条记录来验证,数据库版本为:5.6.25
如:IP为192.168.141.241 hostname为vhost02主机上的MySQL上有下面几个用户:
test01@localhost、test01@127.0.0.1、test01@192.168.196.128、test01@192.168.196.%、test01@vhost02 、test01@vhost03
如果要用root用户登录数据,数据库会选择哪个用户?
实验结论:
1.仅当用户的host='localhost'存在时,不指定-h可以登录;
2.其它情况,本机登录,-h 指定为什么(localhost,127.0.0.1,IP)就用host等于什么的用户登录;
3.其它情况,异地登录,登录机器IP为多少就用能够与它匹配的host登录(host越具体,此用户优先级越高)。
4.实验证明,-h指定为hostname,即使有hostname记录用户也不能通过hostname登录;
5.实验证明,-h指定为hostname,且配置/etc/hosts中对应hostname的记录时,将-h hostname 转化为-h IP登录;
测试过程:
mysql> create user test01@'localhost' identified by 'localhost'; Query OK, 0 rows affected (0.25 sec)
mysql> create user test01@'127.0.0.1' identified by '127001'; Query OK, 0 rows affected (0.00 sec)
mysql> create user test01@'192.168.196.128' identified by '192168196128'; Query OK, 0 rows affected (0.01 sec)
mysql> create user test01@'192.168.196.%' identified by '192168196%';Query OK, 0 rows affected (0.17 sec)
mysql> create user test01@'vhost02' identified by 'vhost02'; Query OK, 0 rows affected (0.00 sec)
mysql> create user test01@'vhost03' identified by 'vhost03';Query OK, 0 rows affected (0.12 sec)
test01@localhost、test01@127.0.0.1、test01@192.168.196.128、test01@192.168.196.%、test01@vhost02都存在时
NO.1 不指定-h
NO.2 指定-h localhost
测试127.0.0.1时需要打开skip-name-resolve
NO.3 指定-h 127.0.0.1
NO.4 指定-h 192.168.196.128
NO.5 指定-h vhost02
test01@localhost不存在、test01@127.0.0.1、test01@192.168.196.128、test01@192.168.196.%、test01@vhost02都存在时
test01@192.168.196.128\test01@192.168.196.%
mysql> drop user test01@'192.168.196.128';Query OK, 0 rows affected (0.26 sec)
配置/etc/hosts,再使用-h vhost02登录
vhost02上测试
vhost03上测试
相关文章推荐
- SQL Server移植到MySQL(利用工具Sqlyog)
- windows x64 安装 MYSQL教程
- SQL脚本用Navicat导入MySQL数据库出现编码问题
- C#使用MySQLConnectorNet和MySQLDriverCS操作MySQL的方法
- 8.DBCP连接池技术操作MySQL
- mysql 初始化报错 /usr/local/mysql/bin/mysqld:error while loading shared libraries :libaio.so.1
- MySQL 基础(DDL)
- MySQL 基础(DDL)
- mysql sql_mode
- mysql无法启动mysql innob引擎解决
- mysql
- MySQL 启动原理剖析
- Mysql从入门到精通视频课程【典藏版】
- 跟我一起学习MySQL技术内幕(第五版):(第二章学习日记2)
- 在Lamp平台上基于postfix+mysql+dovecot+sasl+courier-authlib+extmail+extman搭建企业级邮件系统
- mysql基本操作
- 修改mysql的密码
- mysql排序让空值NULL排在数字后边
- 深入解析MySQL分区(Partition)功能
- MySQL的分页技术总结