sql >> Databasteknik >  >> RDS >> Mysql

Hur man beviljar alla privilegier på en databas i MySQL

För att börja redigera privilegier i MySQL måste du först logga in på din server och sedan ansluta till mysql klient. Vanligtvis vill du ansluta med root eller vilket konto som helst som är ditt primära, initiala "superanvändar"-konto som har full åtkomst genom hela MySQL-installationen.

Vanligtvis root användaren kommer att ha tilldelats ett autentiseringslösenord när MySQL installerades, men om så inte är fallet bör du vidta åtgärder för att förbättra din säkerhet genom att lägga till root lösenord som visas i den officiella dokumentationen.

Ansluta till MySQL kommandoradsverktyg

För det här exemplet antar vi root är det primära MySQL-kontot. För att börja använda MySQL Kommandoradsverktyget (mysqlcli ), anslut till din server som root användare, utfärda sedan mysql kommando:

$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>

Om det lyckas kommer du att se lite utdata om din MySQL-anslutning och vara vänd nedåt med mysql uppmaning.

Obs:I händelse av att du inte kan ansluta direkt till servern som root användare innan du ansluter till mysql , kan du ange vilken användare du vill ansluta som genom att lägga till --user= flagga:

$ mysql --user=username

Ge privilegier

Nu när du är vid mysqlcli uppmaning behöver du bara utfärda GRANT kommandot med de nödvändiga alternativen för att tillämpa lämpliga behörigheter.

Behörighetstyper

GRANT kommandot kan tillämpa en mängd olika privilegier, allt från möjligheten att CREATE tabeller och databaser, läs eller skriv FILES , och till och med SHUTDOWN servern. Det finns ett brett utbud av flaggor och alternativ tillgängliga för kommandot, så du kanske vill bekanta dig med vad GRANT faktiskt kan göra genom att bläddra igenom den officiella dokumentationen.

Databasspecifika rättigheter

I de flesta fall kommer du att bevilja privilegier till MySQL-användare baserat på den specifika database det kontot ska ha tillgång till. Det är till exempel vanlig praxis för varje unik MySQL database på en server för att ha sin egen unika user associerad med den, så att endast en enda user har autentiseringsåtkomst till en enda database och vice versa.

För att GRANT ALL privilegier till en user , vilket ger användaren full kontroll över en specifik database , använd följande syntax:

mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';

Med det kommandot har vi sagt till MySQL att:

  • GRANT PRIVILEGES av typen ALL (alltså allt såklart). Obs:De flesta moderna MySQL-installationer kräver inte de valfria PRIVILEGES sökord.
  • Dessa privilegier är för database_name och det gäller alla tabeller i den databasen, vilket indikeras av .* som följer.
  • Dessa privilegier tilldelas username när det username är ansluten via lokalt, som specificerats av @'localhost' . För att ange en giltig värd, byt ut 'localhost' med '%' .

Istället för att ge alla privilegier till hela databasen kanske du vill ge tolkien användaren endast möjlighet att läsa data (SELECT ) från authors tabell över books databas. Det skulle lätt kunna göras så här:

mysql> GRANT ALL PRIVILEGES ON books.authors  TO 'tolkien'@'localhost';

Skapa ytterligare en superanvändare

Även om det inte är särskilt säkert, kanske du i vissa fall vill skapa en annan "superanvändare", som har ALLA privilegier över ALLA databaser på servern. Det kan utföras på liknande sätt som ovan, men genom att ersätta database_name med jokertecknet asterisk:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';

Nu tolkien har samma privilegier som standard root konto, se upp!

Spara dina ändringar

Som ett sista steg efter eventuella uppdateringar av användarbehörigheterna, se till att spara ändringarna genom att utfärda FLUSH PRIVILEGES kommandot från mysql uppmaning:

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

  1. Igen och igen! Hantera återkommande händelser i en datamodell

  2. Bifoga strängar i enstaka citattecken i SQLite-frågeresultat

  3. Sök med kommaseparerat värde mysql

  4. TEMPFILE Offline Fysisk standby