老大留的作业是:在docker中用mysql容器启动两个服务实例:mysql-server,且他们的数据互通,再启动一个mysql-client。

琢磨了好一阵子啥叫server啥叫client,越琢磨越懵,还不敢问,自己百度/谷歌得一塌糊涂...

只好去问班级里的大腿,大腿昨晚上给讲了一下,现在大概有个概念了...

整理一下写出来,加深自己的记忆,顺便,万一有人和我有一样的疑惑不也就明白了呢~是吧~(*^▽^*)


首先附一个链接,是讲解mysql-client和server的区别的:

https://stackoverflow.com/questions/6962890/what-is-the-difference-between-mysql-server-and-mysql-client

然后说一下讨论的内容和结论:

我之前疑惑的点是,都说client是要登陆(host -u -p)的,但是我在使用server时,也要登陆(-u -p)啊,所以理所当然地产生了一个想法就是,client与server的区别就是要不要连host,不连host的就是server,但是这个观点其实不太对。

本质上的区别是:server是执行一个crud操作,client是发送一个crud操作。

server是把sql语句翻译成对内存和文件的操作,也就是说,server是直接操作文件的。

而client是对数据库/表进行操作,不是直接对文件进行操作。


举个例子:

①client:我用一个Navicat去链接一个数据库,这个Navicat就是client。

②server:我有多个mysql服务实例,他们可以位于不同的端口(这句不重要),但是他们是挂载在了宿主机同一个目录下的(这句重要,对内存/文件进行操作了),而且数据共享(这句也不重要)。


小知识点:

①sql只是去知道server如何去操作数据。

②即使C/S在同一台机器上,他们也是通过网络通讯的。


加油ヾ(◍°∇°◍)ノ゙

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐