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:
GRANTdePRIVILEGESvan het typeALL(dus alles natuurlijk). Opmerking:de meeste moderne MySQL-installaties vereisen niet de optionelePRIVILEGESzoekwoord.- Deze rechten zijn voor
database_nameen het is van toepassing op alle tabellen van die database, die wordt aangegeven door de.*dat volgt. - Deze rechten zijn toegewezen aan
usernamewanneer dieusernameis 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)