gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:44:07 26 4
gpt4 key购买 nike

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

基本上,我想为 mysql 创建一个 docker 镜像,然后从我的主机 (Mac OS X) 连接到它。

基于 this 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 数据库。

EDIT::----- 有效的解决方案 ------

感谢 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,密码为密码,数据库为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)

然后连接到:

mysql -h192.168.99.100 -ppassword -uroot

关于mysql - 如何从主机连接到在 Docker 上运行的 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33795923/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com