MDEV-12834 mysql_secure_installation should ask about unix_socket authentication

recognize new unix_socket protected accounts, and don't
scare the user into setting the password for them
This commit is contained in:
Sergei Golubchik 2019-02-07 15:11:45 +01:00
parent b9f3f06857
commit 4e4df7b46d

View File

@ -17,6 +17,7 @@
config=".my.cnf.$$" config=".my.cnf.$$"
command=".mysql.$$" command=".mysql.$$"
output=".my.output.$$"
trap "interrupt" 1 2 3 6 15 trap "interrupt" 1 2 3 6 15
@ -216,7 +217,7 @@ prepare() {
do_query() { do_query() {
echo "$1" >$command echo "$1" >$command
#sed 's,^,> ,' < $command # Debugging #sed 's,^,> ,' < $command # Debugging
$mysql_command --defaults-file=$config $defaults_extra_file $no_defaults $args <$command $mysql_command --defaults-file=$config $defaults_extra_file $no_defaults $args <$command >$output
return $? return $?
} }
@ -268,15 +269,18 @@ get_root_password() {
echo echo
stty echo stty echo
if [ "x$password" = "x" ]; then if [ "x$password" = "x" ]; then
hadpass=0 emptypass=1
else else
hadpass=1 emptypass=0
fi fi
rootpass=$password rootpass=$password
make_config make_config
do_query "" do_query "show create user root@localhost"
status=$? status=$?
done done
if grep -q unix_socket $output; then
emptypass=0
fi
echo "OK, successfully used password, moving on..." echo "OK, successfully used password, moving on..."
echo echo
} }
@ -386,7 +390,7 @@ interrupt() {
cleanup() { cleanup() {
echo "Cleaning up..." echo "Cleaning up..."
rm -f $config $command rm -f $config $command $output
} }
# Remove the files before exiting. # Remove the files before exiting.
@ -405,9 +409,8 @@ echo "NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB"
echo " SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!" echo " SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!"
echo echo
echo "In order to log into MariaDB to secure it, we'll need the current" echo "In order to log into MariaDB to secure it, we'll need the current"
echo "password for the root user. If you've just installed MariaDB, and" echo "password for the root user. If you've just installed MariaDB, and"
echo "you haven't set the root password yet, the password will be blank," echo "haven't set the root password yet, you should just press enter here."
echo "so you should just press enter here."
echo echo
get_root_password get_root_password
@ -422,10 +425,10 @@ echo "root user without the proper authorisation."
echo echo
while true ; do while true ; do
if [ $hadpass -eq 0 ]; then if [ $emptypass -eq 1 ]; then
echo $echo_n "Set root password? [Y/n] $echo_c" echo $echo_n "Set root password? [Y/n] $echo_c"
else else
echo "You already have a root password set, so you can safely answer 'n'." echo "You already have your root account protected, so you can safely answer 'n'."
echo echo
echo $echo_n "Change the root password? [Y/n] $echo_c" echo $echo_n "Change the root password? [Y/n] $echo_c"
fi fi