69833


[mariadb - Docker Hub](https://hub.docker.com/_/mariadb)

[code]

    $ docker run --name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag
    
[/code]

とあるので、`tag`の部分を`latest`に変えて下記のように実行しました（パスワードも下記の通りではなく適当に変えています）。

[code]

    $ docker run --name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:latest
    
[/code]

その後、無事、コンテナ内に入って、データベースを作ったりデータをインサートしたりしたのですが、どのようにしてホストマシーンからコンテナ内のMariaDBにアクセスするのでしょうか？  
接続には [TablePlus](https://tableplus.com/) を使用しています。

![](https://i.stack.imgur.com/rEtH6.png)

上記項目に

[code]

    Host: 127.0.0.1
    Port: 3306
    User: root
    Password: docker run で指定した値
    
[/code]

としても `Can’t connect to MySQL server on ‘127.0.0.1’ (36)` というエラーになります。

Docker Desktop for Macを使用しています。


CC BY-SA 4.0
2020-08-24T14:39:53.670
69832
2020-08-26T09:53:16.523
2020-08-25T00:40:01.240
3060
9008
question
docker mariadb
コンテナ内のMariaDBにホストからアクセスする方法は？


MySQLの情報ですが、下記が参考になりました。

[How to Run MySQL in a Docker Container on macOS with Persistent Local Data |
by Casey McMullen | Medium](https://medium.com/@crmcmullen/how-to-run-mysql-
in-a-docker-container-on-macos-with-persistent-local-data-58b89aec496a)

ポートをマッピングさせないといけないようです。ですので、`docker run`時に`-p`でポートを指定します。

[code]

    docker run --name some-mariadb-port -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:latest
    
[/code]

あとは[TablePlus](https://tableplus.com/)に

[code]

    Host: 127.0.0.1
    Port: 3306
    User: root
    Password: docker run で指定した値
    
[/code]

と指定すれば問題ありません。

蛇足ですが、`docker-compose.yml`を使った場合は下記になります。

[code]

    version: '3'
    services:
      mariadb:
        image: mariadb:latest
        container_name: some-mariadb-port
        ports:
          - 3306:3306
        environment:
          MYSQL_ROOT_PASSWORD: my-secret-pw
    
[/code]

もちろん `docker-compose.yml` を使った場合は、`docker run` ではなく、  
`docker-compose up -d` を実行してください。


CC BY-SA 4.0
2020-08-24T14:39:53.670
69833
2020-08-26T09:53:16.523
2020-08-26T09:53:16.523
9008
9008
69832
answer