For at begynde at redigere privilegier i MySQL skal du først logge ind på din server og derefter oprette forbindelse til mysql
klient. Typisk vil du gerne oprette forbindelse med root
eller hvilken konto, der er din primære, første 'superbruger'-konto, som har fuld adgang gennem hele MySQL-installationen.
Typisk root
brugeren vil være blevet tildelt en autentificeringsadgangskode, da MySQL blev installeret, men hvis det ikke er tilfældet, bør du tage skridt til at øge din sikkerhed ved at tilføje root
adgangskoder som illustreret i den officielle dokumentation.
Opretter forbindelse til MySQL Command-Line Tool
I dette eksempel antager vi root
er den primære MySQL-konto. For at begynde at bruge MySQL-kommandolinjeværktøjet (mysqlcli
), opret forbindelse til din server som root
bruger, udsted derefter 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>
Hvis det lykkes, vil du se noget output om din MySQL-forbindelse og vende nedad med mysql
prompt.
Bemærk:I tilfælde af at du ikke kan oprette forbindelse direkte til serveren som root
bruger, før du opretter forbindelse til mysql
, kan du angive den bruger, du ønsker at forbinde som ved at tilføje --user=
flag:
$ mysql --user=username
Tildeling af privilegier
Nu hvor du er ved mysqlcli
prompt, behøver du kun udstede GRANT
kommando med de nødvendige muligheder for at anvende de relevante tilladelser.
Privilegetyper
GRANT
kommandoen er i stand til at anvende en lang række privilegier, alt fra evnen til at CREATE
tabeller og databaser, læs eller skriv FILES
, og endda SHUTDOWN
serveren. Der er en bred vifte af flag og muligheder tilgængelige for kommandoen, så du ønsker måske at gøre dig bekendt med hvad GRANT
faktisk kan gøre ved at gennemse den officielle dokumentation.
Databasespecifikke rettigheder
I de fleste tilfælde vil du give privilegier til MySQL-brugere baseret på den særlige database
den konto skal have adgang til. Det er f.eks. almindelig praksis for hver unik MySQL database
på en server for at have sin egen unikke user
forbundet med det, således at kun én enkelt user
har godkendelsesadgang til én enkelt database
og omvendt.
For at GRANT ALL
privilegier til en user
, hvilket giver denne bruger fuld kontrol over en specifik database
, brug følgende syntaks:
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
Med den kommando har vi fortalt MySQL at:
GRANT
PRIVILEGES
af typenALL
(således alt selvfølgelig). Bemærk:De fleste moderne MySQL-installationer kræver ikke de valgfriePRIVILEGES
søgeord.- Disse privilegier er for
database_name
og det gælder alle tabeller i den pågældende database, hvilket er angivet med.*
der følger. - Disse rettigheder er tildelt
username
når detusername
er forbundet via lokalt, som angivet af@'localhost'
. For at angive en gyldig vært skal du erstatte'localhost'
med'%'
.
I stedet for at give alle privilegier til hele databasen, vil du måske give tolkien
bruger kun mulighed for at læse data (SELECT
) fra authors
tabel over books
database. Det ville let kunne opnås sådan:
mysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
Oprettelse af endnu en superbruger
Selvom det ikke er særlig sikkert, kan du i nogle tilfælde ønske at oprette en anden 'superbruger', som har ALLE privilegier på tværs af ALLE databaser på serveren. Det kan udføres på samme måde som ovenfor, men ved at erstatte database_name
med jokertegnet stjerne:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
Nu tolkien
har de samme rettigheder som standard root
konto, pas på!
Gem dine ændringer
Som et sidste trin efter eventuelle opdateringer af brugerrettighederne skal du sørge for at gemme ændringerne ved at udstede FLUSH PRIVILEGES
kommando fra mysql
prompt:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)