Multiple enhancements about database creation
New steps to revoke and show privileges
This commit is contained in:
169
seqs/mysql.sh
169
seqs/mysql.sh
@@ -6,6 +6,7 @@ databaseName="mariadb"
|
|||||||
databasePackages="mariadb-server mariadb-client"
|
databasePackages="mariadb-server mariadb-client"
|
||||||
dbName=
|
dbName=
|
||||||
dbUser=
|
dbUser=
|
||||||
|
dbRemote=localhost
|
||||||
dbPass=
|
dbPass=
|
||||||
|
|
||||||
step_1_info() {
|
step_1_info() {
|
||||||
@@ -58,8 +59,10 @@ step_10_info() {
|
|||||||
echoinfo " [OPTIONS]"
|
echoinfo " [OPTIONS]"
|
||||||
echoinfo " --charset,-c <utf8|utf8mb4> : character set and collate"
|
echoinfo " --charset,-c <utf8|utf8mb4> : character set and collate"
|
||||||
echoinfo " --database, -d : database name"
|
echoinfo " --database, -d : database name"
|
||||||
|
echoinfo " [OPTIONS] used in following steps"
|
||||||
echoinfo " --user, -u : user name"
|
echoinfo " --user, -u : user name"
|
||||||
echoinfo " Manual password entry for non existing user"
|
echoinfo " Manual password entry for non existing user"
|
||||||
|
echoinfo " --remote, -r : ip of allowed remote host"
|
||||||
}
|
}
|
||||||
step_10_alias() { ALIAS="createdb"; }
|
step_10_alias() { ALIAS="createdb"; }
|
||||||
step_10() {
|
step_10() {
|
||||||
@@ -78,6 +81,9 @@ step_10() {
|
|||||||
--user|-u)
|
--user|-u)
|
||||||
dbUser="$2"
|
dbUser="$2"
|
||||||
shift 2 ;;
|
shift 2 ;;
|
||||||
|
--remote|-r)
|
||||||
|
dbRemote="$2"
|
||||||
|
shift 2 ;;
|
||||||
*)
|
*)
|
||||||
break ;;
|
break ;;
|
||||||
esac
|
esac
|
||||||
@@ -101,6 +107,39 @@ step_10() {
|
|||||||
endCheckEmpty dbName "database name"
|
endCheckEmpty dbName "database name"
|
||||||
exe mysql -u root -e 'CREATE DATABASE '$dbName' '"$dbOption"';'
|
exe mysql -u root -e 'CREATE DATABASE '$dbName' '"$dbOption"';'
|
||||||
endReturn -o $? "Cannot create database $dbName"
|
endReturn -o $? "Cannot create database $dbName"
|
||||||
|
}
|
||||||
|
|
||||||
|
step_11_info() {
|
||||||
|
echoinfoArgs "[OPTIONS]"
|
||||||
|
echo "Create mysql user"
|
||||||
|
echoinfo " [OPTIONS]"
|
||||||
|
echoinfo " --user, -u : user name"
|
||||||
|
echoinfo " with manual password entry for non existing user"
|
||||||
|
echoinfo " --remote, -r : ip of allowed remote host"
|
||||||
|
}
|
||||||
|
step_11_alias() { ALIAS="createuser"; }
|
||||||
|
step_11() {
|
||||||
|
local arg
|
||||||
|
|
||||||
|
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 ;;
|
||||||
|
--remote|-r)
|
||||||
|
dbRemote="$2"
|
||||||
|
shift 2 ;;
|
||||||
|
*)
|
||||||
|
break ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
if [ -z "$dbUser" ] ; then
|
if [ -z "$dbUser" ] ; then
|
||||||
echo " [I] Existing mysql user:"
|
echo " [I] Existing mysql user:"
|
||||||
@@ -109,40 +148,136 @@ step_10() {
|
|||||||
fi
|
fi
|
||||||
endCheckEmpty dbUser "user name"
|
endCheckEmpty dbUser "user name"
|
||||||
|
|
||||||
if ! echo "SELECT COUNT(*) FROM mysql.user WHERE user = '$dbUser';" | mysql | grep 1 &>/dev/null; then
|
if ! echo "SELECT COUNT(*) FROM mysql.user WHERE user = '$dbUser' AND host = '$dbRemote';" | mysql | grep 1 &>/dev/null; then
|
||||||
# User does not exist
|
# User does not exist
|
||||||
|
if [ $DRY -eq 0 ]; then
|
||||||
read -s -p "Enter mysql user password: " dbPass
|
read -s -p "Enter mysql user password: " dbPass
|
||||||
endCheckEmpty dbPass "password"
|
endCheckEmpty dbPass "password"
|
||||||
exe mysql -u root -e 'CREATE USER '"'"$dbUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$dbPass"'"';'
|
else
|
||||||
|
echoseq "Enter mysql password: ...skipped..."
|
||||||
|
fi
|
||||||
|
exe mysql -u root -e 'CREATE USER '"'"$dbUser"'"'@'"'"$dbRemote"'"' 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 '$dbName'.* TO '"'"$dbUser"'"'@'"'"'localhost'"'"';'
|
step_12_info() {
|
||||||
|
echoinfoArgs "[OPTIONS]"
|
||||||
|
echo "Grant privileges"
|
||||||
|
echoinfo " [OPTIONS]"
|
||||||
|
echoinfo " --database, -d : 'database name'.*"
|
||||||
|
echoinfo " --user, -u : user name"
|
||||||
|
echoinfo " --remote, -r : ip of allowed remote host"
|
||||||
|
}
|
||||||
|
step_12_alias() { ALIAS="grant"; }
|
||||||
|
step_12() {
|
||||||
|
local arg
|
||||||
|
|
||||||
|
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 ;;
|
||||||
|
--remote|-r)
|
||||||
|
dbRemote="$2"
|
||||||
|
shift 2 ;;
|
||||||
|
*)
|
||||||
|
break ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$dbName'.* TO '"'"$dbUser"'"'@'"'"$dbRemote"'"';'
|
||||||
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;'
|
||||||
}
|
}
|
||||||
|
|
||||||
step_14_info() { echo "List mysql databases"; }
|
step_14_info() {
|
||||||
step_14_alias() { ALIAS="listdb"; }
|
echoinfoArgs "[OPTIONS]"
|
||||||
|
echo "Revoke all granted privilegs"
|
||||||
|
echoinfo " [OPTIONS]"
|
||||||
|
echoinfo " --user, -u : user name"
|
||||||
|
echoinfo " --remote, -r : ip of allowed remote host"
|
||||||
|
}
|
||||||
|
step_14_alias() { ALIAS="revokeall"; }
|
||||||
step_14() {
|
step_14() {
|
||||||
|
local arg
|
||||||
|
|
||||||
|
shift
|
||||||
|
for arg in "$@" ; do
|
||||||
|
case "$1" in
|
||||||
|
--user|-u)
|
||||||
|
dbUser="$2"
|
||||||
|
shift 2 ;;
|
||||||
|
--remote|-r)
|
||||||
|
dbRemote="$2"
|
||||||
|
shift 2 ;;
|
||||||
|
*)
|
||||||
|
break ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
exe mysql -u root -e 'REVOKE ALL, GRANT OPTION FROM '"'"$dbUser"'"'@'"'"$dbRemote"'"';'
|
||||||
|
endReturn -o $? "Error revoking privileges for user $dbUser"
|
||||||
|
|
||||||
|
exe mysql -u root -e 'FLUSH PRIVILEGES;'
|
||||||
|
}
|
||||||
|
|
||||||
|
step_30_info() { echo "List mysql databases"; }
|
||||||
|
step_30_alias() { ALIAS="listdb"; }
|
||||||
|
step_30() {
|
||||||
exe mysql -u root -e 'SHOW DATABASES;'
|
exe mysql -u root -e 'SHOW DATABASES;'
|
||||||
echo -e "\nDrop userdb by: mysql -u root -e 'DROP DATABASE userdb;'"
|
echo -e "\nDrop userdb by: mysql -u root -e 'DROP DATABASE userdb;'"
|
||||||
}
|
}
|
||||||
|
|
||||||
step_16_info() { echo "List mysql user"; }
|
step_32_info() { echo "List mysql user"; }
|
||||||
step_16_alias() { ALIAS="listuser"; }
|
step_32_alias() { ALIAS="listuser"; }
|
||||||
step_16() {
|
step_32() {
|
||||||
exe mysql -u root -e 'SELECT User, Host FROM mysql.user;'
|
exe mysql -u root -e 'SELECT User, Host FROM mysql.user;'
|
||||||
echo -e "\nDrop dbuser by: mysql -u root -e 'DROP USER dbuser@localhost;'"
|
echo -e "\nDrop dbuser by: mysql -u root -e 'DROP USER dbuser@localhost;'"
|
||||||
}
|
}
|
||||||
|
|
||||||
step_18_info() {
|
step_34_info() {
|
||||||
|
echoinfoArgs "[OPTIONS]"
|
||||||
|
echo "Show privileges"
|
||||||
|
echoinfo " [OPTIONS]"
|
||||||
|
echoinfo " --user, -u : user name"
|
||||||
|
echoinfo " --remote, -r : ip of allowed remote host"
|
||||||
|
}
|
||||||
|
step_34_alias() { ALIAS="listprivileges"; }
|
||||||
|
step_34() {
|
||||||
|
local arg
|
||||||
|
|
||||||
|
shift
|
||||||
|
for arg in "$@" ; do
|
||||||
|
case "$1" in
|
||||||
|
--user|-u)
|
||||||
|
dbUser="$2"
|
||||||
|
shift 2 ;;
|
||||||
|
--remote|-r)
|
||||||
|
dbRemote="$2"
|
||||||
|
shift 2 ;;
|
||||||
|
*)
|
||||||
|
break ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
exe mysql -u root -e 'SHOW GRANTS FOR '"'"$dbUser"'"'@'"'"$dbRemote"'"';'
|
||||||
|
}
|
||||||
|
|
||||||
|
step_36_info() {
|
||||||
echoinfoArgs "[DATABASE_NAME]"
|
echoinfoArgs "[DATABASE_NAME]"
|
||||||
echo "Size of database"
|
echo "Size of database"
|
||||||
}
|
}
|
||||||
step_18_alias() { ALIAS="sizedb"; }
|
step_36_alias() { ALIAS="sizedb"; }
|
||||||
step_18() {
|
step_36() {
|
||||||
if [ -z "$2" ]; then
|
if [ -z "$2" ]; then
|
||||||
echo "Please provide a database name. e.g. $0 sizedb mydb_db"
|
echo "Please provide a database name. e.g. $0 sizedb mydb_db"
|
||||||
else
|
else
|
||||||
@@ -154,12 +289,12 @@ step_18() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
step_20_info() {
|
step_50_info() {
|
||||||
echoinfoArgs "<DATABASE NAME> <TARGET DIR>"
|
echoinfoArgs "<DATABASE NAME> <TARGET DIR>"
|
||||||
echo "Backup (dump) a mysql database"
|
echo "Backup (dump) a mysql database"
|
||||||
}
|
}
|
||||||
step_20_alias() { ALIAS="backup"; }
|
step_50_alias() { ALIAS="backup"; }
|
||||||
step_20() {
|
step_50() {
|
||||||
shift # step number not used
|
shift # step number not used
|
||||||
if [ -z $1 ] ; then
|
if [ -z $1 ] ; then
|
||||||
echoerr " [E] No database name provided"
|
echoerr " [E] No database name provided"
|
||||||
@@ -177,9 +312,9 @@ step_20() {
|
|||||||
endReturn -o $? "Error creating $dbName backup"
|
endReturn -o $? "Error creating $dbName backup"
|
||||||
}
|
}
|
||||||
|
|
||||||
step_22_info() { echo "Restore a mysql database"; }
|
step_52_info() { echo "Restore a mysql database"; }
|
||||||
step_22_alias() { ALIAS="restore"; }
|
step_52_alias() { ALIAS="restore"; }
|
||||||
step_22() {
|
step_52() {
|
||||||
echo "Restore with:"
|
echo "Restore with:"
|
||||||
echo " mysql -e \"DROP DATABASE nextcloud_db\""
|
echo " mysql -e \"DROP DATABASE nextcloud_db\""
|
||||||
echo " mysql -e \"CREATE DATABASE nextcloud_db\""
|
echo " mysql -e \"CREATE DATABASE nextcloud_db\""
|
||||||
|
Reference in New Issue
Block a user