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

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

使用的鏡像是 mariadb:latest

$ docker pull mariadb

直接進行端口映射(忽略我又給了一個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ù)庫:

$ mysql -uroot -proot

報錯:

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

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

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

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

$ mysql -hlocalhost -uroot -proot

ping localhost 是沒問題的

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

回答
編輯回答
離人歸

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

可以通過修改配置文件

protocol=tcp  # 強制使用TCP/IP 連接
skip-networking  #強制使用socket來連接。

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

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

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

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

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

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

2018年5月10日 06:34