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

来源:互联网 发布:网络乞丐伴奏 编辑:程序博客网 时间:2024/05/21 17:51

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

1

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>

1


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:

1

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:

1

0 0