Connect to Docker MySQL container from localhost?

前端 未结 7 2286
孤街浪徒
孤街浪徒 2020-11-29 23:24

I have a docker mysql image running, following is what the docker-compose.yml file looks like:

db:
  image: mysql
  environment:
    MYSQL_ROOT_PASSWORD: \"\         


        
相关标签:
7条回答
  • 2020-11-29 23:56

    I got it!! The answer is to use the --service-ports option when running docker-compose:

    docker-compose run --service-ports db (the original docker-compose.yml file works fine)

    Thanks to all for the help!

    0 讨论(0)
  • 2020-11-30 00:07

    Connect to MySQL via {host ip}:3306 since you've exposed the internal port to your host as 3306. If you need to access the MySQL CLI tools you will need to go docker exec -it mycontainer bash this will place you inside the container to access the tools installed with MySQL if you do not have them installed locally on the host o/s.

    0 讨论(0)
  • 2020-11-30 00:09

    Your yml file looks good.

    You can directly connect docker container directly as it already mapped with local port 3306. Just goto terminal and run

    mysql -h 127.0.0.1 -u root -p
    

    Note: you must have access to mysql command line. If mysql command show an error, check '/usr/local/mysql/bin' other wise you can not connect to mysql server. In other word you must have mysql client on your machine.

    0 讨论(0)
  • 2020-11-30 00:14

    Using docker-compose up

    Since you published port 3306 on your docker host, from that host itself you would connect to 127.0.0.1:3306.

    Using docker-compose run

    In that case the port mapping section of the docker-compose.yml file is ignored. To have the port mapping section considered, you have to add the --service-ports option:

    docker-compose run --service-ports db
    

    Additional note

    Beware that by default, the mysql client tries to connect using a unix socket when you tell it to connect to localhost. So do use 127.0.0.1 and not localhost:

     $ mysql -h 127.0.0.1 -P 3306 -u root
    

    Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.6.26 MySQL Community Server (GPL)

    Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    mysql>

    $ mysql -h localhost -P 3306 -u root
    

    ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

    0 讨论(0)
  • 2020-11-30 00:17

    this worked for me.

    /usr/local/mysql/bin/mysql -h 127.0.0.1 -P 3306 -u root -p
    
    0 讨论(0)
  • 2020-11-30 00:21

    If your Docker MySQL host is running correctly you can connect to it from local machine, but you should specify host, port and protocol like this:

    mysql -h localhost -P 3306 --protocol=tcp -u root
    

    Because you are running MySQL inside Docker container, socket is not available and you need to connect through TCP. Setting "--protocol" in the mysql command will change that.

    0 讨论(0)
提交回复
热议问题