鍍金池/ 問答/Linux  數(shù)據(jù)庫(kù)/ 使用docker的話,mysql 命令的 -h127.0.0.1和-hlocal

使用docker的話,mysql 命令的 -h127.0.0.1和-hlocalhost有什么區(qū)別?

使用的鏡像是 mariadb:latest

$ docker pull mariadb

直接進(jìn)行端口映射(忽略我又給了一個(gè)mariadb的名字):

$ docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --name mariadb mariadb:latest

映射成功之后:

clipboard.png

$ netstat -tunlp |grep 3306

信息如下:

clipboard.png

連接數(shù)據(jù)庫(kù):

$ mysql -uroot -proot

報(bào)錯(cuò):

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

我知道這個(gè)錯(cuò)誤怎么搞或者什么原因,但是如果我加了 -hIP 就沒問題:

$ mysql -h127.0.0.1 -uroot -proot
$ mysql -h192.168.1.130 -uroot -proot

上面兩個(gè)都沒問題,但是如果 -hlocalhost 就有問題(同樣上面的錯(cuò)誤):

$ mysql -hlocalhost -uroot -proot

ping localhost 是沒問題的

這個(gè)問題是我 linux 的問題還是 docker 容器方面的問題還是什么問題?
為什么 -h127.0.0.1 能工作而 -hlocalhost 卻不能工作,這兩者有什么區(qū)別?

回答
編輯回答
離人歸

-h IP:是通過TCP/IP連接方式連接
-h localhost: 是通過socket連接方式連接

可以通過修改配置文件

protocol=tcp  # 強(qiáng)制使用TCP/IP 連接
skip-networking  #強(qiáng)制使用socket來連接。

2017年10月19日 09:45
編輯回答
熊出沒

localhost、127.0.0.1 和 本機(jī)IP 三者的區(qū)別? mysql -h localhost -u root -p root此時(shí)你嘗試連接的是宿主機(jī)的mysql了

2017年3月5日 01:25
編輯回答
維她命

區(qū)別是localhost需要映射到ip,配置在/etc/hosts文件里面
至于localhost不能工作,應(yīng)該就是默認(rèn)沒有配置在hosts文件里

2018年1月5日 11:45
編輯回答
局外人

區(qū)別是mysql在使用-hlocalhost選擇使用的連接方式為unix-socket,而你沒有在mysql的配置文件中啟用:socket=/var/run/mysqld/mysqld.sock,導(dǎo)致這個(gè)文件不存在而使連接失??;而-hIP的形式使用的是tcp-socket

2018年5月10日 06:34