Ik ben het hier niet met Bill eens en de manier van denken van Atomix is meer geschikt. Tenzij het tegendeel kan worden aangetoond, verhoogt het antwoord van Bill het risico dat de database wordt gecompromitteerd.
Misschien is er voor zeer ervaren ontwikkelaars andere beveiliging, maar voor andere ontwikkelaars die een script volledige, onbelemmerde toegang geven om ~alles~ aan een database te doen, is vragen om problemen, terwijl dat niet nodig is.
Het principe van de minste privileges zou hier moeten gelden. Voor MySQL heeft u een supergebruiker met alle rechten die wordt gebruikt voor het maken van tabellen, het neerzetten van een database, enzovoort. Idealiter wordt deze gebruikersnaam en dit wachtwoord nooit gezien in een PHP-bestand of een bestand op de webserver. (Ik gebruik PHP als voorbeeld, maar het is van toepassing op andere webapplicaties). U zou deze gebruikersnaam en dit wachtwoord alleen gebruiken met iets als PHPMyAdmin of MySQL Workbench.
Dan, voor PHP-scripts, heb er een met het minimaal vereiste, zoals alleen INSERT, SELECT, UPDATE, misschien zelfs niet DELETE, afhankelijk van je PHP-script. Dit zou in de PHP-bestanden zijn, dat wil zeggen, eigenlijk maar EEN bestand BUITEN de documentroot, zoals door de meesten wordt aanbevolen.
De reden is dus:ja, je hebt niet voor elke webapplicatiegebruiker een MySQL-gebruiker nodig. Maar het principe van de minste privileges ( http://en.wikipedia.org/wiki/Principle_of_least_privilege ) moet gelden. Als uw MySQL-supergebruiker op de een of andere manier wordt gecompromitteerd omdat u per ongeluk uw MySQL-verbindingsscript hebt genoemd als .txt in plaats van .php, of als iemand toegang heeft gekregen tot de webserverbestanden, is het "slechtste" dat ze kunnen doen SELECT, UPDATE en INSERT. .. Wat sowieso grote problemen kan veroorzaken, is niet zo erg als het geven van DROP DATABASE, DROP TABLES en nog veel ergere dingen.
Bovendien, in mijn huidige project vanwege agile ontwikkelingspraktijken (ik werk niet voor maar raad http://www.agilealliance .org/ ), gebruiken een of twee "niet-technische" teamleden PHPMyAdmin om directe wijzigingen aan te brengen in de MySQL-database. Dit komt omdat het maken van een CMS voor eenvoudige directe gegevensinvoer niet vereist is. In dit geval is een derde MySQL-gebruiker met redelijke maar nogmaals, "net genoeg" privileges geschikt voor hen. We willen het teamlid met te weinig privileges niet verlammen, maar ze mogen natuurlijk niet per ongeluk dingen verwijderen of wijzigen.
Aangezien MySQL geen ROLLEN heeft (vanaf het moment dat de oorspronkelijke vraag werd gesteld, en volgens Bill), is het zeer riskant om een webscript toegang te geven tot MySQL met slechts één supergebruiker.