在建立了docker网络之后,我在docker容器中运行了mysql。
docker network create --subnet=172.19.0.0/16 network-name docker run -p 3306:3306 --net network-name --ip 172.19.0.13 -e MYSQL_ROOT_PASSWORD=password -d
当我试图用命令在本地连接mysql时 mysql -uroot -p
,我出错了( Error 2002 (HY000): Can't Connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
)
然后我命令成功了 mysql -u root -p -h 172.19.0.13
我以为我连接了本地主机端口3306和docker容器的3306端口。为什么我不能通过localhost端口连接到mysql?
1条答案
按热度按时间ht4b089n1#
您可以使用tcp套接字或unix套接字连接到mysql。当您处于远程时,您总是使用tcp套接字。当您是本地mysql客户机时,更喜欢socket。
在您的情况下,您需要知道mysql在unix套接字中的位置。您可以使用:
当mysql在docker容器中运行时,您必须在容器中才能在localhost上连接。
如果您是本地人:
mysql-u root-p-h 127.0.0.1将强制使用tcp套接字
mysql-u root-p-h localhost将使用unix套接字