C'est parce que mysql_connect utilise des valeurs par défaut lors de la connexion qui devraient être root
pour le nom d'utilisateur et la chaîne vide pour le mot de passe si je m'en souviens bien. Il peut également s'agir du nom d'utilisateur sous lequel le serveur Web s'exécute.
Cela pourrait signifier que votre serveur de base de données accepte les connexions root sans mot de passe (depuis la machine du serveur Web), ce qui est assez dangereux. Vous devriez revoir la configuration de votre base de données et votre liste d'utilisateurs.
Du point de vue de la sécurité, votre code n'est pas très sûr, les informations d'identification db sont transmises en texte clair et, en règle générale, les informations d'identification db ne doivent pas être saisies par les utilisateurs finaux (sauf si vous écrivez un outil de type PhpMyAdmin).