diff --git a/setup_server_laravel.sh b/setup_server_laravel.sh index 5419e4c..2c822ef 100644 --- a/setup_server_laravel.sh +++ b/setup_server_laravel.sh @@ -256,16 +256,22 @@ done if ! command -v mysql &> /dev/null; then log_message "INFO" "Installing MySQL..." export DEBIAN_FRONTEND=noninteractive + + # Pre-set root password debconf-set-selections <<< "mysql-server mysql-server/root_password password $MYSQL_ROOT_PASSWORD" debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $MYSQL_ROOT_PASSWORD" + + # Install MySQL apt-get install -y mysql-server + check_command_status "MySQL installation" # Secure MySQL installation - mysql -e "DELETE FROM mysql.user WHERE User='';" - mysql -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" - mysql -e "DROP DATABASE IF EXISTS test;" - mysql -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';" - mysql -e "FLUSH PRIVILEGES;" + mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$MYSQL_ROOT_PASSWORD';" + mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "DELETE FROM mysql.user WHERE User='';" + mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');" + mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "DROP DATABASE IF EXISTS test;" + mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';" + mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "FLUSH PRIVILEGES;" # Optimize MySQL configuration cat >> /etc/mysql/mysql.conf.d/mysqld.cnf << 'ENDOFMYSQL' @@ -277,10 +283,18 @@ innodb_flush_log_at_trx_commit = 2 innodb_flush_method = O_DIRECT ENDOFMYSQL + # Restart MySQL to apply changes systemctl restart mysql + check_command_status "MySQL restart" + + # Save MySQL password log_message "INFO" "MySQL root password: $MYSQL_ROOT_PASSWORD" echo "$MYSQL_ROOT_PASSWORD" > "/var/www/html/mysql_password.txt" chmod 600 "/var/www/html/mysql_password.txt" + + log_message "INFO" "MySQL installation and configuration completed successfully" +else + log_message "INFO" "MySQL is already installed, skipping installation" fi # Setup Laravel Cron Jobs