Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从主机连接到Docker上运行的MySQL_Mysql_Docker - Fatal编程技术网

如何从主机连接到Docker上运行的MySQL

如何从主机连接到Docker上运行的MySQL,mysql,docker,Mysql,Docker,我已经在谷歌上搜索过这个主题,发现很少有线索。基于这些线程,我遵循了以下步骤。但我面临一个问题 基本上,我想为mysql创建一个docker映像,然后从我的主机(MacOSX)连接到它 基于post,我必须与主机共享mysql unix套接字。为此,我采取了以下步骤 1. Start docker quick terminal 2. docker run --name mysql -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:late

我已经在谷歌上搜索过这个主题,发现很少有线索。基于这些线程,我遵循了以下步骤。但我面临一个问题

基本上,我想为mysql创建一个docker映像,然后从我的主机(MacOSX)连接到它

基于post,我必须与主机共享mysql unix套接字。为此,我采取了以下步骤

1. Start docker quick terminal
2. docker run --name mysql -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:latest
3. docker exec -it mysql bash
4. mysql -uroot -p
5. create database MyDB;
6. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
7. exit;
8. mkdir /Users/abhi/host
9. docker run -it -v /host:/shared mysql/mysql-server:latest
现在我得到了错误

MacBook-Pro:~$ docker run -it -v /Users/abhi/host:/shared mysql/mysql-server
error: database is uninitialized and password option is not specified
  You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
但是您可以看到,我已经提供了密码并初始化了数据库

我只想从我的主机连接到docker内部运行的mysql数据库

编辑:------有效的解决方案------

谢谢RICO。最后,对我有效的步骤是

1. Start docker quick terminal
2. docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:latest
3. docker exec -it mysql bash
4. mysql -uroot -p
5. create database MyDB;

  or:
  CREATE USER 'root'@'%' IDENTIFIED BY 'root';
  GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

6. GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
7. exit;
8. docker-machine env default
使用步骤8中获得的IP地址。端口是3306,用户是root,密码是password,数据库是MyDB


连接成功

因此,您基本上需要向主机公开mysql端口:

docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql/mysql-server:latest
然后,您可以使用mysql命令行从主机进行访问:

mysql -h127.0.0.1 -ppassword -uroot
不确定为什么要运行另一个容器来连接(可能是指链接两个容器)

如果您在docker machine上使用Mac(或Windows),您希望连接到docker machine VM的IP地址。例如:

$ docker-machine ssh default
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.9.0, build master : 16e4a2a - Tue Nov  3 19:49:22 UTC 2015
Docker version 1.9.0, build 76d6bc9
docker@default:~$ ifconfig eth1
eth1      Link encap:Ethernet  HWaddr 08:00:27:E6:C7:20
          inet addr:192.168.99.100  Bcast:192.168.99.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fee6:c720/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:18827 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10280 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1791527 (1.7 MiB)  TX bytes:2242596 (2.1 MiB)

docker run-e MYSQL\u ROOT\u PASSWORD=pass——名称sqldb-p3306:3306mysql

docker exec-it sql db bash


mysql-u root-p

这对我不起作用。我运行了它创建图像和容器的第一个命令。但是当我尝试使用dbvisualizer从主机连接到mysql时。上面写着“沟通失败”。我的主机是一台mac电脑,没有运行mysql。因此,我需要使用dbvisualizer连接到在docker容器中运行的mysql。@知道这是因为您在docker机器上使用MacOS。Docker不是在MacOS上本机运行的,请检查我的编辑以了解问题。错误1130(HY000):不允许主机“172.17.0.1”连接到此MySQL服务器boot2docker是否已删除?在窗户上?
mysql -h192.168.99.100 -ppassword -uroot