#!/bin/bash

# Loop through each database on the MySQL server
mysql --defaults-file=/root/.my.cnf -Bse "SHOW DATABASES;" | while read DB_NAME
do
    # Skip system databases
    if [[ "$DB_NAME" != "information_schema" && "$DB_NAME" != "mysql" && "$DB_NAME" != "performance_schema" && "$DB_NAME" != "sys" ]]; then
        echo "Checking database: $DB_NAME"

        # Retrieve and check column comments from each table of the current database
        mysql --defaults-file=/root/.my.cnf -Bse "SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME, COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='$DB_NAME'" | while read SCHEMA TABLE COLUMN COMMENT
        do
            # Check for invalid UTF-8 sequences in the comment
            if echo "$COMMENT" | grep -P "[\x80-\xFF]"; then
                echo "Invalid UTF-8 in $DB_NAME.$TABLE.$COLUMN: $COMMENT"
            fi
        done
    fi
done

