Om te beginnen met het bewerken van privileges in MySQL, moet u eerst inloggen op uw server en vervolgens verbinding maken met de mysql
cliënt. Meestal wil je verbinding maken met root
of welk account dan ook uw primaire, initiële 'supergebruiker'-account is dat volledige toegang heeft gedurende de gehele MySQL-installatie.
Typisch de root
gebruiker heeft een authenticatiewachtwoord gekregen toen MySQL werd geïnstalleerd, maar als dat niet het geval is, moet u stappen ondernemen om uw beveiliging te verbeteren door root
toe te voegen wachtwoorden zoals geïllustreerd in de officiële documentatie.
Verbinding maken met de MySQL Command-Line Tool
Voor dit voorbeeld gaan we uit van root
is het primaire MySQL-account. Beginnen met het gebruik van de MySQL-opdrachtregeltool (mysqlcli
), maak verbinding met uw server als de root
gebruiker, geef dan de mysql
commando:
$ 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>
Als dit lukt, ziet u wat uitvoer over uw MySQL-verbinding en kijkt u naar beneden op de mysql
prompt.
Opmerking:in het geval dat u niet rechtstreeks verbinding kunt maken met de server als de root
gebruiker voordat u verbinding maakt met mysql
, kunt u de gebruiker specificeren die u wilt verbinden als door de --user=
. toe te voegen vlag:
$ mysql --user=username
Privileges verlenen
Nu je op de mysqlcli
. bent prompt, hoeft u alleen de GRANT
commando met de nodige opties om de juiste rechten toe te passen.
Privilege-typen
De GRANT
commando is in staat om een breed scala aan privileges toe te passen, alles van de mogelijkheid om CREATE
tabellen en databases, lees of schrijf FILES
, en zelfs SHUTDOWN
de server. Er is een breed scala aan vlaggen en opties beschikbaar voor de opdracht, dus misschien wilt u uzelf vertrouwd maken met wat GRANT
kunt doen door door de officiële documentatie te bladeren.
Database-specifieke rechten
In de meeste gevallen verleent u privileges aan MySQL-gebruikers op basis van de specifieke database
dat account moet toegang hebben. Het is bijvoorbeeld gebruikelijk voor elke unieke MySQL database
op een server om zijn eigen unieke user
. te hebben eraan gekoppeld, zodat slechts één enkele user
heeft authenticatietoegang tot één enkele database
en omgekeerd.
Om GRANT ALL
privileges aan een user
, waardoor die gebruiker volledige controle heeft over een specifieke database
, gebruik de volgende syntaxis:
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
Met dat commando hebben we MySQL gezegd om:
GRANT
dePRIVILEGES
van het typeALL
(dus alles natuurlijk). Opmerking:de meeste moderne MySQL-installaties vereisen niet de optionelePRIVILEGES
zoekwoord.- Deze rechten zijn voor
database_name
en het is van toepassing op alle tabellen van die database, die wordt aangegeven door de.*
dat volgt. - Deze rechten zijn toegewezen aan
username
wanneer dieusername
is lokaal verbonden, zoals gespecificeerd door@'localhost'
. Om een geldige host op te geven, vervangt u'localhost'
met'%'
.
In plaats van alle privileges aan de hele database te geven, wilt u misschien de tolkien
gebruiker alleen de mogelijkheid om gegevens te lezen (SELECT
) van de authors
tabel van de books
databank. Dat zou gemakkelijk als volgt kunnen worden bereikt:
mysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
Een andere supergebruiker maken
Hoewel het niet bijzonder veilig is, wilt u in sommige gevallen misschien een andere 'supergebruiker' maken, die ALLE privileges heeft voor ALLE databases op de server. Dat kan op dezelfde manier worden uitgevoerd als hierboven, maar door de database_name
. te vervangen met het jokerteken asterisk:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
Nu tolkien
heeft dezelfde rechten als de standaard root
account, pas op!
Uw wijzigingen opslaan
Als laatste stap na eventuele updates van de gebruikersrechten, moet u ervoor zorgen dat u de wijzigingen opslaat door de FLUSH PRIVILEGES
op te geven. commando van de mysql
prompt:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)