Improve createdb step to take various arguments making createdb_utf8mb4 obsolete
This commit is contained in:
101
seqs/mysql.sh
101
seqs/mysql.sh
@@ -4,6 +4,9 @@
|
|||||||
|
|
||||||
databaseName="mariadb"
|
databaseName="mariadb"
|
||||||
databasePackages="mariadb-server mariadb-client"
|
databasePackages="mariadb-server mariadb-client"
|
||||||
|
dbName=
|
||||||
|
dbUser=
|
||||||
|
dbPass=
|
||||||
|
|
||||||
step_1_info() {
|
step_1_info() {
|
||||||
echo "Installation of ${databaseName} packages:"
|
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"
|
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 <utf8mb4> : 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_alias() { ALIAS="createdb"; }
|
||||||
step_10() {
|
step_10() {
|
||||||
local mysqlDatabase
|
local arg
|
||||||
local mysqlUser
|
local dbOption=
|
||||||
local mysqlPass
|
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
case "$dbOption" in
|
||||||
|
utf8mb4)
|
||||||
|
dbOption="CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -z "$dbName" ] ; then
|
||||||
echo " [I] Existing mysql databases:"
|
echo " [I] Existing mysql databases:"
|
||||||
exe mysql -u root -e 'SHOW DATABASES;'
|
exe mysql -u root -e 'SHOW DATABASES;'
|
||||||
|
|
||||||
read -p "Enter database name: " mysqlDatabase
|
read -p "Enter database name: " dbName
|
||||||
endCheckEmpty mysqlDatabase "database name"
|
fi
|
||||||
exe mysql -u root -e 'CREATE DATABASE '$mysqlDatabase';'
|
endCheckEmpty dbName "database name"
|
||||||
endReturn -o $? "Cannot create database $mysqlDatabase"
|
exe mysql -u root -e 'CREATE DATABASE '$dbName' '"$dbOption"';'
|
||||||
|
endReturn -o $? "Cannot create database $dbName"
|
||||||
|
|
||||||
|
if [ -z "$dbUser" ] ; then
|
||||||
echo " [I] Existing mysql user:"
|
echo " [I] Existing mysql user:"
|
||||||
exe mysql -u root -e 'SELECT User, Host FROM mysql.user;'
|
exe mysql -u root -e 'SELECT User, Host FROM mysql.user;'
|
||||||
read -p "Enter mysql user name: " mysqlUser
|
read -p "Enter mysql user name: " dbUser
|
||||||
endCheckEmpty mysqlUser "user name"
|
fi
|
||||||
|
endCheckEmpty dbUser "user name"
|
||||||
|
|
||||||
if ! echo "SELECT COUNT(*) FROM mysql.user WHERE user = '$mysqlUser';" | mysql | grep 1 &>/dev/null; then
|
if ! echo "SELECT COUNT(*) FROM mysql.user WHERE user = '$dbUser';" | mysql | grep 1 &>/dev/null; then
|
||||||
# User does not exist
|
# User does not exist
|
||||||
read -s -p "Enter mysql user password: " mysqlPass
|
read -s -p "Enter mysql user password: " dbPass
|
||||||
endCheckEmpty mysqlPass "password"
|
endCheckEmpty dbPass "password"
|
||||||
exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';'
|
exe mysql -u root -e 'CREATE USER '"'"$dbUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$dbPass"'"';'
|
||||||
endReturn -o $? "Error creating mysql user"
|
endReturn -o $? "Error creating mysql user"
|
||||||
fi
|
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;'
|
|
||||||
}
|
|
||||||
|
|
||||||
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'"'"';'
|
|
||||||
endReturn -o $? "Error assigning privileges on database"
|
endReturn -o $? "Error assigning privileges on database"
|
||||||
|
|
||||||
exe mysql -u root -e 'FLUSH PRIVILEGES;'
|
exe mysql -u root -e 'FLUSH PRIVILEGES;'
|
||||||
|
Reference in New Issue
Block a user