MySQL client (MariaDB Client) for easy export and import databases using Docker.
Note: If you are looking for a MySQL 8 Client then go to Docker MySQL 8 Client project.
🐳 View on Docker Hub
Note: MySQL client (mariadb-client) is an alias package for mysql-client migration tools.
mysql
mysql_find_rows
mysql_waitpid
mysqladmin
mysqldump
mysqlimport
mysql-export
mysql_fix_extensions
mysqlaccess
mysqlcheck
mysqldumpslow
mysqlshow
For more details check it out:
docker run -it --rm joseluisq/alpine-mysql-client mysql --version
# mysql Ver 15.1 Distrib 10.11.8-MariaDB, for Linux (x86_64) using readline 5.1
- Default user (unprivileged) is
mysql
. mysql
home directory is located at/home/mysql
.- If you want a fully privileged user try
root
. E.g. append a--user root
argument todocker run
.
This image comes with some additional tools.
mysql_exporter
is a custom tool that exports a database script using mysqldump
. Additionally, it supports gzip compression.
It can be configured via environment variables or using .env
file.
# Connection settings (optional)
DB_PROTOCOL=tcp
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DEFAULT_CHARACTER_SET=utf8
# GZip export file (optional)
DB_EXPORT_GZIP=false
# SQL or Gzip export file (optional).
# If `DB_IMPORT_GZIP` is `true` then file name should be `database_name.sql.gz`
DB_EXPORT_FILE_PATH=database_name.sql
# Database settings (required)
DB_NAME=""
DB_USERNAME=""
DB_PASSWORD=""
# Additional arguments (optional)
DB_ARGS=
Notes:
DB_EXPORT_GZIP=true
: Compress the SQL file using Gzip (optional). Iffalse
or not defined then the exported file will be a.sql
file.DB_ARGS
: can be used to pass moremysqldump
arguments (optional).- A
.env
example file can be found at ./mysql_exporter.env
The following Docker commands create a container to export a database and then remove such container automatically.
Note: mysql_exporter
supports environment variables or a .env
file passed as an argument.
docker run --rm -it \
--user $(id -u $USER):$(id -g $USER) \
--volume $PWD:/home/mysql/sample \
--workdir /home/mysql/sample \
joseluisq/alpine-mysql-client:1 \
mysql_exporter production.env
# Alpine / MySQL Client - Exporter
# ================================
# mysqldump Ver 10.17 Distrib 10.4.12-MariaDB, for Linux (x86_64)
# Exporting database `mydb` into a SQL script file...
# Output file: mydb.sql.gz (SQL GZipped)
# Database `mydb` was exported on 0s successfully!
# File exported: mydb.sql.gz (10M / SQL GZipped)
Notes:
--volume $PWD:/home/mysql/sample
specificy a bind mount directory from host to container.$PWD
is just my host working directory. Use your own path./home/mysql/
is the default home directory user (optional). View User privileges section above./home/mysql/sample
is a container directory that Docker will create for us.--workdir /home/mysql/sample
specificies the working directory used by default inside the container.production.env
is a custom env file path with the corresponding environment variables passed as argument. That file shoud available in your host working directory. E.g$PWD
in my case.
version: "3.3"
services:
exporter:
image: joseluisq/alpine-mysql-client:1
env_file: .env
command: mysql_exporter
working_dir: /home/mysql/sample
volumes:
- ./:/home/mysql/sample
networks:
- default
mysql_importer
is a custom tool that imports a SQL script file (text or Gzip) using mysql
command.
It can be configured via environment variables or using .env
file.
# Connection settings (optional)
DB_PROTOCOL=tcp
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DEFAULT_CHARACTER_SET=utf8
# GZip import support (optional)
DB_IMPORT_GZIP=false
# SQL or Gzip import file (required)
# If `DB_IMPORT_GZIP` is `true` then file name should be `database_name.sql.gz`
DB_IMPORT_FILE_PATH=database_name.sql
# Database settings (required)
DB_NAME=""
DB_USERNAME=""
DB_PASSWORD=""
# Additional arguments (optional)
DB_ARGS=
The following Docker commands create a container to import an SQL script file to a specific database and remove the container afterward.
Note: mysql_importer
supports environment variables or a .env
file passed as an argument.
docker run --rm -it \
--user $(id -u $USER):$(id -g $USER) \
--volume $PWD:/home/mysql/sample \
--workdir /home/mysql/sample \
joseluisq/alpine-mysql-client:1 \
mysql_importer production.env
# Alpine / MySQL Client - Importer
# ================================
# mysql Ver 15.1 Distrib 10.4.12-MariaDB, for Linux (x86_64) using readline 5.1
# Importing a SQL script file into database `dbtesting`...
# Input file: mydb.sql.gz (10M / SQL GZipped)
# Database `dbtesting` was imported on 1s successfully!
Feel free to send a pull request or file some issues.
MIT license
© 2020-present Jose Quintana