как получить удаленный доступ к mariadb на докере?

Я создал контейнер докеров, содержащий экземпляр mariadb, но я не могу получить доступ к базе данных с моей физической машины:

введите описание изображения здесь

У меня есть ip-адрес от docker inspect и порт от docker ps, но Sequel Pro выдал мне сообщение об ошибке подключения (то же самое с кодом Visual Studio). Очевидно, что из контейнера докеров я могу подключиться к движку базы данных.

Где я не прав? Большое спасибо всем! :)


[EDIT] Спасибо за все комментарии ...

если я пытаюсь открыть порт, контейнер не запускается: /  введите описание изображения здесь


person Lollo    schedule 04.01.2020    source источник
comment
Можете ли вы пропинговать контейнер mariadb? Что если вы запустите nmap на своем локальном хосте, чтобы увидеть, какие порты доступны?   -  person cnizzardini    schedule 04.01.2020
comment
Вам необходимо привязать порт 3306 внутри контейнера к порту вне контейнера. Затем вы могли бы использовать этот внешний порт из кода Visual Studio и SQL Pro.   -  person bishop    schedule 04.01.2020
comment
Когда вы запускаете контейнер, вы должны привязать порт с помощью аргумента -p 3306:3306   -  person med.b    schedule 04.01.2020
comment
@bishop Находясь на машине, на которой работает контейнер, нет необходимости отображать порт 3306 за пределами контейнера, использование IP-адреса контейнера должно быть достаточным.   -  person t.niese    schedule 04.01.2020
comment
Привязка порта @ med.b требуется только в том случае, если вам нужно получить доступ к контейнеру извне компьютера, на котором работает Docker (или, точнее, если вы не находитесь в той же подсети, что и контейнеры)   -  person t.niese    schedule 04.01.2020
comment
Разрешения для вашего пользователя, вероятно, определены только для localhost, а не для 172.17.0. … адреса ваших физических машин.   -  person t.niese    schedule 04.01.2020
comment
@ t.niese, я использую root-пользователя в данный момент ... как я могу предоставить права root-пользователю?   -  person Lollo    schedule 04.01.2020
comment
Я никогда не использовал файл PNG для подключения к базе данных. Можете ли вы заменить эти изображения текстовым описанием того, как именно вы запускали контейнеры и как вы пытаетесь подключиться?   -  person David Maze    schedule 04.01.2020
comment
Внутренние IP-адреса Docker работают только в одной очень конкретной настройке (вызов из-за пределов Docker, на том же компьютере, где это собственный хост Linux), и я бы посоветовал вообще никогда их не искать. Если вы пытаетесь получить доступ к базе данных удаленно или это хост MacOS, то это не сработает.   -  person David Maze    schedule 04.01.2020


Ответы (2)


У меня сработало:

  1. Создайте новый контейнер mariadb
docker container run \
        --name sql-maria \
        -e MYSQL_ROOT_PASSWORD=12345 \
        -e MYSQL_USER=username \
        -e MYSQL_PASSWORD=12345 \
        -e MYSQL_DATABASE=dbname \
        -p 3306:3306 \
        -d mariadb:10
  1. Смотрите логи и ждите, пока сервер mariadb заработает
docker container logs -f sql-maria

Хвостик бревна должен выглядеть примерно так

2020-02-04 20:02:44 0 [Примечание] mysqld: готов к подключению.

  1. Используйте клиент по вашему выбору для подключения к mariadb. Я использую клиент mysql здесь
mysql -h 127.0.0.1 -p -u username dbname

Если вы используете систему на основе unix, обязательно использовать адрес обратной связи 127.0.0.1 вместо localhost.

person Adonias Alcântara    schedule 04.02.2020

Атуализадо!

Здравствуйте, я подготовил руководство, чтобы помочь вам, так как публикация здесь была бы очень сложной. Хотя для начала хочется.

https://webdock.io/en/docs/how-guides/how-enable-remote-access-your-mariadbmysql-database.

Удачи! Присылайте новости!

person Paulo Boaventura    schedule 05.01.2020
comment
очень хороший документ, я нашел его полезным - person ps0604; 26.12.2020
comment
привет извиняюсь ... обновить ссылку ... - person Paulo Boaventura; 31.12.2020