您的位置:首页 > 运维架构 > Docker

Docker - How to Connect to a MySQL Running Container Using MySQL Command Line Client

2016-02-28 21:02 651 查看
1. What we want to achieve:

We used the official mysql image from Docker Hub (https://hub.docker.com/_/mysql/), and created a running database container.

Now we need to connect to the MySQL database using MySQL command line client, to do some database operation.

2. Implementation:

Reference: MySQL Image Official Doc

In the official guide, it states:

The following command starts another mysql container instance and runs the 
mysql
 command line client against your original mysql container, allowing you to execute SQL statements against your database instance:
$ docker run -it --link some-mysql:mysql --rm mysql sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'


The variables here are really confusing.  Here is a more readable version of this command:
$ docker run -it --link <container_name>:<image_name> --rm <image_name> sh -c 'exec mysql -h"<container_ip_address>" -P"<mysql_port_number>" -u"<mysql_username>" -p"<mysql_password>"'


Now, lets use an example to explain how to find all the variables.

1. Get container_name, image_name, mysql_port_number:

$ docker ps





We can get:

container_name: romuiweb_db_1

image_name: mysql

container_port_number: 3306

2. Get container_ip_address:

$ docker inspect –format ‘{{ .NetworkSettings.IPAddress }}’ <container_id>





3. Get mysql_username, mysql_password:

When we start the mysql image, we set environment variables to decide the username and password.

username is default to root.

password is set by MYSQL_ROOT_PASSWORD, and we can find it in docker-compose.yml file:





So we can get:

mysql_username: root,

mysql_password: password.

4. Create the real command:

Now we have all the values of the variables. We can construct the real command:

$ docker run -it --link romuiweb_db_1:mysql --rm mysql sh -c 'exec mysql -h"172.17.0.2" -P"3306" -u"root" -p"password"'

5. Run the command, gain access to MySQL:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息