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 typenALL
(alltså allt såklart). Obs:De flesta moderna MySQL-installationer kräver inte de valfriaPRIVILEGES
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 detusername
ä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)