gpt4 book ai didi

mysql - Docker MySQL连接DBeaver

转载 作者:行者123 更新时间:2023-11-29 02:09:45 26 4
gpt4 key购买 nike

我刚刚在 youtube 上完成了这个 Docker 教程:

https://www.youtube.com/watch?v=SXY0MLHP3hA&lc=Ugzp3vKtSOp0rn2lYyd4AaABAg

我能够为 PHP 和 MySQL 创建几个 Docker 容器。文件结构如下:

>Docker_PHP_MySQL
>DB
-Dockerfile
>src
-index.php
>www
-Dockerfile
development.env
docker-compose.yml

数据库 Dockerfile:

FROM mysql:8.0

索引.php:

<?php
$mysqli = new mysqli('tut07-db', getenv('MYSQL_USER'), getenv('MYSQL_PASSWORD'), 'information_schema');
if($mysqli->connect_error)
{
echo 'Connection Error [', $mysqli->connect_errno, ']: ', $mysqli->connect_error;
}
else
{
echo 'MySQLi Connected Successfully!';
}
?>

www Dockerfile:

FROM php:7.2-apache

RUN docker-php-ext-install mysqli
RUN docker-php-ext-enable mysqli

这是 development.env 文件:

MYSQL_USER=sys_admin
MYSQL_PASSWORD=sys_password
MYSQL_ROOT_PASSWORD=root_password

最后是 docker-compose.yml 文件:

version: "3"

networks:
tut07-frontend:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.10.1.0/24
tut07-backend:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.10.2.0/23

services:
tut07-db:
build: ./db
command: --default-authentication-plugin=mysql_native_password
ports:
- 3306:3306
networks:
tut07-backend:
ipv4_address: 172.10.3.2
env_file:
- ./development.env
tut07-www:
build: ./www
ports:
- 8080:80
volumes:
- ./src:/var/www/html/
networks:
tut07-backend:
ipv4_address: 172.10.2.2
tut07-frontend:
ipv4_address: 172.10.1.2
depends_on:
- tut07-db
env_file:
- ./development.env

现在这里是我知道我要完全失明的地方......

在 dbeaver 中,我正在尝试建立连接:

enter image description here

但是当我测试连接时,我得到以下响应:

enter image description here

我该如何解决这个问题?

最佳答案

对于那些在不同机器上运行数据库的人,您可以执行以下操作:

首先,从容器所在的位置运行 docker ps 以获取容器详细信息,包括 Container ID

[root@test-001 ~]# docker ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1b02333fb3b9 tutum/nginx "/usr/sbin/nginx" 6 weeks ago Up 7 days 0.0.0.0:80->80/tcp docker_nginx_1
8c1d234a3731 mariadb "docker-entrypoint.s…" 6 weeks ago Up 7 days 0.0.0.0:3306->3306/tcp docker_mysql_1

获取数据库容器的 ID 后,运行 docker inspect CONTAINER_ID 以获取该容器的相关 IP 地址。

[root@test-001 ~]# docker inspect 8c1d234a3731 | grep -i IPAddress
"SecondaryIPAddresses": null,
"IPAddress": "",
"IPAddress": "172.23.0.3",

在 Dbeaver 上,在添加新连接窗口中选择数据库类型后,转到网络设置(SSH,...),然后输入您的 docker 机器详细信息。并从主页的 Server Host: 添加您从 docker inspect 命令获得的 IP,然后添加您的凭据。

这应该可行

关于mysql - Docker MySQL连接DBeaver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55931321/

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