[Docker][MariaDB] hostname problem in docker mariadb container

docker hostname problem

When I create a container from mariadb image, setting hostname in docker run... prevents root account to login.

docker run (has problem)

docker run ...
docker run --detach \ --name app-db \ ...skip ... --hostname app-db-host \ mariadb:10.6
  • --hostname specified

Then, diving into the container using docker exec...

BASH
$ docker exec -it app-db bash root@app-db-host:/#

When trying to log in mysql, valid username and password is not working because current hostname is not localhost, but app-db-host.

BASH
root@app-db-host:/# mysql -uroot -p Enter password: (here valid password input) Error 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
  • localhost is required, but app-db-host

docker run with MARIADB_ROOT_HOST

If --hostname is specified in docker run..., this value should be specified to mariadb environment variable, too.

docker run ...
docker run --detach \ --name app-db \ --hostname app-db-host \ --env MARIADB_ROOT_HOST=app-db-host \ mariadb:10.6
  • custom hostname app-db-host to root hostname in mariadb container

It creates a row in table user like this.

TXT
MariaDB [mysql]> select Host, User from user; +-------------+-------------+ | Host | User | +-------------+-------------+ | % | appuser | | localhost | mariadb.sys | | localhost | root | | app-db-host | root | +-------------+-------------+