sql >> Databasteknik >  >> RDS >> Mysql

Ge MySQL-användare bara de minsta privilegierna

Jag håller inte med Bill här och Atomix tankegång är mer lämplig. Om det inte kan visas något annat, ökar Bills svar risken för att databasen äventyras.

För mycket erfarna utvecklare kanske det finns annan säkerhet på plats, men för andra utvecklare är det att ge ett skript full, oinskränkt åtkomst att göra ~vad som helst~ till en databas att be om problem, när det inte finns något behov.

Principen om minsta privilegium bör användas här. För MySQL, ha en superanvändare med alla privilegier som används för att skapa tabeller, släppa databas och så vidare. Det här användarnamnet och lösenordet syns aldrig i någon PHP-fil eller någon fil på webbservern. (Jag använder PHP som exempel men det gäller andra webbapplikationer). Du skulle bara använda detta användarnamn och lösenord med något som PHPMyAdmin eller MySQL Workbench.

Sedan, för PHP-skript, ha ett med det minsta som krävs, som bara INSERT, SELECT, UPDATE, kanske inte ens DELETE, beroende på ditt PHP-skript. Detta skulle finnas i PHP-filerna, det vill säga faktiskt bara EN fil UTANFÖR dokumentroten, vilket rekommenderas av de flesta.

Anledningen är alltså:ja, du behöver inte en MySQL-användare för varje webbapplikationsanvändare. Men principen om minsta privilegium ( http://en.wikipedia.org/wiki/Principle_of_least_privilege ) bör gälla. Om din MySQL-superanvändare på något sätt äventyras för att du av misstag namngav ditt MySQL-anslutningsskript som .txt istället för .php, eller om någon fick tillgång till webbserverns filer, är åtminstone det "värsta" de kan göra VÄLJ, UPPDATERA och INFOGA. .. Vilket samtidigt kan orsaka stora problem ändå, är inte så illa som att ge dem DROP DATABAS, DROP TABLES och mycket värre saker.

Dessutom, i mitt nuvarande projekt på grund av agila utvecklingsmetoder (jag arbetar inte för men rekommenderar http://www.agilealliance. .org/ ), använder en eller två "icke-tekniska" teammedlemmar direkt PHPMyAdmin för att göra direkta ändringar i MySQL-databasen. Detta beror på att det inte krävs att skapa ett CMS för enkel direkt datainmatning. I det här fallet är en tredje MySQL-användare med rimliga men återigen "precis tillräckligt" privilegier lämplig för dem. Vi vill inte förlama teammedlemmen med för få privilegier, men de ska naturligtvis inte kunna ta bort eller ändra saker av misstag.

Eftersom MySQL inte har ROLLER (vid den tidpunkt då den ursprungliga frågan ställdes, och enligt Bill) är det mycket riskabelt att tillåta alla webbskript att bara komma åt MySQL med endast en superanvändare.



  1. Mysql:Konvertera DB från lokal tid till UTC

  2. Spring Data JPA med Java 8 LocalDateTime

  3. Konvertera fbk (firebird) fil till MySql

  4. Anslut genom klausul för att få toppen av hierarkin