If you want to set up a MySQL database to store data for websites, blogs, or applications, you can use a Docker container. It’s relatively simple to do. And like shuffling a deck of cards, reversing a string in Python, or writing a recursive function, it’s a suitable exercise for beginners just starting out with MySQL and backend web development.
Let’s take a look at exactly what a Docker container is, and how you can use it to set up MySQL.
What Is a Docker Container?
A Docker container is a self-contained software development environment that includes all of the necessary components to run an application. This can include the application code, libraries, and other dependencies.
Containers are isolated from one another and from the host operating system, so they can’t interfere with or access other containers or the host OS. This makes them ideal for packaging and deploying applications.
Docker containers are created using a Docker image. This is simply a template for creating a container. You can create your own Docker images or use images that others have created. When you create a container from a Docker image, you can customize it by adding your own files, settings, and applications.
In this tutorial, we will be looking at how to set up MySQL in a Docker container.
Please note that commands might be different based on the OS installed. This example was made using an Arch Linux-based operating system and MySQL 8.0.
Step 1. Install Docker
If you haven’t already, install Docker. First, ensure that the OS install is up to date with the following command in a new terminal window.
$ sudo pacman -Syu
Once it has been verified that the system is up to date, install Docker.
$ sudo pacman -S docker
Step 2. Install MySQL in Docker
Start the Docker service and run the command “Docker images” to check if MySQL is currently installed.
[root@docker ~]# docker images
The Newsletter for PHP and MySQL Developers
Receive a copy of my ebook, “10 MySQL Tips For Everyone”, absolutely free when you subscribe to the OpenLampTech newsletter.
Step 3. Start a MySQL Server Instance
MySQL can be run as an instance. Use -d to run the container in detached mode and name the Docker container. MySQL uses the port 3600:3306 by default. Be sure to set the password for the database. For this example, it’s simply set to “password.”
[root@docker ~]# docker container run -d --name mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql:latest
As mysql:latest is not available locally, this command will begin to download the latest version of MySQL available.
Check with the command “Docker ps” that the MySQL container is running.
[root@docker ~]# docker ps
This command should show the container ID, and the ports the MySQL container is running on.
Sample output:
CONTAINER ID IMAGE NAMES COMMAND CREATED STATUS PORTS 6bcd1d829631 mysql:latest "docker-entrypoint..." 5 seconds ago Up 3 seconds 0.0.0:3306->3306/tcp, 33060/tcp
Step 4. SSH into MySQL Container
Now, we’ll need to SSH into the MySQL container with the “Docker exec” command, which is a command that runs new commands in a running container. We have verified in Step 2 that the container is running. After this, we will need to log into MySQL to create a new database.
[root@docker ~]# docker exec -it mysqldb bash
Log into the MySQL container using the password created when the container was made in Step 2, here our password is “password.” Also, ensure there is no space after -p since everything after -p is part of the inputted password.
[root@6bcd1d829631]# mysql -u root -ppassword
When issuing this command you’ll commonly encounter a warning that using a password on the command line is insecure. To get around this warning message, use the mysql_config_editor tools.
Step 5. Make a Database
Now that we are in MySQL, use the command “show databases” to list all of the available databases.
mysql> show databases;
Now create a database with the “create database” command and a name for the database. For this example, we’ll use the name “newdatabasename.”
mysql> create database newdatabasename
If we use the command “show databases” the new database should now appear in the list. See the below sample output.
+------------------------------+ | Database | +------------------------------+ | information_schema | | mysql | | newdatabasename | | performance_schema | | sys | +------------------------------+
This database can easily be deleted with the command “drop database” followed by the name of the database.
mysql> drop database newdatabasename;
Step 6. Install MySQL Workbench
MySQL Workbench is a graphical tool for administration purposes, and it’s available for most operating systems. Be sure to install the version that matches your OS. It can be downloaded from the MySQL website. Note that not all versions of Workbench and MySQL are compatible, so using the most recent versions will help remove compatibility issues.
Conclusion
Docker lets you run isolated containers to improve application performance while MySQL is extremely scalable and commonly used for database management.
Together, they’re a great combo for web developers starting to work with backend web development. If you want to get started with MySQL and Docker, follow the six steps outlined in the post and visit Docker Hub for the latest MySQL images.
Also, subscribe to Digital Owl’s Prose to receive notifications of new blog posts by email when they are published. Feel free to submit suggestions for future articles!
Author Bio
Jody Dascalu
Jody is a freelance writer in the technology niche. She studied in Canada and earned a Bachelor of Engineering. Jody has over five years of progressive supply chain work experience and is currently employed as a business analyst. As an avid reader, she loves to research upcoming technologies and is an expert on a variety of topics.
More ways I can help
- Need hosting for your next web application or WordPress site? I highly recommend Hostinger and use them to host my niche bass fishing site. The service is second to none.
- 🔒5 Truths I’ve Come To Realize As a Self-taught Developer
- Desktop and mobile wallpapers, digital downloads, photography services, Shopify and WooCommerce customizations, and content writing – all in one E-commerce Shop. Find your next digital purchase today!
Disclosure: Some of this blog post’s services and product links are affiliate links. At no additional cost to you, should you make a purchase by clicking through one of them, I will receive a commission.
The Newsletter for PHP and MySQL Developers
Receive a copy of my ebook, “10 MySQL Tips For Everyone”, absolutely free when you subscribe to the OpenLampTech newsletter.
The Newsletter for PHP and MySQL Developers
Receive a copy of my ebook, “10 MySQL Tips For Everyone”, absolutely free when you subscribe to the OpenLampTech newsletter.
Disclosure: Some of this blog post’s services and product links are affiliate links. At no additional cost to you, should you make a purchase by clicking through one of them, I will receive a commission.