# repro case and workaround for https://jira.mariadb.org/browse/MDEV-17852 myimage=mariadb:10.2.19@sha256:8263e0a4a69ee6defdea16c48ed2c2243f086a5fed3febb2d062e6e938dc7c96 docker run -d --rm --name mysql -e MYSQL_ROOT_HOST=localhost -e MYSQL_ALLOW_EMPTY_PASSWORD=yes $myimage # Wait for startup, then create test user docker logs -f mysql docker exec mysql mysql -e 'CREATE USER foo WITH MAX_USER_CONNECTIONS 1; GRANT SHOW DATABASES, SELECT ON *.* TO foo;' # In another terminal: keep a connection open docker run --rm -ti --name mysql-conn1 --entrypoint mysql $myimage mysql -u foo -h $(docker inspect mysql | jq -r '.[].NetworkSettings.IPAddress') # Try a second connection, fails docker run --rm --name mysql-conn2 --entrypoint mysql $myimage mysql -u foo -h $(docker inspect mysql | jq -r '.[].NetworkSettings.IPAddress') -e 'SELECT CURRENT_USER();' # Alter, but after this a second connection still fails docker exec mysql mysql -e 'ALTER USER foo WITH MAX_USER_CONNECTIONS 2;' docker run --rm --name mysql-conn2 --entrypoint mysql $myimage mysql -u foo -h $(docker inspect mysql | jq -r '.[].NetworkSettings.IPAddress') -e 'SELECT CURRENT_USER();' # Flush privileges, connection works now docker exec mysql mysql -e 'FLUSH PRIVILEGES;' docker run --rm --name mysql-conn2 --entrypoint mysql $myimage mysql -u foo -h $(docker inspect mysql | jq -r '.[].NetworkSettings.IPAddress') -e 'SELECT CURRENT_USER();' # The same for MAX_CONNECTIONS_PER_HOUR docker exec mysql mysql -e 'CREATE USER bar WITH MAX_CONNECTIONS_PER_HOUR 1; GRANT SHOW DATABASES, SELECT ON *.* TO bar;' docker run --rm --name mysql-conn2 --entrypoint mysql $myimage mysql -u bar -h $(docker inspect mysql | jq -r '.[].NetworkSettings.IPAddress') -e 'SELECT CURRENT_USER();' # Next attempt fails docker run --rm --name mysql-conn2 --entrypoint mysql $myimage mysql -u bar -h $(docker inspect mysql | jq -r '.[].NetworkSettings.IPAddress') -e 'SELECT CURRENT_USER();' # Grant more connections this hour, no effect docker exec mysql mysql -e 'ALTER USER foo WITH MAX_CONNECTIONS_PER_HOUR 2;' docker run --rm --name mysql-conn2 --entrypoint mysql $myimage mysql -u bar -h $(docker inspect mysql | jq -r '.[].NetworkSettings.IPAddress') -e 'SELECT CURRENT_USER();' # Flush privileges, works docker exec mysql mysql -e 'FLUSH PRIVILEGES;' docker run --rm --name mysql-conn2 --entrypoint mysql $myimage mysql -u bar -h $(docker inspect mysql | jq -r '.[].NetworkSettings.IPAddress') -e 'SELECT CURRENT_USER();'