MySQL 8 client for export and import databases easily using Docker.
This is a Linux Docker image using the latest Debian 12-slim (Bookworm).
Note: If you are looking for a MariaDB Client then go to Alpine MySQL Client project.
🐳 View on Docker Hub
myisam_ftdump
mysql
mysql_config_editor
mysql_exporter
mysql_importer
mysqladmin
mysqlcheck
mysqldump
mysqldumpslow
mysqlimport
mysqlpump
mysqlshow
mysqlslapFor more details see the official MySQL 8 Client Programs documentation.
docker run -it --rm joseluisq/mysql-client mysql --version
# mysql  Ver 8.0.43 for Linux on x86_64 (MySQL Community Server - GPL)- The default user (unprivileged) is mysql.
- mysqlhome directory is located at- /home/mysql.
- If you want a fully privileged user try root. E.g. append a--user rootargument todocker run.
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). If- falseor not defined then the exported file will be a- .sqlfile.
- DB_ARGS: can be used to pass more- mysqldumparguments (optional).
- A .envexample file can be found at ./8.0/env/mysql_exporter.env
The following Docker commands create a container to export a database and then remove the container automatically.
Note that mysql_exporter supports environment variables or a .env file can be passed as an argument.
docker run --rm -it \
    --volume $PWD:/home/mysql/sample \
    --user $(id -u $USER):$(id -g $USER) \
    --workdir /home/mysql/sample \
        joseluisq/mysql-client:8 \
        mysql_exporter production.env
# MySQL 8 Client - Exporter
# =========================
# mysqldump  Ver 8.0.43 for Linux on x86_64 (MySQL Community Server - GPL)
# Exporting database `mydb` into a SQL script file...
# Output file: database_name.sql (SQL Text)
# mysqldump: [Warning] Using a password on the command line interface can be insecure.
# Database `mydb` was exported on 0s successfully!
# File exported: database_name.sql (4.0K / SQL Text)Notes:
- --volume $PWD:/home/mysql/samplespecifies a bind mount directory from the host to the container.
- $PWDis just an example host working directory. Use your path.
- /home/mysql/is the default home directory user (optional). View the User privileges section above.
- /home/mysql/sampleis a container directory that Docker will create for us.
- --workdir /home/mysql/samplespecifies the working directory used by default inside the container.
- production.envis a custom env file path with the corresponding environment variables passed as arguments. That file should be available in your host working directory. E.g- $PWDin this case.
version: "3.3"
services:
  exporter:
    image: joseluisq/mysql-client:8
    env_file: .env
    command: mysql_exporter
    working_dir: /home/mysql/sample
    volumes:
      - ./:/home/mysql/sample
    networks:
      - defaultmysql_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 that mysql_importer supports environment variables or a .env file can be passed as an argument.
docker run --rm -it \
    --volume $PWD:/home/mysql/sample \
    --user $(id -u $USER):$(id -g $USER) \
    --workdir /home/mysql/sample \
        joseluisq/mysql-client:8 \
        mysql_importer production.env
# MySQL 8 Client - Importer
# =========================
# mysql  Ver 8.0.43 for Linux on x86_64 (MySQL Community Server - GPL)
# Importing a SQL script file into database `mydb`...
# Input file: database_name.sql (4.0K / SQL Text)
# mysql: [Warning] Using a password on the command line interface can be insecure.
# Database `mydb` was imported on 1s successfully!Notes:
- DB_IMPORT_GZIP=true: Decompress a dump file using Gzip (optional). If- falseor not defined then the import file will be treated as a plain- .sqlfile.
- DB_ARGS: can be used to pass more- mysqlarguments (optional).
- A .envexample file can be found at ./8.0/env/mysql_importer.env
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in current work by you, as defined in the Apache-2.0 license, shall be dual licensed as described below, without any additional terms or conditions.
Feel free to send some pull request or file some issue.
This work is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).
© 2022-present Jose Quintana