mysql 不指定 ip 的连接默认都是 localhost

问题场景

在本地使用 docker 启动了一个 mysql 容器,并把本地的33067端口映射到容器内 mysql 的 3306,我们假设容器的 ip 地址是 172.17.0.2,使用本地的 mysql 客户端尝试连接容器内部的 mysql 服务。

方法 1

由于是绑定本地的 33067 端口,所以在连接时指定端口号即可。


1

mysql -uroot -P33067

此时 mysql-client 实际上进入了本地的 mysql 服务,使用 status 命令可以查看


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16


Connection id: 49

Current database:

Current user: [email protected]

SSL: Not in use

Current pager: stdout

Using outfile: ‘‘

Using delimiter: ;

Server version: 5.5.52-0ubuntu0.14.04.1 (Ubuntu)

Protocol version: 10

Connection: Localhost via UNIX socket

Server characterset: latin1

Db characterset: latin1

Client characterset: utf8

Conn. characterset: utf8

UNIX socket: /var/run/mysqld/mysqld.sock

Uptime: 1 hour 35 min 41 sec

connecttion 信息是本地的 unix socket,这样的连接并没有连接到容器内的 mysql。

方法 2

尝试指定对应 host 和映射的本地端口,由于映射的是本地端口,所以 host 为 localhost


1

mysql -uroot -hlocalhost -P33067

依然连接的是本地的 mysql 服务。

方法 3

直接使用容器的的 ip 地址,默认端口是 3306


1

mysql -uroot -h172.17.0.2

连接成功,进入容器内部的 mysql 服务。

方法 4

使用 127.0.0.1 地址,并指定本地映射的端口 33067


1

mysql -uroot -h127.0.0.1 -P33067

连接成功,进入容器内部的 mysql 服务。

分析

方法 1 和 方法 2 连接的 host 其实都是 localhost(不指定 host,默认是 localhost),此时不论端口指定什么,mysql-client 都尝试使用 unix socket 的通信方式,也就是本地的 socket ,所以如果要连接指定 ip 的 mysql 服务,必须要指定 ip ,即使该 ip 映射的是 localhost。

如上的场景由于容器内的 mysql 服务端口映射到本地的特定端口,即使是这种情况,连接依然需要指定本地 ip 127.0.0.1,而不是本地的 hostname localhost,因为一旦使用了 localhost,mysql-client 就尝试使用本地的 unix socket 连接本地的 mysql 服务。

因而可以得知,mysql 不指定 ip 的连接默认都是 localhost,尝试连接的是本地 mysql 服务,无论端口是什么。

参考:http://sanyuesha.com/2016/10/14/mysql-connect-localhost-and-ip-difference/#more

原文地址:https://www.cnblogs.com/jiangweili/p/9313319.html

时间: 2024-10-09 07:38:15

mysql 不指定 ip 的连接默认都是 localhost的相关文章

mysql设置指定ip远程访问连接的方法

本文实例讲述了mysql设置指定ip远程访问连接的方法,分享给大家供大家参考.具体实现方法如下: 1. 授权用户root使用密码jb51从任意主机连接到mysql服务器: 复制代码 代码如下: GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'jb51' WITH GRANT OPTION; flush privileges; 2.授权用户root使用密码jb51从指定ip为218.12.50.60的主机连接到mysql服务器: 复

Linux下配置mysql允许指定IP远程访问

一.Mysql允许指定IP远程访问 1.登录 mysql -u root -p 之后输入密码进行登陆 2.查看用户表 首先要先指定使用mysql数据库,然后再进行查询操作 //进入mysql数据库mysql> use mysql myql> select Host,User from user; 下面的列表就是查询user表后可以访问数据库的指定的Ip地址 3.权限设置及说明 3.1.使用grant all privileges on来更改用户对应某些库的远程权限 语法模板 grant all

mysql数据库指定ip远程访问

1.登录 mysql -u root -p 之后输入密码进行登陆 2.权限设置及说明 2.1添加远程ip访问权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.199.99' IDENTIFIED BY 'FEFJay' WITH GRANT OPTION; flush privileges; 2.2命令解释 第一行中,192.168.199.99是阿里云内网的一个地址,这个是允许远程访问的IP的值.自行改为其他值.root是账户名,后面的FEFJ

既然HTTP1.1协议里每个连接默认都是持久连接,那么为何当今所有报文都在使用Connetion:Keep-Alive

说白了,如果你发起时有,那么服务器支持,回应时也会有,不支持,也就没有了.所以一般客户端都会默认带着发,服务端返回不返回就是服务端的事了. 1. 支不支持长连接,关键在于服务端是否支持. 如果服务端不支持,你Connetion:Keep-Alive也没用. 2. HTTP1.1 默认的意思,就是既支持长连接又支持短连接,默认设置为长连接. 3. 短连接不是废弃了,很多应用短连接反而更好也更简单.

mysql授权指定ip远程登录

use user //更新用户表: UPDATE `user` SET `Host` = '175.6.6.230' where `Host` = '175.6.6.230'; //授权用户表: GRANT ALL PRIVILEGES ON *.* TO 'root'@'175.6.6.230' IDENTIFIED BY 'gudanboke' WITH GRANT OPTION; //强制刷新 flush privileges; 原文地址:https://www.cnblogs.com/l

JSP使用UTF-8链接MYSQL数据库(UTF8)乱码以及连接失败问题以及更改mysql默认编码

JSP使用UTF-8链接MYSQL数据库(UTF8)乱码以及连接失败问题: 前言,服了这些大公司,做的数据库都不人性化...我忙了很久才搞定的说 csdn好像传不了图片了...本来想来几张的,大家将就... 1.在windows下mysql的数据库是utf8编码的时候,连接失败(注意mysql中不是UTF-8,而是utf8) 情况,显示?在网页上(网页设置的UTF-8编码) 用户ID号码 用户名称 用户密码 用户地址 47 g? 1243 null 48 ? 1243 null 49 ?123

(mysql+php+apache)127.0.0.1和localhost可以连接mysql服务器,而ip却不能

127.0.0.1和localhost可以连接mysql服务器,但是对应的ip却不能,并且报错: Can‘t connect to MySQL server  on  "10.0.73.25"(111) 可能是以下原因: 1.网络不通:ping 10.0.73.25  发现能ping通 ,排除此原因. 2.mysql配置问题:打开mysql的配置文件mysql.cnf(linux下的路径一般为/etc/mysql/mysql.cnf),产看skip-networking和bind_ad

20180601_设置mysql允许外部IP连接

设置mysql允许外部IP连接 Mysql安装成功之后,默认之能本地访问mysql数据库.如果其他电脑需要访问mysql数据库就需要进行授权访问. 操作步骤: -- 使用mysql数据库 use mysql; -- 查看是否只允许本机访问mysql select user,host from user; -- 授权指定ip访问mysql -- GRANT ALL PRIVILEGES ON *.* TO '用户名'@'ip地址' IDENTIFIED BY '密码' WITH GRANT OPT

WIN2003使用IP安全策略只允许指定IP远程桌面连接

一,新建IP安全策略 WIN+R打开运行对话框,输入gpedit.msc进入组策略编辑器. 依次打开“本地计算机”策略--计算机配置--Windows设置--安全设置--IP安全策略,在 本地计算机上. 或是控制面板--管理工具--本地安全策略--IP安全策略,在 本地计算机上. 在右面的空白处右击,选择第一个菜单:创建IP安全策略,弹出的IP安全策略向导对话框. 点击下一步. 在名称里输入3389过虑,下一步. 取消激活默认响应规则,下一步. 选中编辑属性,下一步. 二,新建IP筛选器 在弹出