web-dev-qa-db-ja.com

Docker MySQL Connection Dbeaver.

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
_

DB DockerFile:

_FROM mysql:8.0
_

index.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

この問題を解決する方法

7
John Beasley

可能であれば、ドライバのプロパティの許可allowPublicKeyRetrievaltrueに変更してください。これは私のために働いています。

AllowPublicKeyRetrieval=True _