mysql8 create user, set password, grant

This commit is contained in:
myvesta 2022-01-23 15:41:28 +01:00
parent d30c9f584e
commit e91976613c
2 changed files with 113 additions and 30 deletions

View file

@ -202,21 +202,57 @@ decrease_dbhost_values() {
add_mysql_database() { add_mysql_database() {
mysql_connect $host mysql_connect $host
mysql_ver_sub=$(echo $mysql_ver |cut -d '.' -f1)
mysql_ver_sub_sub=$(echo $mysql_ver |cut -d '.' -f2)
query="CREATE DATABASE \`$database\` CHARACTER SET $charset" query="CREATE DATABASE \`$database\` CHARACTER SET $charset"
mysql_query "$query" > /dev/null mysql_query "$query" > /dev/null
query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\` if [ "$mysql_fork" = "mysql" ] && [ "$mysql_ver_sub" -ge 8 ] ; then
IDENTIFIED BY '$dbpass'" query="CREATE USER \`$dbuser\`@\`%\`
mysql_query "$query" > /dev/null IDENTIFIED BY '$dbpass'"
mysql_query "$query" > /dev/null
query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost query="CREATE USER \`$dbuser\`@localhost
IDENTIFIED BY '$dbpass'" IDENTIFIED BY '$dbpass'"
mysql_query "$query" > /dev/null mysql_query "$query" > /dev/null
if [ "$(echo $mysql_ver |cut -d '.' -f2)" -ge 7 ]; then query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\`"
md5=$(mysql_query "SHOW CREATE USER \`$dbuser\`" 2>/dev/null) mysql_query "$query" > /dev/null
md5=$(echo "$md5" |grep password |cut -f8 -d \')
query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost"
mysql_query "$query" > /dev/null
else else
query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\`
IDENTIFIED BY '$dbpass'"
mysql_query "$query" > /dev/null
query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost
IDENTIFIED BY '$dbpass'"
mysql_query "$query" > /dev/null
fi
if [ "$mysql_fork" = "mysql" ]; then
# mysql
if [ "$mysql_ver_sub" -ge 8 ] || { [ "$mysql_ver_sub" -eq 5 ] && [ "$mysql_ver_sub_sub" -ge 7 ]; } then
if [ "$mysql_ver_sub" -ge 8 ]; then
# mysql >= 8
md5=$(mysql_query "SHOW CREATE USER \`$dbuser\`" 2>/dev/null)
# echo $md5
md5=$(echo "$md5" |grep password |cut -f4 -d \')
# echo $md5
else
# mysql < 8
md5=$(mysql_query "SHOW CREATE USER \`$dbuser\`" 2>/dev/null)
md5=$(echo "$md5" |grep password |cut -f8 -d \')
fi
else
# mysql < 5.7
md5=$(mysql_query "SHOW GRANTS FOR \`$dbuser\`" 2>/dev/null)
md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
fi
else
# mariadb
md5=$(mysql_query "SHOW GRANTS FOR \`$dbuser\`" 2>/dev/null) md5=$(mysql_query "SHOW GRANTS FOR \`$dbuser\`" 2>/dev/null)
md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \') md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
fi fi
@ -267,22 +303,63 @@ get_database_values() {
# Change MySQL database password # Change MySQL database password
change_mysql_password() { change_mysql_password() {
mysql_connect $HOST mysql_connect $HOST
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@\`%\`
IDENTIFIED BY '$dbpass'"
mysql_query "$query" > /dev/null
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost
IDENTIFIED BY '$dbpass'"
mysql_query "$query" > /dev/null
if [ "$(echo $mysql_ver |cut -d '.' -f2)" -ge 7 ]; then mysql_ver_sub=$(echo $mysql_ver |cut -d '.' -f1)
mysql_ver_sub_sub=$(echo $mysql_ver |cut -d '.' -f2)
md5=$(mysql_query "SHOW CREATE USER \`$DBUSER\`" 2>/dev/null)
md5=$(echo "$md5" |grep password |cut -f8 -d \') if [ "$mysql_fork" = "mysql" ]; then
else # mysql
md5=$(mysql_query "SHOW GRANTS FOR \`$DBUSER\`" 2>/dev/null) if [ "$mysql_ver_sub" -ge 8 ]; then
md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \') # mysql >= 8
fi query="SET PASSWORD FOR \`$DBUSER\`@\`%\` = '$dbpass'"
mysql_query "$query" > /dev/null
query="SET PASSWORD FOR \`$DBUSER\`@localhost = '$dbpass'"
mysql_query "$query" > /dev/null
else
# mysql < 8
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@\`%\`
IDENTIFIED BY '$dbpass'"
mysql_query "$query" > /dev/null
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost
IDENTIFIED BY '$dbpass'"
mysql_query "$query" > /dev/null
fi
else
# mariadb
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@\`%\`
IDENTIFIED BY '$dbpass'"
mysql_query "$query" > /dev/null
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost
IDENTIFIED BY '$dbpass'"
mysql_query "$query" > /dev/null
fi
if [ "$mysql_fork" = "mysql" ]; then
# mysql
if [ "$mysql_ver_sub" -ge 8 ] || { [ "$mysql_ver_sub" -eq 5 ] && [ "$mysql_ver_sub_sub" -ge 7 ]; } then
if [ "$mysql_ver_sub" -ge 8 ]; then
# mysql >= 8
md5=$(mysql_query "SHOW CREATE USER \`$DBUSER\`" 2>/dev/null)
# echo $md5
md5=$(echo "$md5" |grep password |cut -f4 -d \')
# echo $md5
else
# mysql < 8
md5=$(mysql_query "SHOW CREATE USER \`$DBUSER\`" 2>/dev/null)
md5=$(echo "$md5" |grep password |cut -f8 -d \')
fi
else
# mysql < 5.7
md5=$(mysql_query "SHOW GRANTS FOR \`$DBUSER\`" 2>/dev/null)
md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
fi
else
# mariadb
md5=$(mysql_query "SHOW GRANTS FOR \`$DBUSER\`" 2>/dev/null)
md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
fi
} }
# Change PostgreSQL database password # Change PostgreSQL database password

View file

@ -556,12 +556,15 @@ rebuild_mysql_database() {
mysql_query "CREATE DATABASE \`$DB\` CHARACTER SET $CHARSET" >/dev/null mysql_query "CREATE DATABASE \`$DB\` CHARACTER SET $CHARSET" >/dev/null
if [ "$mysql_fork" = "mysql" ]; then if [ "$mysql_fork" = "mysql" ]; then
# mysql # mysql
if [ "$(echo $mysql_ver |cut -d '.' -f2)" -ge 7 ]; then mysql_ver_sub=$(echo $mysql_ver |cut -d '.' -f1)
mysql_ver_sub_sub=$(echo $mysql_ver |cut -d '.' -f2)
if [ "$mysql_ver_sub" -ge 8 ] || { [ "$mysql_ver_sub" -eq 5 ] && [ "$mysql_ver_sub_sub" -ge 7 ]; } then
# mysql >= 5.7 # mysql >= 5.7
mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`" > /dev/null # if [ "$mysql_ver_sub" -eq 5 ] && [ "$mysql_ver_sub_sub" -ge 7 ]; then
mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`@localhost" > /dev/null mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`" > /dev/null
query="UPDATE mysql.user SET authentication_string='$MD5'" mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`@localhost" > /dev/null
query="$query WHERE User='$DBUSER'" query="UPDATE mysql.user SET authentication_string='$MD5'"
query="$query WHERE User='$DBUSER'"
else else
# mysql < 5.7 # mysql < 5.7
query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER'" query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER'"
@ -579,10 +582,13 @@ rebuild_mysql_database() {
# mariadb = 10 # mariadb = 10
mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`" > /dev/null mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`" > /dev/null
mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`@localhost" > /dev/null mysql_query "CREATE USER IF NOT EXISTS \`$DBUSER\`@localhost" > /dev/null
query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER'"
if [ "$mysql_ver_sub_sub" -ge 4 ]; then if [ "$mysql_ver_sub_sub" -ge 4 ]; then
# mariadb >= 10.4
query="SET PASSWORD FOR '$DBUSER'@'%' = '$MD5';" query="SET PASSWORD FOR '$DBUSER'@'%' = '$MD5';"
query2="SET PASSWORD FOR '$DBUSER'@'localhost' = '$MD5';" query2="SET PASSWORD FOR '$DBUSER'@'localhost' = '$MD5';"
else
# mariadb < 10.4
query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER'"
fi fi
fi fi
fi fi