mysql 워크벤치를 도커 내 실행 중인 mysql에 연결하려면 어떻게 해야 합니까?
도커 컨테이너 안에서 mysql 서버를 사용하고 있으며 도커 안에서 접속할 수 있습니다.로컬(호스트 머신)에서 실행되는 mysql 워크벤치에서 연결을 만드는 방법.
배포 후 MySQL에는 기본적으로 다음과 같은 연결 제한이 있습니다.
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 --name=mysql57 -d mysql/mysql-server:5.7
또는 완전한 포트 매핑이 필요한 경우:
docker run -p 3306:3306 -p 33060:33060 --name=mysql57 -d mysql/mysql-server:5.7
새로 설치하는 경우 기본 비밀번호를 가져옵니다.
docker logs mysql57 2>&1 | grep GENERATED
접속 방법
mysql
클라이언트는 도커의 mysqld에 직접 접속합니다.docker exec -it mysql57 mysql -uroot -p
신규 인스톨의 경우는, 다음의 방법으로 패스워드를 변경하도록 요구됩니다.
ALTER USER
명령어를 입력합니다.해요.SQL 실행:
update mysql.user set host = '%' where user='root';
종료
mysql
고객.컨테이너를 재시작합니다.
docker restart mysql57
이제 MySQL Workbench에서
host: `0.0.0.0`
port: `3306`
모든 변경 후 쿼리에 다음과 같이 표시됩니다.
select host, user from mysql.user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | healthchecker |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+
도커 컨테이너에서는 설정을 거의 할 필요가 없습니다.다음의 순서에 따라 주세요.
docker-compose.yml에서 mysql 구성 블록을 지정합니다.docker-compose.yml 파일의 services object 아래에 다음 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
도커 컨테이너를 재시작하고 다음 명령을 실행하여 mysql 컨테이너의 bash 쉘로 이동합니다.
docker ps docker exec -it <mysql container name> /bin/bash
컨테이너 내에서 mysql 명령줄 유형에 연결하려면
mysql -u root -p
docker-compose.yml에 지정된 대로 MYSQL_ROOT_PASSWORD를 사용합니다.다음 명령을 실행하여 새 사용자를 만듭니다.
create user 'user'@'%' identified by 'pass'; grant all privileges on *.* to 'user'@'%' with grant option; flush privileges;
퍼센트 기호(%)는 모든 IP를 의미합니다.도커 컨테이너를 재기동합니다.
MySQL Workbench에서 연결 세부 정보를 제공합니다.docker-compose.yml 파일에 지정된 대로 MYSQL_PASSWORD를 사용합니다.
이것으로 mysql 컨테이너에 접속할 수 있게 됩니다.
다음 컨텐츠가 있다고 가정해 보겠습니다.docker-compose
파일:
database: image: mysql:5.6 volumes: - dbdata:/var/lib/mysql environment: - "MYSQL_DATABASE=homestead" - "MYSQL_USER=homestead" - "MYSQL_PASSWORD=secret" - "MYSQL_ROOT_PASSWORD=secret" ports: - "33061:3306"
localhost의 경우 호스트 127.0.0.1 및 33061 포트를 사용합니다.
2 도커 관련 조건:
먼저 도커를 실행하여 mysql 포트를 호스트 포트에 매핑해야 합니다.
docker run -p host:container
(예:docker run -d -p 3306:3306 tutum/mysql
)
둘째, VM(도커 머신, boot2docker 포함)에서 도커를 사용하는 경우 다음 IP를 사용해야 합니다.
docker-machine ip <VMname>
(호스트 맵포트 포함).http://$(docker-machine ip <VMname>):hostPort
「 」를 사용할 수 .localhost
Virtual Box 수준에서 포트 전송을 수행해야 합니다.
VBoxManage controlvm "boot2docker-vm" natpf1 "tcp-port3306,tcp,,3306,,3306"
VBoxManage controlvm "boot2docker-vm" natpf1 "udp-port3306,udp,,3306,,$3306"
)controlvm
중일 VM은modifyvm
되어 있는 VM」을치환해 주세요)(「VM」을 치환해 주세요).boot2docker-vm
: " VM " 을 참조하십시오.docker-machine ls
2 mysql 관련 조건:
에 나타나듯이 리모트액세스를 유효하게 할 필요가 있습니다.
# 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
도커 이미지에서 데이터베이스를 시작할 때 사용자를 작성해야 합니다.
에 의해서 호출되는 예를 참조해 주세요./usr/sbin/mysqld & sleep 5 echo "Creating user" echo "CREATE USER '$user' IDENTIFIED BY '$password'" | mysql --default-character-set=utf8 echo "REVOKE ALL PRIVILEGES ON *.* FROM '$user'@'%'; FLUSH PRIVILEGES" | mysql --default-character-set=utf8 echo "GRANT SELECT ON *.* TO '$user'@'%'; FLUSH PRIVILEGES" | mysql --default-character-set=utf8 echo "finished"
Mysql Workbench
알고 그 말을 하지 port
다음은 워크벤치에서 실행한 후 연결하기 위한 전체 명령어입니다.
순서 1 - 도커 컨테이너 실행:
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.20
mysql:8.0.20
분리된 컨테이너로 실행(ctrl + c는 컨테이너를 정지하지 않음)
-d
컨테이너명
--name mysql8
노출 " " "
(external port on host machine : internal port of the container)
-p 3306:3306
환경 변수 설정
-e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=testdb -e MYSQL_USER=admin -e MYSQL_PASSWORD=root
볼 수 .-f means follow
:
docker logs mysql8 -f
스텝 2 - Mysql Workbench에서 연결:
host: localhost
port: 3306
user: admin
password: root
합니다.
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 exec -it test-mysql bash
- 하려면 mysql을 합니다.
mysql -u root -p
. - 새 사용자 생성
- 마지막으로 MySQL Workbench 구성
@Krishna의 답변은 성공했지만 약간의 변경으로 다음과 같이 사용자가 추가되었습니다.
create user 'user'@'%' IDENTIFIED WITH mysql_native_password BY 'pass';
참조: 인증 플러그인 'caching_sha2_password'를 로드할 수 없습니다.
에, 할 수 .포트 번호를 전달할 때 IP 주소를 지정할 수 있습니다. ,, 까, 까 같은 입니다.-p 127.0.0.1:3307:3306
한 것이 -p 3307:3306
https://www.youtube.com/watch?v=20om-9Gwuc0#t=7m에서 본 적이 없습니다.
start 명령어 예시
docker run -d -e MYSQL_ROOT_PASSWORD=test --name mysql8 -p 127.0.0.1:3307:3306 mysql:8
후 하여 "MYSQL Workbench"에 할 수 있었습니다.127.0.0.1
'''로3307
를 클릭합니다.
Hostname: 127.0.0.1(Localhost) 필드 값을 설정하여 이 솔루션을 얻었으며, 기본적으로는 포트에는 사용자의 credentials가 설정되어 있습니다.
mysql docker hub에 나와 있는 지시에 따라 docker-compose.yml을 작성했습니다.
version: '3.1'
services:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: example
ports:
- 3306:3306
mysql mysql password (((((((((((((((((((((((((((((((((((((((((((((내 경우는 패스워드)를example
)
Workbench의 MySQL 를 사용했습니다.0.0.0.0
" " " 를 사용하여3306
.
.Settings -> Network -> Port Forwarding
설정 syslog:
Host/Guest IP
로로 합니다.0.0.0.0
Host/Guest Port
로로 합니다.3306
언급URL : https://stackoverflow.com/questions/33827342/how-to-connect-mysql-workbench-to-running-mysql-inside-docker
'source' 카테고리의 다른 글
DIV의 치수가 변경된 것을 감지하는 방법 (0) | 2022.09.11 |
---|---|
Vue.js를 사용한 Facebook 로그인 컴포넌트 및 증폭 (0) | 2022.09.11 |
마우스 "클릭"과 "클릭" (0) | 2022.09.11 |
느낌표 두 개? (0) | 2022.09.08 |
PHP는 array_push를 사용하여 요소를 다차원 배열에 추가합니다. (0) | 2022.09.08 |