diff --git a/lib/mysql-analyzer.sh b/lib/mysql-analyzer.sh index ab110e5..3530e1e 100755 --- a/lib/mysql-analyzer.sh +++ b/lib/mysql-analyzer.sh @@ -134,8 +134,8 @@ map_database_to_user_domain() { # Build map for all databases print_info "Building database to user/domain mapping..." - # Use while read to safely iterate over database names (handles spaces in names) - mysql -Ns -e "SHOW DATABASES" 2>/dev/null | grep -v "^information_schema$\|^mysql$\|^performance_schema$\|^sys$" | while IFS= read -r db; do + # Use process substitution to iterate over database names (handles spaces in names, avoids subshell shadowing) + while IFS= read -r db; do # Extract potential username from database name # Format: username_dbname local potential_user=$(echo "$db" | cut -d_ -f1) @@ -148,7 +148,7 @@ map_database_to_user_domain() { else echo "${db}|unknown|unknown" >> "$map_file" fi - done + done < <(mysql -Ns -e "SHOW DATABASES" 2>/dev/null | grep -v "^information_schema$\|^mysql$\|^performance_schema$\|^sys$") grep "^${db_name}|" -- "$map_file" 2>/dev/null }