mysql登陆案例_Mysql用户登陆验证过程 案例
Mysql用户登陆验证过程 & 案例
Mysql用户登陆验证过程:
1、Mysql server将user表读入到内存中,然后排序,排序原则下面会讲
2、客户端尝试连接Mysql服务器,服务器扫描内存中排序过后的user表的条目
3、Mysql服务器采纳第一行匹配的客户端名和用户名,然后验证通过
Mysql服务器内存中user表排序原则:
1、最具象(most-specific)的条目放在最前面。
2、user表的host列,文本主机名(Literal host names)和IP地址是最具象的。子网掩码的方式,如192.168.1.0/255.255.255.0的具象程度等同于192.168.1.13,都是最具象的;子网掩码192.168.1.0/255.255.255.0的具象程度高于192.168.1.%。'%'是最不具象的,优先级排在后面;空字符串''意思是any host,具象级别排在'%'之后。
3、host值相同,最具象的值排在最前面;user值为空,以为着any user,是最不具象的。
总结:
1、user表中的host和user列按照具象程度排序加载到内存中,最具象的排在最前面。
2、host具象程度相同时,再去按照user的具象程度从高到底匹配;若没有匹配上,那么转移到次具象的host继续匹配,直至匹配上为止;若没有匹配上,那么登录验证宣告失败。
案例:
测试环境中,三台主机组成Master slave集群,gp-s2是master,gp-s1和gp-s3是slave,并且这三台服务器都在同一个网段。
gp-s2 Master上的user表如下,rep1用户允许 10.9.15.% 这个网段都访问gp-s2。
+-------------------------+-------+
| host | user |
+-------------------------+-------+
| % | root |
| % | test3 |
| 10.9.15.% | rep1 |
| 10.9.15.% | test |
| 10.9.15.% | test2 |
| 10.9.15.0/255.255.255.0 | wang |
| 10.9.15.18 | root |
| 127.0.0.1 | root |
| ::1 | root |
| gp-master | root |
| gp-s1 | |
| gp-s1 | root |
| gp-s1 | test |
| gp-s3 | test |
| localhost | |
| localhost | root |
+-------------------------+-------+
16 rows in set (0.00 sec)
使用rep1用户在gp-s1上无法登录gp-s2
[root@gp-s1 ~]# mysql -urep1 -p123456 -h gp-s2
ERROR 1045 (28000): Access denied for user 'rep1'@'gp-s1' (using password: YES)
使用rep1用户在gp-s2上能够登录gp-s2
[root@gp-s3 ~]# mysql -urep1 -p123456 -h gp-s2
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 17
Server version: 5.5.48-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
这是一个很奇怪的问题,相同用户、在相同网段,gp-s1可以登录,gp-s3不可以登录。
试着在master上给rep1用户加上新权限
mysql> grant replication slave on *.* to 'rep1'@'10.9.15.19' identified by "123456";
这次在gp-s1主机上登录master可以顺利登录,但是走的条目是'10.9.15.19',而不是'10.9.15.%'
[root@gp-s1 ~]# mysql -urep1 -p123456 -h gp-s2
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 34
Server version: 5.5.48-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql>
mysql> select user(),current_user();
+------------+-----------------+
| user() | current_user() |
+------------+-----------------+
| rep1@gp-s1 |rep1@10.9.15.19 |
+------------+-----------------+
1 row in set (0.00 sec)
gp-s3登录则是走的正常条目'10.9.15.%'
[root@gp-s3 ~]# mysql -urep1 -p123456 -h gp-s2
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 35
Server version: 5.5.48-log MySQL Community Server (GPL)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> select user(),current_user();
+----------------+----------------+
| user() | current_user() |
+----------------+----------------+
| rep1@10.9.15.2 | rep1@10.9.15.% |
+----------------+----------------+
1 row in set (0.00 sec)
这说明gp-s1到gp-s2网络是没有问题的。
采用排错法,gp-s3正常,那么比对gp-s1和gp-s3在user表中的区别,最后找到了根源。
+-------------------------+----------+-------------------------------------------+
| host | user | password |
+-------------------------+----------+-------------------------------------------+
| % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| % | test3 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 10.9.15.% | rep1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 10.9.15.% | test | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 10.9.15.% | test2 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 10.9.15.% | wchbsync | *55D02D8B1D286B078AC8DC9CD05E2D5D80906F3F |
| 10.9.15.0/255.255.255.0 | wang | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 10.9.15.18 | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 10.9.15.19 | rep1 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 10.9.15.19 | rep2 | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| 127.0.0.1 | root | |
| ::1 | root | |
| gp-master | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| gp-s1 | | | 问题出在这里
| gp-s1 | root | |
| gp-s1 | test | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| gp-s3 | test | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
| localhost | | |
| localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-------------------------+----------+-------------------------------------------+
将这一行删掉,问题解决。
那么为什么会出现这种问题呢??
因为gp-s1登陆gp-s2,首先去匹配host,按照具象程度,这3个条目匹配到。
| gp-s1 | | | 问题出在这里
| gp-s1 | root | |
| gp-s1 | test | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
匹配到host gp-s1之后,再按照具象程度匹配user,user列没有rep1用户,最后只能匹配空值'',空值意味着any user。对于用户空值并且密码同时为空的情况,意味着无法远程登陆。
**特别说明
如果用户名为空,但是密码不为空的情况。远程用户登录,只要密码正确,无论用户怎么写,都能登录。
这里也要特别注意,对于用户空值的情况,一定要及时删除,避免出现不必要的麻烦!
转载请注明:
十字螺丝钉
http://blog.chinaunix.net/uid/23284114.html
QQ:463725310
E-MAIL:houora#gmail.com(#请自行替换为@)
mysql登陆案例_Mysql用户登陆验证过程 案例相关推荐
- 登陆mysql服务器命令_Mysql服务器登陆,启动,停止等基本操作命令介绍(Linux/Centos环境)...
Mysql服务器登陆,启动,停止等基本操作命令介绍(Linux/Centos环境) 1. 启动MySQL服务 启动MySQL服务的命令为: 命令执行后如图7-5所示,表示启动MySQL服务成功. 也 ...
- php错误密码也能登陆账号,php用户登陆代码(限制用户错误登录次数)(1/2
php用户登陆代码(限制用户错误登录次数)(1/2)php用户登陆代码(限制用户错误登录次数) php教程用户登陆代码(限制用户错误登录次数) session_start(); include(&qu ...
- python编程用户登陆c_django实现用户登陆功能详解
简介: Python下有许多款不同的 Web 框架.Django是重量级选手中最有代表性的一位.许多成功的网站和APP都基于Django. Django是一个开放源代码的Web应用框架,由Python ...
- mysql用户名锁定_MySQL用户锁定
修改方式: set global log_warnings=2; MySQL 5.5版本官方文档中,并没有用户锁的状态.因此不存在用户会被锁.. The account-locking capabil ...
- mysql用创建的用户登陆并修改表格_MySQL 基础学习二:创建一个用户表,并增删改查...
MySQL 基础学习二:创建一个用户表,并 增删改查 提示:MySQL 命令建议都用大写,因为小写运行时,还是翻译成大写的. 第一步,创建一个用户表 1,打开控制台,进入数据库 C:\Users\Ad ...
- mysql 远程登陆设置_mysql远程登陆设置
基于安全考虑root账户一般只能本地访问,但是在开发过程中可能需要打开root的远程访问权限.下面是基本的步骤: 1.登录到mysql中,为root进行远程访问的授权,执行下面的命令: mysql&g ...
- 2,史上最全linux的免密登陆和设定用户登陆(RHCE)
文章目录 1.实现免密登录 2.设置只允许student1, student2用户登录 3.get和post的区别 4.HTTP状态码,常用的状态码有哪些? 5.HTTP请求报文和响应报文 6.HTT ...
- mysql语句解析_mysql 语句的查询过程解析
select * from tb where ID = 1 下面解析的查询过程都是基于上面的简单查询,该系列的所有素材都来自于丁奇的mysql的45讲 1.建立连接 a.客户端发出请求,请求首先到达连 ...
- java mysql查询语句_Mysql查询语句执行过程
Mysql查询语句执行过程 Mysql分为server层和存储引擎两部分,或许可以再加一层连接层 连接层(器) Mysql使用的是典型的C/S架构.连接器通过典型的TCP握手完成连接. 需要注的是, ...
- 操纵BGP AS-PATH 属性案例(配图+详细验证过程)
BGP总是优先选择具有最短AS路径的路由.本案例中,我们将配置R1,将1.0.0.0通告给R2.R3之前预先添加两个额外的AS路径到1.0.0.0上(AS300.AS400) 具体配置如下: r1 i ...
最新文章
- mac terminal vim delete key
- WinSock网络编程基础(3)server
- 一起谈.NET技术,WCF的问题和Using语句块
- 远程连接mysql速度慢的解决方法
- POJ2279-Mr. Young's Picture Permutations【线性dp】
- node-glob 正则表达式
- 【算法分析与设计】辗转相除法
- Spring线程池开发实战
- [linux 日常]修改ls目录的颜色
- EasyUI加载树控件自动展开所有目录
- 【Computer Organization笔记05】运算器基本功能,定点运算器,Am2901的组成与功能,VHDL硬件描述语言
- 计算机教室网络连接示意图,多媒体电教室解决方案
- 计算机的排版方法,计算机编辑排版系统及其方法
- 51物联卡:物联卡支持5G吗?怎么购买5G物联卡
- 《笑傲江湖》清心普善咒——曲谱(琴箫合奏曲)
- 工信部教育与考试中心-软件测试工程师考试题A卷-答
- mac地址前6位对应vendor
- 自媒体视频如何消重?批量处理去重消重去水印去logo软件企鹅号视频不重复必学的消重技巧...
- The producer group has been created before
- 软件自动化测试项目总结,自动化测试总结报告.docx