浅析mysql-server 与 mysql-client 的区别

老大留的作业是:在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在同一台机器上,他们也是通过网络通讯的。


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

docker-compose 是 Docker 官方的一个用于定义和运行容器化应用的工具。它使用 YAML 文件来配置应用的服务、网络和卷等方面的设置。 当使用 docker-compose 部署 MySQL 时,可能会遇到无法访问 MySQL 的问题。出现这种情况一般有以下几个可能的原因: 1. 网络配置问题:docker-compose 在默认情况下会创建一个默认的网络,并将所有定义的服务连接到该网络。如果服务的网络配置不正确,可能导致无法访问 MySQL。可以通过检查网络配置或创建自定义网络来解决此问题。 2. 端口映射问题:MySQL 默认使用 3306 端口进行通信,但是在容器内部的端口宿主机上的端口之间可能存在映射问题。可以通过检查端口映射配置或使用容器的 IP 地址来解决此问题。 3. 认证问题:MySQL 服务通常需要进行身份验证才能访问。在 docker-compose 文件中,可以通过设置环境变量来指定 MySQL 的用户名和密码。如果未正确设置这些环境变量,可能导致无法访问 MySQL。可以检查环境变量配置或者在容器内部手动配置用户名和密码来解决此问题。 4. 容器启动顺序问题:如果在 docker-compose 文件中定义了多个服务,并且它们之间有依赖关系,那么容器启动的顺序可能会影响 MySQL 的访问。可以通过在容器之间添加依赖或者设置延迟启动来解决此问题。 总结起来,当 docker-compose 部署的 MySQL 无法访问时,通常是由于网络配置、端口映射、认证配置或容器启动顺序等问题造成的。通过检查这些配置,并进行适当的调整或修复,通常可以解决无法访问 MySQL 的问题。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值