如何将mysql workbench连接到docker内部运行的mysql?
我在docker容器中使用mysql服务器,可以访问docker内部。如何在本地(主机)上运行的mysql工作台中创建连接 2码头工人相关条件:如何将mysql workbench连接到docker内部运行的mysql?,mysql,docker,mysql-workbench,Mysql,Docker,Mysql Workbench,我在docker容器中使用mysql服务器,可以访问docker内部。如何在本地(主机)上运行的mysql工作台中创建连接 2码头工人相关条件: 首先,docker运行必须将mysql端口映射到主机端口: docker run -p host:container (例如:docker run-d-p3306:3306tutum/mysql) 其次,如果您在VM中使用docker(docker机器,带boot2docker),则需要使用带有主机映射端口的docker机器ip的ip htt
- 首先,docker运行必须将mysql端口映射到主机端口:
docker run -p host:container
docker run-d-p3306:3306tutum/mysql
)
- 其次,如果您在VM中使用docker(docker机器,带boot2docker),则需要使用带有主机映射端口的
docker机器ip的ip
(http://$(docker-machine ip <VMname>):hostPort
如果虚拟机正在运行,controlvm
表示虚拟机已停止) (将“modifyvm
”替换为您的虚拟机名称:请参阅boot2docker-vm
)docker-machine-ls
2.相关条件:- 如中所示,您需要启用远程访问:
# Enable remote access (default is localhost only, we change this # otherwise our database would not be reachable from outside the container) RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
- 在docker映像中启动数据库时,需要创建用户。
例如,请参见,它由调用:
- 在docker-compose.yml中指定mysql配置块。我在docker-compose.yml文件中的services对象下有以下mysql块
services: db: image: mysql volumes: - "./.data/db:/var/lib/mysql" environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: mydb MYSQL_USER: user MYSQL_PASSWORD: pass ports: 42333:3306
- 重新启动docker容器并运行以下命令以访问mysql容器中的bash shell
docker ps docker exec -it <mysql container name> /bin/bash
使用docker-compose.yml中指定的MYSQL\u ROOT\u密码。执行以下命令以创建新用户-d
百分号(%)表示所有ip。重新启动docker容器create user 'user'@'%' identified by 'pass'; grant all privileges on *.* to 'user'@'%' with grant option; flush privileges;
- 在MySQL工作台中,提供连接详细信息。使用docker-compose.yml文件中指定的MYSQL\u密码
您现在应该能够连接到mysql容器 @Krishna的答案有效,但有一个小小的改变-用户添加如下
看create user 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';
- 指定您的配置
。更多细节。例如:docker compose.yml
version: '3.1' services: mysql: image: mysql:5.6 container_name: test-mysql ports: - 3306:3306 restart: always environment: MYSQL_ROOT_PASSWORD: password
- 运行此命令
和另一个终端运行docker compose up
以查看您的容器docker ps
- 访问您的docker:
docker exec-it test mysql bash
- 在容器内部,要连接到mysql命令行类型,请运行
mysql-u root-p
- 最后配置MySQL工作台
假设您有
文件的下一个内容:docker compose
对于本地主机,只需使用主机127.0.0.1和33061端口数据库: 图片:mysql:5.6 卷数: -dbdata:/var/lib/mysql 环境: -“MYSQL\u数据库=宅地” -“MYSQL\u USER=homestad” -“MYSQL\u PASSWORD=secret” -“MYSQL\u ROOT\u PASSWORD=secret” 端口: -“33061:3306”
默认情况下,部署后MySQL有以下连接限制:
显然,出于安全目的,您将无法在docker映像之外连接到它。 如果需要更改以允许root用户从任何主机连接(例如,出于开发目的),请执行以下操作:mysql> select host, user from mysql.user; +-----------+---------------+ | host | user | +-----------+---------------+ | localhost | healthchecker | | localhost | mysql.session | | localhost | mysql.sys | | localhost | root | +-----------+---------------+ 4 rows in set (0.00 sec)
- 使用所需的所有端口映射启动mysql映像:
或者,如果需要完整的端口映射:docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
docker-run-p3306:3306--name=mysql57-dmysql/mysql服务器:5.7
docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
- 如果这是新安装-获取默认密码:
docker记录mysql57 2>&1生成的grep
- 使用
客户端直接连接到docker中的mysqld:mysql
docker exec-it mysql57 mysql-uroot-p
- 如果这是新安装,将要求您使用
命令更改密码。去做吧ALTER USER
- 运行SQL:
update mysql.user set host='%'其中user='root'代码>
- 退出
客户端mysql
- 重新启动容器:
现在您将能够从MySQL工作台连接到docker重启mysql57
所有更改后,查询将显示:host: `0.0.0.0` port: `3306`
select host, user from mysql.user; +-----------+---------------+ | host | user | +-----------+---------------+ | % | root | | localhost | healthchecker | | localhost | mysql.session | | localhost | mysql.sys | +-----------+---------------+
我按照mysql docker hub中的说明进行操作。 写了这个docker-compose.ymlversion: '3.1' services: db: image: mysql command: --default-authentication-plugin=mysql_native_password environment: MYSQL_ROOT_PASSWORD: example ports: - 3306:3306
在连接mysql workbench时,请确保清除参数中的密码。现在输入密码(在我的例子中是
)您需要进入示例
并配置:设置->网络->端口转发
至Host/Guest IP
0.0.0
到主机/来宾端口
我试图从3306
连接,但它不允许我连接。结果,我忘了提到Mysql工作台
。以下是要运行并从工作台连接的完整命令: 步骤1-运行docker容器:端口
docker run --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=testdb -e MYSQL_USER=admin -e MYSQL_PASSWORD=root -d mysql:8.0.20
上述命令说明:host: localhost port: 3306 user: admin password: root
docker run --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=testdb -e MYSQL_USER=admin -e MYSQL_PASSWORD=root -d mysql:8.0.20
Mysql v8.0.20host: localhost port: 3306 user: admin password: root
作为分离的容器运行(ctrl+c不会停止容器) 容器名称mysql:8.0.20
端口暴露--name mysql8
设置环境变量-p 3306:3306
您可以通过以下方式查看容器的实时日志:-e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=testdb -e MYSQL_USER=admin -e MYSQL_PASSWORD=root
步骤2-从Mysql工作台连接:docker logs mysql8 -f
docker run --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=testdb -e MYSQL_USER=admin -e MYSQL_PASSWORD=root -d mysql:8.0.20
host: localhost port: 3306 user: admin password: root
我在下载MySQL Workbench的最新版本时解决了这个问题,然后我使用主机
和端口0.0.0
,我找到了一个视频,它展示了另一种实现此功能的方法。您可以在传入端口号时指定IP地址。也就是说,类似于3306
而不是-p 127.0.0.1:3307:3306
我以前从未见过这种情况 示例启动命令-p 3307:3306
然后我可以使用MYSQL Workbench在端口docker run -d -e MYSQL_ROOT_PASSWORD=test --name mysql8 -p 127.0.0.1:3307:3306 mysql:8
连接到3307
。127.0.0.1
Docker正在我的本地计算机上运行。它有172.17.42.1 IP地址 - 如中所示,您需要启用远程访问: