Outsourced mysql related steps to own seq

This commit is contained in:
2020-01-05 15:02:53 +01:00
parent da30fc84b8
commit 8d303bbcbc
3 changed files with 206 additions and 278 deletions

166
seqs/mysql.sh Executable file
View File

@@ -0,0 +1,166 @@
#!/bin/bash
# Mysql management using mariadb
databaseName="mariadb"
databasePackages="mariadb-server mariadb-client"
step_1_info() {
echo "Installation of ${databaseName} packages:"
echoinfo "$databasePackages"
}
step_1_alias() { ALIAS=install; }
step_1() {
exe apt update
exe apt install $databasePackages
endReturn -o $? "Error instaling $databaseName"
}
step_2_info() { echo "Secure ${databaseName} installation"; }
step_2() {
exe mysql_secure_installation
}
step_3_info() { echo -e "${databaseName} configuration\n"; }
step_3() {
addConf -c "$mariadbConfig" "$mariadbConfigLoc"
echo -n "Restarting mysql ... "
exe service mysql restart && echo "ok"
}
mariadbConfigLoc="/etc/mysql/mariadb.conf.d/90-myconfig.cnf"
mariadbConfig="[mysqld]
innodb_large_prefix=on
innodb_file_format=barracuda
innodb_file_per_table=true
lower_case_table_names=0
#innodb_force_recovery=6"
step_10_info() { echo "Create mysql database without specific characterset"; }
step_10_alias() { ALIAS="createdb"; }
step_10() {
local mysqlDatabase
local mysqlUser
local mysqlPass
echo " [I] Existing mysql databases:"
exe mysql -u root -e 'SHOW DATABASES;'
read -p "Enter database name: " mysqlDatabase
endCheckEmpty mysqlDatabase "database name"
exe mysql -u root -e 'CREATE DATABASE '$mysqlDatabase';'
endReturn -o $? "Cannot create database $mysqlDatabase"
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 -s -p "Enter mysql user password: " mysqlPass
endCheckEmpty mysqlPass "password"
exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';'
saveReturn $?
endReturn
exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';'
saveReturn $?
endReturn
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"
read -s -p "Enter mysql user password: " mysqlPass
endCheckEmpty mysqlPass "password"
exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';'
saveReturn $?
endReturn
exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';'
saveReturn $?
endReturn
exe mysql -u root -e 'FLUSH PRIVILEGES;'
}
step_14_info() { echo "List mysql databases"; }
step_14_alias() { ALIAS="listdb"; }
step_14() {
exe mysql -u root -e 'SHOW DATABASES;'
echo -e "\nDrop userdb by: mysql -u root -e 'DROP DATABASE userdb;'"
}
step_16_info() { echo "List mysql user"; }
step_16_alias() { ALIAS="listdbuser"; }
step_16() {
exe mysql -u root -e 'SELECT User, Host FROM mysql.user;'
echo -e "\nDrop dbuser by: mysql -u root -e 'DROP USER dbuser@localhost;'"
}
step_18_info() { echo "Size of database [DATABASE_NAME]"; }
step_18_alias() { ALIAS="sizedb"; }
step_18() {
if [ -z "$2" ]; then
echo "Please provide a database name. e.g. $0 sizedb mydb_db"
else
exe mysql -u root -e 'SELECT table_schema "DB Name",
ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"
FROM information_schema.tables
WHERE table_schema="'$2'"
GROUP BY table_schema;'
fi
}
step_20_info() { echo "Backup and restore a mysql database"; }
step_20_alias() { ALIAS="backup"; }
step_20() {
echo "Dump the existing database with:"
echo " mysqldump --single-transaction nextcloud_db > NextcloudBackup_DB_\`date +\"%Y%m%d\"\`.sql"
echo
echo "Restore with:"
echo " mysql -e \"DROP DATABASE nextcloud_db\""
echo " mysql -e \"CREATE DATABASE nextcloud_db\""
echo " mysql nextcloud_db < NextcloudBackup_DB_20170912.sql"
}
# Read database information dbname/user/pass if empty
readDatabaseInfos() {
if [ "$dbName" == "" ] ; then
read -p "Enter postgres database name: " dbName
endCheckEmpty dbName "database"
fi
if [ "$dbUser" == "" ] ; then
read -p "Enter postgres user name: " dbUser
endCheckEmpty dbUser "user name"
fi
if [ "$dbPass" == "" ] ; then
read -s -p "Enter postgres password: " dbPass
endCheckEmpty postgresPass "password"
fi
echo
}
VERSION_SEQREV=9
. /usr/local/bin/sequencer.sh

View File

@@ -2,19 +2,17 @@
serverName="nginx" serverName="nginx"
serverPackages="nginx" serverPackages="nginx"
databaseName="mariadb"
databasePackages="mariadb-server mariadb-client"
phpVersion="7.3" phpVersion="7.3"
phpName="php${phpVersion}" phpName="php${phpVersion}"
phpPackages="${phpName}-fpm ${phpName}-json ${phpName}-mysql ${phpName}-curl ${phpName}-intl ${phpName}-gd ${phpName}-zip ${phpName}-xml ${phpName}-mbstring php-imagick php-apcu" phpPackages="${phpName}-fpm ${phpName}-json ${phpName}-mysql ${phpName}-curl ${phpName}-intl ${phpName}-gd ${phpName}-zip ${phpName}-xml ${phpName}-mbstring php-imagick php-apcu"
step_1_info() { echo -e "Installation of $serverName and ${databaseName} packages:\n $serverPackages $databasePackages"; } step_1_info() {
echo "Installation of $serverName packages:"
echoinfo "$serverPackages"
}
step_1_alias() { ALIAS=install; } step_1_alias() { ALIAS=install; }
step_1() { step_1() {
exe apt update exe apt update
exe apt install $databasePackages
saveReturn $?
endReturn
exe apt install $serverPackages exe apt install $serverPackages
saveReturn $? saveReturn $?
endReturn endReturn
@@ -42,13 +40,12 @@ step_2() {
saveReturn $? saveReturn $?
endReturn endReturn
} }
snippetLetsencryptLoc="/etc/nginx/snippets/letsencrypt.conf" snippetLetsencryptLoc="/etc/nginx/snippets/letsencrypt.conf"
siteLetsencryptWww="/var/www/letsencrypt" siteLetsencryptWww="/var/www/letsencrypt"
snippetLetsencrypt="\ snippetLetsencrypt="\
location ^~ /.well-known/acme-challenge/ { location ^~ /.well-known/acme-challenge/ {
default_type \"text/plain\"; default_type \"text/plain\";
root ${siteLetsencryptWww}; root ${siteLetsencryptWww};
}" }"
siteDefaultLoc="/etc/nginx/sites-available/default" siteDefaultLoc="/etc/nginx/sites-available/default"
siteDefaultIp4="server { siteDefaultIp4="server {
@@ -57,174 +54,39 @@ listen 80 default_server;
include ${snippetLetsencryptLoc}; include ${snippetLetsencryptLoc};
}" }"
step_3_info() { echo "Secure mariadb installation"; } step_3_info() { echo "Installation of $phpName packages:"
echoinfo "$phpPackages"; }
step_3() { step_3() {
exe mysql_secure_installation
}
step_4_info() { echo "Mariadb configuration"; }
step_4() {
addConf -c "$mariadbConfig" "$mariadbConfigLoc"
echo -n "Restarting mysql ... "
exe service mysql restart && echo "ok"
}
mariadbConfigLoc="/etc/mysql/mariadb.conf.d/90-myconfig.cnf"
mariadbConfig="\
[mysqld]
innodb_large_prefix=on
innodb_file_format=barracuda
innodb_file_per_table=true
lower_case_table_names=0
#innodb_force_recovery=6"
step_5_info() { echo -e "Installation of $phpName packages:\n $phpPackages"; }
step_5() {
exe apt install $phpPackages exe apt install $phpPackages
} }
phpFpmConfigLocation="/etc/php/${phpVersion}/fpm/conf.d/90-custom_pi.ini" phpFpmConfigLocation="/etc/php/${phpVersion}/fpm/conf.d/90-custom_pi.ini"
phpFpmConfig="\ phpFpmConfig="post_max_size=64M
post_max_size=64M upload_max_filesize=100M
upload_max_filesize=100M max_execution_time=600
max_execution_time=600
apc.enable_cli=1 apc.enable_cli=1
date.timezone = Europe/Berlin date.timezone = Europe/Berlin
opcache.enable=1 opcache.enable=1
opcache.enable_cli=1 opcache.enable_cli=1
opcache.interned_strings_buffer=8 opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000 opcache.max_accelerated_files=10000
opcache.memory_consumption=128 opcache.memory_consumption=128
opcache.save_comments=1 opcache.save_comments=1
opcache.revalidate_freq=1" opcache.revalidate_freq=1"
phpCliConfigLocation="/etc/php/${phpVersion}/cli/conf.d/90-custom_pi.ini"
phpCliConfig="\
date.timezone = Europe/Berlin"
phpCliConfigLocation="/etc/php/${phpVersion}/cli/conf.d/90-custom_pi.ini" step_4_info() { echo -e "Configuration of ${phpName} fpm and cli\n"; }
phpCliConfig="\ step_4() {
date.timezone = Europe/Berlin"
step_6_info() { echo -e "Configuration of ${phpName} fpm and cli\n"; }
step_6() {
addConf -c "$phpFpmConfig" "$phpFpmConfigLocation" addConf -c "$phpFpmConfig" "$phpFpmConfigLocation"
addConf -c "$phpCliConfig" "$phpCliConfigLocation" addConf -c "$phpCliConfig" "$phpCliConfigLocation"
echo -n "Restarting ${phpName} ... " echo -n "Restarting ${phpName} ... "
exe service ${phpName}-fpm restart && echo "ok" exe service ${phpName}-fpm restart && echo "ok"
}
step_10_info() { echo -e "Create mysql database without specific characterset\n"; }
step_10_alias() { ALIAS="createdb"; }
step_10() {
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"
exe mysql -u root -e 'CREATE DATABASE '$mysqlDatabase';'
saveReturn $?
endReturn
echo "Existing mysql user:"
exe mysql -u root -e 'SELECT User, Host FROM mysql.user;'
read -p "Enter mysql user name: " mysqlUser
endCheckEmpty mysqlDatabase "user name"
read -s -p "Enter mysql user password: " mysqlPass
endCheckEmpty mysqlPass "password"
exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';'
saveReturn $?
endReturn
exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';'
saveReturn $?
endReturn
exe mysql -u root -e 'FLUSH PRIVILEGES;'
} }
step_12_info() { echo -e "Create mysql database with characterset utf8mb4\n"; } VERSION_SEQREV=9
step_12_alias() { ALIAS="createdb_utf8mb4"; } . /usr/local/bin/sequencer.sh
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;'
saveReturn $?
endReturn
echo "Existing mysql user:"
exe mysql -u root -e 'SELECT User, Host FROM mysql.user;'
read -p "Enter mysql user name: " mysqlUser
endCheckEmpty mysqlDatabase "user name"
read -s -p "Enter mysql user password: " mysqlPass
endCheckEmpty mysqlPass "password"
exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';'
saveReturn $?
endReturn
exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';'
saveReturn $?
endReturn
exe mysql -u root -e 'FLUSH PRIVILEGES;'
}
step_14_info() { echo "List mysql databases"; }
step_14_alias() { ALIAS="listdb"; }
step_14() {
exe mysql -u root -e 'SHOW DATABASES;'
echo -e "\nDrop userdb by: mysql -u root -e 'DROP DATABASE userdb;'"
}
step_16_info() { echo "List mysql user"; }
step_16_alias() { ALIAS="listdbuser"; }
step_16() {
exe mysql -u root -e 'SELECT User, Host FROM mysql.user;'
echo -e "\nDrop dbuser by: mysql -u root -e 'DROP USER dbuser@localhost;'"
}
step_18_info() { echo "Size of database [DATABASE_NAME]"; }
step_18_alias() { ALIAS="sizedb"; }
step_18() {
if [ -z "$2" ]; then
echo "Please provide a database name. e.g. $0 sizedb mydb_db"
else
exe mysql -u root -e 'SELECT table_schema "DB Name",
ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"
FROM information_schema.tables
WHERE table_schema="'$2'"
GROUP BY table_schema;'
fi
}
step_20_info() { echo "Backup and restore a mysql database"; }
step_20_alias() { ALIAS="backup"; }
step_20() {
echo "Dump the existing database with:"
echo " mysqldump --single-transaction nextcloud_db > NextcloudBackup_DB_\`date +\"%Y%m%d\"\`.sql"
echo
echo "Restore with:"
echo " mysql -e \"DROP DATABASE nextcloud_db\""
echo " mysql -e \"CREATE DATABASE nextcloud_db\""
echo " mysql nextcloud_db < NextcloudBackup_DB_20170912.sql"
}
VERSION_SEQREV=5
. sequencer.sh

View File

@@ -2,18 +2,15 @@
serverName="nginx" serverName="nginx"
serverPackages="nginx" serverPackages="nginx"
databaseName="mariadb"
databasePackages="mariadb-server mariadb-client"
phpVersion="7.2" phpVersion="7.2"
phpName="php$phpVersion" phpName="php$phpVersion"
phpPackages="${phpName}-fpm ${phpName}-json ${phpName}-mysql ${phpName}-curl ${phpName}-intl ${phpName}-gd ${phpName}-zip ${phpName}-xml ${phpName}-mbstring php-imagick php-apcu" phpPackages="${phpName}-fpm ${phpName}-json ${phpName}-mysql ${phpName}-curl ${phpName}-intl ${phpName}-gd ${phpName}-zip ${phpName}-xml ${phpName}-mbstring php-imagick php-apcu"
step_1_info() { echo -e "Installation of $serverName and ${databaseName} packages:\n $serverPackages $databasePackages"; } step_1_info() { echo "Installation of $serverName packages:"
echoinfo "$serverPackages"; }
step_1_alias() { ALIAS="install"; } step_1_alias() { ALIAS="install"; }
step_1() { step_1() {
exe apt update exe apt update
exe apt install $databasePackages
endReturn -o $? "Database package installation error"
exe apt install $serverPackages exe apt install $serverPackages
endReturn -o $? "Server package installation error" endReturn -o $? "Server package installation error"
} }
@@ -39,7 +36,6 @@ step_2() {
exe service nginx restart && echo "ok" exe service nginx restart && echo "ok"
endReturn -o $? "Nginx error during startup" endReturn -o $? "Nginx error during startup"
} }
snippetLetsencryptLoc="/etc/nginx/snippets/letsencrypt.conf" snippetLetsencryptLoc="/etc/nginx/snippets/letsencrypt.conf"
siteLetsencryptWww="/var/www/letsencrypt" siteLetsencryptWww="/var/www/letsencrypt"
snippetLetsencrypt="\ snippetLetsencrypt="\
@@ -54,38 +50,12 @@ siteDefaultIp4="server {
include ${snippetLetsencryptLoc}; include ${snippetLetsencryptLoc};
}" }"
step_3_info() { echo "Secure mariadb installation"; } step_3_info() { echo "Installation of $phpName packages:"
echoinfo "$phpPackages"; }
step_3() { step_3() {
exe mysql_secure_installation
}
step_4_info() { echo "Mariadb configuration"; }
step_4() {
addConf -c "$mariadbConfig" "$mariadbConfigLoc"
echo -n " [I] Restarting mysql ... "
exe service mysql restart
endReturn -o $? "Mariadb error during startup"
echo "ok"
}
mariadbConfigLoc="/etc/mysql/mariadb.conf.d/90-myconfig.cnf"
mariadbConfig="\
[mysqld]
innodb_large_prefix=on
innodb_file_format=barracuda
innodb_file_per_table=true
lower_case_table_names=0
#innodb_force_recovery=6"
step_5_info() { echo -e "Installation of $phpName packages:\n $phpPackages"; }
step_5() {
exe apt install $phpPackages exe apt install $phpPackages
endReturn -o $? "$phpName error during startup" endReturn -o $? "$phpName error during startup"
} }
phpFpmConfigLocation="/etc/php/${phpVersion}/fpm/conf.d/90-custom_pi.ini" phpFpmConfigLocation="/etc/php/${phpVersion}/fpm/conf.d/90-custom_pi.ini"
phpFpmConfig="\ phpFpmConfig="\
post_max_size=64M post_max_size=64M
@@ -107,8 +77,8 @@ phpCliConfigLocation="/etc/php/${phpVersion}/cli/conf.d/90-custom_pi.ini"
phpCliConfig="\ phpCliConfig="\
date.timezone = Europe/Berlin" date.timezone = Europe/Berlin"
step_6_info() { echo -e "Configuration of ${phpName} fpm and cli\n"; } step_4_info() { echo -e "Configuration of ${phpName} fpm and cli\n"; }
step_6() { step_4() {
addConf -c "$phpFpmConfig" "$phpFpmConfigLocation" addConf -c "$phpFpmConfig" "$phpFpmConfigLocation"
addConf -c "$phpCliConfig" "$phpCliConfigLocation" addConf -c "$phpCliConfig" "$phpCliConfigLocation"
@@ -118,75 +88,5 @@ step_6() {
echo "ok" echo "ok"
} }
step_10_info() { echo -e "Create mysql database without specific characterset\n"; } VERSION_SEQREV=9
step_10_alias() { ALIAS="createdb"; } . /usr/local/bin/sequencer.sh
step_10() {
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"
exe mysql -u root -e 'CREATE DATABASE '$mysqlDatabase';'
saveReturn $?
endReturn
echo "Existing mysql user:"
exe mysql -u root -e 'SELECT User, Host FROM mysql.user;'
read -p "Enter mysql user name: " mysqlUser
endCheckEmpty mysqlDatabase "user name"
read -p "Enter mysql user password: " mysqlPass
endCheckEmpty mysqlPass "password"
exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';'
saveReturn $?
endReturn
exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';'
saveReturn $?
endReturn
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;'
saveReturn $?
endReturn
echo "Existing mysql user:"
exe mysql -u root -e 'SELECT User, Host FROM mysql.user;'
read -p "Enter mysql user name: " mysqlUser
endCheckEmpty mysqlDatabase "user name"
read -p "Enter mysql user password: " mysqlPass
endCheckEmpty mysqlPass "password"
exe mysql -u root -e 'CREATE USER '"'"$mysqlUser"'"'@'"'"'localhost'"'"' IDENTIFIED BY '"'"$mysqlPass"'"';'
saveReturn $?
endReturn
exe mysql -u root -e 'GRANT ALL PRIVILEGES ON '$mysqlDatabase'.* TO '"'"$mysqlUser"'"'@'"'"'localhost'"'"';'
saveReturn $?
endReturn
exe mysql -u root -e 'FLUSH PRIVILEGES;'
}
VERSION_SEQREV=7
. sequencer.sh