CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了
Row Data含着的是我们须要获取的数据,一个Result Set包琅绫擎包含着多个Row Data构造(获得的数据可能多行),每个Row Data中包含着多个字段值,它们之间没有距离,比如我们如今萌芽到的数据为(id: 1, name: godpan) 那么Row Data内容为(1,godpan),这两个值是连在一路的,对应的值都用LengthEncodedString编码。
MySQL对大年夜家来说,都应当很熟悉了,大年夜大年夜学里的课程到实际工作中数据的存储萌芽,很多时刻都须要用到数据库,很多人也写过与数据库交互的法度榜样,在Java中你可能一开端会应用原生mysql-connector-java来进行操作,后来你会接触到Hibernate,Mybatis等ORM框架,其实它们底层也是基于mysql-connector-java,但很多时刻我们并不清跋扈法度榜样是怎么跟数据库具体交互的,比如履行一个SQL萌芽,法度榜样是若何大年夜MySQL中获取数据的呢?今天就让我们来看看最基本的MySQL收集协定分析。
引言
浏览本文之前你须要对收集协定须要有根本的懂得,比如两台机子之间的数据是若何通信的,硬件层可以临时不需懂得,但收集层和传输层的协定要有必定的懂得,比如IP数据包,TCP/IP协定,UDP协定等相干概念,有了这些基本,有利于你浏览本文。
背景
在汗青悠长的时代,数据库只作为单机存储,也不怎么须要与法度榜样进行交互的时刻的首,它的收集通信并不是那么重要,但跟着时代的成长,数据库不再只是纯真的作为一个数据的仓库了,它须要供给与外界的交互,比如长途连接,法度榜样操作数据库等,这时刻一份规范的收集通信的协定就异常重要了,比如它是若何校验权限,若何解析SQL语句,若何返回履行结不雅都须要用到响应的协定,很多时刻我们并不须要接触这些内容,因为它太底层了,我们直接应用把它们封装好的第三方包就可以了,为什么还要去进修它的收集协定呢?确切对于一开端进修编程的仁攀来说,这有点操之过急,反而有时刻会拔苗助长,但当你对这一方面有了必定的懂得之后,你便会迫在眉睫得想去摸索更深层的奥秘,去懂得并进修我们平常用的第三方类库是怎么去实现,明白它的底层道理,甚至对一些莫名其妙的bug也不会再害怕。
MySQL连接方法
分析协定,我们起重要懂得若何与数据库连接,说到MySQL连接方法,大年夜家忽然可能有点懵,其实它一向伴跟着我们,比如我们第一次装数据库完成后履行的第一次登录,比如你没有设置暗码:
- mysql -uroot
这是最根本的一种数据库连接方法,那么MySQL连接方法到底有几种呢?到MySQL5.7为止,总共有五种,分别是TCP/IP,TLS/SSL,Unix Sockets,Shared Memory,Named pipes,下面我们就来看看这五种的差别:
方法 默认开启 支撑体系 只支撑本机 若何开启 参数设备 TCP/IP 是 所有体系 否 --skip-networking=yes/no. --port--bind-address TLS/SSL 是 所有体系(基于TCP/IP)之上 否 --ssl=yes/no. --ssl-* options Unix Sockets 是 类Unix体系 是 设置--socket=<empty> 来封闭. --socket=socket path Shared Memory 否 Windows体系 是 --shared-memory=on/off. --shared-memory-base-name=<name> Named pipes 否 Windows体系 否 --enable-named-pipe=on/off. --socket=<name>
大年夜上表中我们可以清楚看出每种连接方法的差别,接下里我会具体解释几种连接是怎么操作的,因为我的机子是Mac OS体系,这里只模仿非Windows体系下的三种方法,因为这三种方法都是默认开启的,我们不须要进行任何设备:
1.Unix Sockets:
- mysql -uroot
若你在本机应用这种方法连接MySQL数据库的话,它默认会应用Unix Sockets。
2.TCP/IP:
- mysql --protocol=tcp -uroot
- mysql -P3306 -h127.0.0.1 -uroot
若是数据内容大年夜于或者等于2^24-1个字节,将会拆分发送,举个例子,比如发送16 777 215 (2^24-1) 字节的内容,则会按一下这种方法发送
3.TLS/SSL:
- mysql --protocol=tcp -uroot --ssl=on
- mysql -P3306 -h127.0.0.1 -uroot --ssl=on
上表说过,TLS/SSL是基于TCP/IP的,所以我们只需再指定打开ssl设备即可。
然后我们可以经由过程以下语句来萌芽今朝数据库的连接情况:
连接的时刻我们指定连接协定,或者指定响应的IP及端口,我们的连接方法就变成了TCP/IP方法。
- SELECT
推荐阅读
CTO练习营 | 12月3-5日,深圳,是时刻成为优良的技巧治理者了alter user user() identified by 'admin'; 这几天因为做项目须要,要应用MySQL数据库,应用的是MySQL Community Server 5.7.>>>详细阅读
本文标题:关于MySQL的网络协议分析
地址:http://www.17bianji.com/lsqh/39379.html
1/2 1