diff --git a/tutor/templates/hooks/mysql/init b/tutor/templates/hooks/mysql/init
index e545a2af03431053aa3fa6e103248b2a462c3427..91d327f5004507cbc6ed6734208e5c8481105ec0 100644
--- a/tutor/templates/hooks/mysql/init
+++ b/tutor/templates/hooks/mysql/init
@@ -1 +1,18 @@
-echo "Nothing to do on MySQL..."
+echo "Initialising MySQL..."
+mysql_connection_max_attempts=10
+mysql_connection_attempt=0
+until mysql -u root --password="{{ MYSQL_ROOT_PASSWORD }}" --host "{{ MYSQL_HOST }}" --port {{ MYSQL_PORT }} -e 'exit'
+do
+    mysql_connection_attempt=$(expr $mysql_connection_attempt + 1)
+    echo "    [$mysql_connection_attempt/$mysql_connection_max_attempts] Waiting for MySQL service (this may take a while)..."
+    if [ $mysql_connection_attempt -eq $mysql_connection_max_attempts ]
+    then
+      echo "MySQL initialisation error" 1>&2
+      exit 1
+    fi
+    sleep 10
+done
+echo "MySQL is up and running"
+
+mysql -u root --password="{{ MYSQL_ROOT_PASSWORD }}" --host "{{ MYSQL_HOST }}" --port {{ MYSQL_PORT }} -e 'CREATE DATABASE IF NOT EXISTS {{ OPENEDX_MYSQL_DATABASE }};'
+mysql -u root --password="{{ MYSQL_ROOT_PASSWORD }}" --host "{{ MYSQL_HOST }}" --port {{ MYSQL_PORT }} -e 'GRANT ALL ON {{ OPENEDX_MYSQL_DATABASE }}.* TO "{{ OPENEDX_MYSQL_USERNAME }}"@"%" IDENTIFIED BY "{{ OPENEDX_MYSQL_PASSWORD }}";'
\ No newline at end of file