sql >> Database >  >> RDS >> Mysql

Hoe u alle rechten op een database in MySQL kunt verlenen

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 de PRIVILEGES van het type ALL (dus alles natuurlijk). Opmerking:de meeste moderne MySQL-installaties vereisen niet de optionele PRIVILEGES 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 die username 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)

  1. Hoe voer ik een query uit met behulp van velden in het nieuwe PostgreSQL JSON-gegevenstype?

  2. Strings splitsen:een vervolg

  3. Hoe om te gaan met een tabelkolom die is genoemd met een gereserveerd SQL-zoekwoord?

  4. Hoe vind je het derde of nᵗʰ maximum salaris uit de salaristabel?