Skip to content

Commit b9463a4

Browse files
committed
Fix idempotency with create-user-db command to allow changing password
1 parent 3213a64 commit b9463a4

File tree

2 files changed

+12
-1
lines changed

2 files changed

+12
-1
lines changed

commands/create-user-db

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,9 @@ if [ "$CREATE_DB" == 'true' ]; then
3434
echo "CREATE DATABASE IF NOT EXISTS ${NEW_NAME};" | $MYSQL
3535
fi
3636
# Create user first (MySQL 8 compatible)
37-
echo "CREATE USER ${NEW_NAME}@'%' IDENTIFIED BY '$NEW_PASS';" | $MYSQL
37+
echo "CREATE USER IF NOT EXISTS ${NEW_NAME}@'%' IDENTIFIED BY '$NEW_PASS';" | $MYSQL
38+
# Change the password if the user already existed
39+
echo "ALTER USER ${NEW_NAME}@'%' IDENTIFIED BY '$NEW_PASS';" | $MYSQL
3840
# Specifiy the exact permissions. NB. This is also RDS compatible as GRANT ALL not possible.
3941
echo "GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, REFERENCES, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EXECUTE, EVENT, TRIGGER ON ${NEW_NAME}.* TO ${NEW_NAME}@'%';" | $MYSQL
4042

tests/test.sh

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,15 @@ docker run -d --name mariadb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password ${MARI
3737
docker run -i --name $TEST_NAME --link mariadb -e BACKUP_DIR=/backup $TEST_CONTAINER create-user-db foo foopass
3838
cleanup mariadb $TEST_NAME
3939

40+
echo "=> Test create-user-db command (idempotency / password change)"
41+
docker run -d --name mariadb -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password ${MARIADB_IMAGE}:${MARIADB_TAG} > /dev/null
42+
docker run -i --name $TEST_NAME --link mariadb $TEST_CONTAINER create-user-db foo origpass && cleanup $TEST_NAME
43+
# password should be changed
44+
docker run -i --name $TEST_NAME --link mariadb $TEST_CONTAINER create-user-db foo changedpass && cleanup $TEST_NAME
45+
echo "SHOW VARIABLES LIKE 'version';" | docker run -i --name $TEST_NAME --link mariadb -e DATABASE_USER=foo -e DATABASE_PASS=changedpass $TEST_CONTAINER mysql
46+
cleanup $TEST_NAME
47+
cleanup mariadb $TEST_NAME
48+
4049
echo "=> Test import command"
4150
mkdir -p /tmp/data
4251
(

0 commit comments

Comments
 (0)