From 505065bb3e7f6ceac24632bd3dbacc1f5ea1f3e3 Mon Sep 17 00:00:00 2001 From: Martin Winkler Date: Tue, 16 Feb 2021 22:59:23 +0100 Subject: [PATCH] Improve createdb step to take various arguments making createdb_utf8mb4 obsolete --- seqs/mysql.sh | 109 +++++++++++++++++++++++++------------------------- 1 file changed, 55 insertions(+), 54 deletions(-) diff --git a/seqs/mysql.sh b/seqs/mysql.sh index a0b5a7c..6e7f3e9 100755 --- a/seqs/mysql.sh +++ b/seqs/mysql.sh @@ -4,6 +4,9 @@ databaseName="mariadb" databasePackages="mariadb-server mariadb-client" +dbName= +dbUser= +dbPass= step_1_info() { echo "Installation of ${databaseName} packages:" @@ -49,70 +52,68 @@ step_8() { exep "curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --skip-maxscale --skip-tools" } -step_10_info() { echo "Create mysql database without specific characterset"; } +step_10_info() { + echo "Create mysql database without specific characterset [OPTIONS]" + echoinfo " [OPTIONS]" + echoinfo " --charset,-c : character set and collate" + echoinfo " --database, -d : database name" + echoinfo " --user, -u : user name" + echoinfo " Manual password entry for non existing user" +} step_10_alias() { ALIAS="createdb"; } step_10() { - local mysqlDatabase - local mysqlUser - local mysqlPass + local arg + local dbOption= + + shift + for arg in "$@" ; do + case "$1" in + --charset|-c) + dbOption="$2" + shift 2;; + --database|-d) + dbName="$2" + shift 2 ;; + --user|-u) + dbUser="$2" + shift 2 ;; + *) + break ;; + esac + done - echo " [I] Existing mysql databases:" - exe mysql -u root -e 'SHOW DATABASES;' + case "$dbOption" in + utf8mb4) + dbOption="CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci" + ;; + esac - read -p "Enter database name: " mysqlDatabase - endCheckEmpty mysqlDatabase "database name" - exe mysql -u root -e 'CREATE DATABASE '$mysqlDatabase';' - endReturn -o $? "Cannot create database $mysqlDatabase" + if [ -z "$dbName" ] ; then + echo " [I] Existing mysql databases:" + exe mysql -u root -e 'SHOW DATABASES;' - echo " [I] Existing mysql user:" - exe mysql -u root -e 'SELECT User, Host FROM mysql.user;' - read -p "Enter mysql user name: " mysqlUser - endCheckEmpty mysqlUser "user name" + read -p "Enter database name: " dbName + fi + endCheckEmpty dbName "database name" + exe mysql -u root -e 'CREATE DATABASE '$dbName' '"$dbOption"';' + endReturn -o $? "Cannot create database $dbName" - if ! echo "SELECT COUNT(*) FROM mysql.user WHERE user = '$mysqlUser';" | mysql | grep 1 &>/dev/null; then + if [ -z "$dbUser" ] ; then + echo " [I] Existing mysql user:" + exe mysql -u root -e 'SELECT User, Host FROM mysql.user;' + read -p "Enter mysql user name: " dbUser + fi + endCheckEmpty dbUser "user name" + + if ! echo "SELECT COUNT(*) FROM mysql.user WHERE user = '$dbUser';" | mysql | grep 1 &>/dev/null; then # User does not exist - read -s -p "Enter mysql user password: " mysqlPass - endCheckEmpty mysqlPass "password" - exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';' + read -s -p "Enter mysql user password: " dbPass + endCheckEmpty dbPass "password" + exe mysql -u root -e 'CREATE USER '"'"$dbUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$dbPass"'"';' endReturn -o $? "Error creating mysql user" fi - exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';' - endReturn -o $? "Error assigning privileges on database" - - exe mysql -u root -e 'FLUSH PRIVILEGES;' -} - -step_12_info() { echo -e "Create mysql database with characterset utf8mb4\n"; } -step_12_alias() { ALIAS="createdb_utf8mb4"; } -step_12() { - local mysqlDatabase - local mysqlUser - local mysqlPass - - echo "Existing mysql databases:" - exe mysql -u root -e 'SHOW DATABASES;' - - read -p "Enter database name: " mysqlDatabase - endCheckEmpty mysqlDatabase "database name" - # it is recommended NOT to use utf8mb4_general_ci anymore - exe mysql -u root -e 'CREATE DATABASE '$mysqlDatabase' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;' - endReturn -o $? "Cannot create database $mysqlDatabase" - - echo "Existing mysql user:" - exe mysql -u root -e 'SELECT User, Host FROM mysql.user;' - read -p "Enter mysql user name: " mysqlUser - endCheckEmpty mysqlUser "user name" - - if ! echo "SELECT COUNT(*) FROM mysql.user WHERE user = '$mysqlUser';" | mysql | grep 1 &>/dev/null; then - # User does not exist - read -s -p "Enter mysql user password: " mysqlPass - endCheckEmpty mysqlPass "password" - exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';' - endReturn -o $? "Error creating mysql user" - fi - - exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';' + exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$dbName'.* TO '"'"$dbUser"'"'@'"'"'localhost'"'"';' endReturn -o $? "Error assigning privileges on database" exe mysql -u root -e 'FLUSH PRIVILEGES;'