使用命令行从主机连接到MySQL容器

时间:2019-03-21 05:05:26

标签: mysql docker

我已经通过发出命令docker run -d -p 3306:3306 --name some-mysql -e MYSQL_ROOT_PASSWORD=supersecret some-mysql在docker中启动了Mysql实例。但是,当我尝试通过发出命令mysql -u root -p并提供密码superscret作为root用户登录时。我出现以下错误。

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

2 个答案:

答案 0 :(得分:0)

我不知道您使用的是哪个版本的mysql,但这是一个有效的示例:

docker run -d -p 3306:3306 --name some-mysql -e MYSQL_ROOT_PASSWORD=supersecret mysql:latest

docker exec -ti some-mysql mysql -u root -p

Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.15 MySQL Community Server - GPL

Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

答案 1 :(得分:0)

我假设您是从主机本身而不是容器内部执行close(file)

因此,根据我的假设,容器在运行时在主机本身内部没有mysql.sock,因此您需要更改默认协议。

此命令将通过mysql -u root -p而不是套接字进行连接

tcp