MySQL-användare är till för användare av själva MySQL-servern. Dessa användare bör endast reserveras för användning av serveradministratören eller applikationer som kräver att en användare kör (ge en separat användare till varje applikation). MySQL-användarhanteringssystemet byggdes specifikt för att rymma kontrollerad åtkomst till databasen som körs på servern, INTE för att vara grunden för användarautentisering i en webbapplikation. Dessutom kommer alla databastillägg (och användarskapelser) att kräva att du har en användare som kör programmet som har dessa behörigheter i databasen. Även om det i sig inte är en direkt sårbarhet, kan det göra ditt liv mycket värre om det hittas i ditt PHP-system.
Du vill aldrig att din applikation ska kunna förorena din MySQL-databas namnutrymme med ytterligare databaser eller (tabeller för den delen). Under driften av din applikation ska den bara kunna skapa, hämta, uppdatera och ta bort poster med Principen om minsta privilegium , vilket betyder att du kommer att ge din databasanvändare åtkomst att bara göra de saker den kräver och inget mer.
När det gäller lösenordshashing, använd bcrypt via PHPs crypt()-funktion . Lagra det i databasen i en användartabell.