MariaDB Container Cheat Sheet

$ docker images ls
  • Create the network
$ docker network create mynetwork

It is good practice to create the Docker network and attach the container to the network.

  • Start the container with server options
    To start the container in the background with the MariaDB server image run:
$ docker run --rm --detach \
--env MARIADB_ROOT_PASSWORD=sosecret \
--network mynetwork \
--name mariadb-server \
mariadb:latest

Additionally environment variables are also provided.

  • Get the list of running containers (specify the flag -a in case you want to see all containers)
$ docker ps
CONTAINER ID   IMAGE            COMMAND                  CREATED          STATUS          PORTS      NAMES
ad374ec8a272   mariadb:latest   "docker-entrypoint.s…"   3 seconds ago    Up 1 second     3306/tcp   mariadb-server
  • Start the client from the container

To start the mariadb client inside the created container and run specific commands, run the following:

$ docker exec -it mariadb-server mariadb -psosecret -e "SHOW PLUGINS"
  • Inspect logs from the container
$ docker logs mariadb-server

In the logs you can find status information about the server, plugins, generated passwords, errors and so on.

  • Restart the container
$ docker restart mariadb-server
  • Run commands within the container
$ docker exec -it mariadb-server bash
  • Use a volume to specify configuration options
$ docker run --detach --env MARIADB_USER=anel \
  --env MARIADB_PASSWORD=anel \
  --env MARIADB_DATABASE=my_db \
  --env MARIADB_RANDOM_ROOT_PASSWORD=1 \
  --volume $PWD/my_container_config:/etc/mysql/conf.d:z \
  --network mynetwork \
  --name mariadb-server1 \
   mariadb:latest 

One can specify custom configuration files through the /etc/mysql/conf.d volume during container startup.

  • Use a volume to specify grants during container start
$ docker run --detach --env MARIADB_USER=anel\
  --env MARIADB_PASSWORD=anel \
  --env MARIADB_DATABASE=my_db \
  --env MARIADB_RANDOM_ROOT_PASSWORD=1 \
  --volume $PWD/my_init_db:/docker-entrypoint-initdb.d \
  --network mynetwork \
  --name mariadb-server1 \
   mariadb:latest 

User created with the environment variables has full grants only to the MARIADB_DATABASE. In order to override those grants, one can specify grants to a user, or execute any SQL statements from host file to docker-entrypoint-initdb.d. In the local_init_dir directory we can find the file, created like this:

$ echo "GRANT ALL PRIVILEGES ON *.* TO anel;" > my_init_db/my_grants.sql

See Also

Comments

Comments loading...
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.