bootstrap.sh: support both password and unix_socket access to the database
authorAntonio Ospite <ao2@ao2.it>
Sat, 10 Mar 2018 14:42:52 +0000 (15:42 +0100)
committerAntonio Ospite <ao2@ao2.it>
Fri, 16 Mar 2018 12:11:59 +0000 (13:11 +0100)
libexec/bootstrap.sh
libexec/new.sh

index 8b92f97..e3671c0 100755 (executable)
@@ -75,12 +75,36 @@ declare -p WEB_SERVER_GROUP
 
 [ "x$INSTALLATION_PROFILE" = "x" ] && { echo "INSTALLATION_PROFILE not specified, using the \"standard\" profile!"; INSTALLATION_PROFILE="standard"; }
 
-if [ "x$MYSQL_ROOT_PASSWORD" = "x" ];
+if [ "$MYSQL_PASSWORDLESS_ACCESS" = true ];
 then
-  read -r -s -p "MySQL root password: " MYSQL_ROOT_PASSWORD
-  echo
+  MYSQL_SU_USER="${USER}"
+else
+  # XXX Deprecate MYSQL_ROOT_PASSWORD, it will be removed eventually,
+  # but for now add some backwards compatibility mapping.
+  if [ "x$MYSQL_ROOT_PASSWORD" != "x" ];
+  then
+    echo "WARN: MYSQL_ROOT_PASSWORD is deprecated, use MYSQL_SU_USER and MYSQL_SU_PASSWORD" 1>&2
+    MYSQL_SU_USER="root"
+    MYSQL_SU_PASSWORD="$MYSQL_ROOT_PASSWORD"
+  fi
+
+  if [ "x$MYSQL_SU_USER" = "x" ];
+  then
+    echo "Aborting, for password regulated access specify MYSQL_SU_USER in bootstrap.conf" 1>&2
+    exit 1
+  fi
+
+  if [ "x$MYSQL_SU_PASSWORD" = "x" ];
+  then
+    read -r -s -p "MySQL password for \"${MYSQL_SU_USER}\": " MYSQL_SU_PASSWORD
+    echo
+  fi
+
+  DRUSH_DB_SU_CREDENTIALS=(--db-su-pw'='"${MYSQL_SU_PASSWORD}")
 fi
 
+DRUSH_DB_SU_CREDENTIALS+=(--db-su'='"${MYSQL_SU_USER}")
+
 WEB_ROOT="${PWD}/web"
 
 command -v composer &> /dev/null || { echo "Aborting, 'composer' not available." 1>&2; exit 1; }
@@ -123,8 +147,7 @@ fi
 
 $DRUSH --verbose --yes \
   site-install \
-  --db-su=root \
-  --db-su-pw="$MYSQL_ROOT_PASSWORD" \
+  "${DRUSH_DB_SU_CREDENTIALS[@]}" \
   --db-url="mysql://${DB_USER}:${DB_PASS}@localhost/${DB_NAME}" \
   --site-name="$SITE_NAME" \
   --site-mail="$SITE_MAIL" \
index bc88c00..7c4f1b6 100755 (executable)
@@ -106,7 +106,17 @@ cat > bootstrap.conf <<EOF
 #  "ip6-localhost"
 #  )
 
-#MYSQL_ROOT_PASSWORD="password"
+# See the 'drin' man page for details about database access.
+
+# Set MYSQL_PASSWORDLESS_ACCESS to 'true' if the database is configured to
+# allow administrative password-less access to the user who will execute the
+# 'drin boostrap' command.
+#MYSQL_PASSWORDLESS_ACCESS=true
+
+# If, instead,  administrative access requires a password, uncomment and
+# change the values of the following variables.
+#MYSQL_SU_USER='root'
+#MYSQL_SU_PASSWORD='password'
 EOF
 
 cat > .gitignore <<EOF