Giter Club home page Giter Club logo

docker-mysql-client's Introduction

Docker MySQL 8 Client

devel Docker Image Size Docker Image Version Docker Pulls

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

MySQL 8 Client programs

myisam_ftdump
mysql
mysql_config_editor
mysql_exporter
mysql_importer
mysqladmin
mysqlcheck
mysqldump
mysqldumpslow
mysqlimport
mysqlpump
mysqlshow
mysqlslap

For more details see the official MySQL 8 Client Programs documentation.

Usage

docker run -it --rm joseluisq/mysql-client mysql --version
# mysql  Ver 8.0.36 for Linux on x86_64 (MySQL Community Server - GPL)

User privileges

  • The 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 to docker run.

Exporter

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.

Setup via environment variables

# 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 false or not defined then the exported file will be a .sql file.
  • DB_ARGS: can be used to pass more mysqldump arguments (optional).
  • A .env example file can be found at ./8.0/env/mysql_exporter.env

Export a database using a Docker container

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.28 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/sample specifies a bind mount directory from the host to the container.
  • $PWD is 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/sample is a container directory that Docker will create for us.
  • --workdir /home/mysql/sample specifies the working directory used by default inside the container.
  • production.env is 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 $PWD in this case.

Export a database using a Docker Compose file

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:
      - default

Importer

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.

Setup via environment variables

# 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=

Import a SQL script via a Docker container

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.28 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 false or not defined then the import file will be treated as a plain .sql file.
  • DB_ARGS: can be used to pass more mysql arguments (optional).
  • A .env example file can be found at ./8.0/env/mysql_importer.env

Contributions

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.

License

This work is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0).

ยฉ 2022-present Jose Quintana

docker-mysql-client's People

Contributors

joseluisq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

liuzh-fork

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.