Sådan oprettes en ny bruger og giver tilladelser i MySQL


MySQL er et populært og meget anvendt databasestyringssystem, der gemmer og organiserer data og giver brugerne mulighed for at hente dem. Den leveres med en lang række muligheder, der giver brugerne visse tilladelser til tabeller og databaser.

I denne vejledning lærer du, hvordan du opretter en ny bruger og giver tilladelser i MySQL-databasen.

Sådan oprettes en ny bruger i MySQL

Log ind på MySQL-skalen for at oprette en ny bruger.

$ sudo mysql -u root -p

Angiv sudo-adgangskoden efterfulgt af den adgangskode, der blev angivet, når du opretter MySQL-databasen, og tryk ENTER. Derefter får du denne prompt.

For at oprette en ny bruger skal du bruge syntaksen vist nedenfor:

MariaDB [none]> CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

For eksempel, for at oprette en ny bruger kaldet 'tecmint' i databasen, skal du påkalde kommandoen:

MariaDB [none]> CREATE USER 'tecmint'@'localhost' IDENTIFIED BY 'QkYKmw$5tec';

Når du tilføjer en bruger lokalt, dvs. på det system, du har installeret MySQL, angives brugerens vært som localhost og ikke IP-adressen. Nøgleordet 'localhost' oversættes til 'denne computer', og MySQL behandler det entydigt. Dybest set bruges localhost af mysql-klienten til at oprette en forbindelse til den lokalt installerede MySQL-databaseserver.

Indtil videre har tecmint-brugeren ikke nogen tilladelse til at interagere med databaser. Faktisk kan brugeren ikke engang få adgang til MySQL-shell.

For at give brugeren fuld adgang til alle databaser, inklusive tabellerne, skal du køre.

MariaDB [none]> GRANT ALL PRIVILEGES ON * . * TO 'tecmint'@'localhost';

I kommandoen ovenfor peger stjernerne på henholdsvis databasen og tabellen, som brugeren kan få adgang til. Det giver brugeren alle rettigheder til databasen - læs, skriv, rediger og udfør, herunder også at udføre alle opgaver på tværs af andre databaser og tabeller.

Indtil videre har vi givet brugeren fuld adgang til databasen. Selvom dette er praktisk til at forklare MySQL-koncepter, anbefales det generelt ikke, da det kan udgøre en sikkerhedsrisiko for dine databaser. Tænk bare på, hvad der kan ske, hvis en hacker fik fat i brugerens adgangskode. Vi fortsætter videre og diskuterer, hvordan du tildeler specifikke tilladelser i det næste afsnit.

Når du er færdig med at tildele tilladelser til brugeren, skal du genindlæse alle rettigheder som vist for at ændringerne skal træde i kraft.

MariaDB [none]> FLUSH PRIVILEGES

Sådan tildeles forskellige brugertilladelser

Her er en oversigt over de mulige tilladelser, som du kan give brugere:

  • ALL PRIVILEGES – As previously seen, this grants a MySQL user full access to a specific database.
  • CREATE – Allows users to create new databases or tables.
  • DROP – Enables users to delete databases or users.
  • INSERT – Allows users to insert rows in tables.
  • DELETE – Allows users to delete rows from tables.
  • SELECT – with ‘SELECT’ permission, users are able to read the contents of a table.
  • UPDATE – Allows users to updates the rows in a table.
  • GRANT OPTION – Users can grant or remove the privileges of other users.

For at give en bestemt bruger tilladelse skal du bruge syntaksen:

MariaDB [none]> GRANT permission_type ON database_name.table_name TO 'username'@'localhost';

Derudover kan du tildele tilladelser til alle tabellerne i en database med et enkelt stjernesymbol som vist:

MariaDB [none]> GRANT permission_type ON database_name.* TO 'username'@'localhost';

For eksempel, for at tildele SELECT tilladelser til 'tecmint' bruger på alle tabeller i databasen testdb, skal du køre kommandoen.

MariaDB [none]> GRANT SELECT ON testdb.* TO 'tecmint'@'localhost';

Skyl derefter privilegierne for at ændringerne skal træde i kraft.

MariaDB [none]> FLUSH PRIVILEGES;

Derudover kan du tildele flere tilladelser ad gangen ved at adskille dem med et komma som vist.

MariaDB [none]> GRANT INSERT, UPDATE ON testdb.* TO 'tecmint'@'localhost';

Sådan tilbagekaldes MySQL-tilladelser

For at tilbagekalde tilladelser fra en bruger skal du bruge syntaksen:

MariaDB [none]> REVOKE permission_type ON database_name.table_name FROM 'username'@'localhost';

Hvis du f.eks. Vil tilbagekalde INSERT-tilladelser fra brugeren 'tecmint', skal du køre kommandoen.

MariaDB [none]> REVOKE INSERT ON testdb.* FROM tecmint'@'localhost';
MariaDB [none]> FLUSH PRIVILEGES

For at kigge på en brugers aktuelle tilladelser skal du udføre:

MariaDB [none]> SHOW GRANTS FOR 'username'@'localhost';

Fra nedenstående output kan vi se, at INSERT-tilladelsen er blevet udelukket fra 'tecmint'-brugeren, hvilket kun efterlader SELECT- og UPDATE-rettigheder i testdb-databasen.

For at teste at logge ind på MySQL-skallen ved hjælp af den nye bruger skal du først logge ud.

MariaDB [none]> quit;

Log derefter ind igen.

$ sudo mysql -u tecmint -p

Angiv brugerens adgangskode, og tryk på ENTER for at få adgang til skallen.

For at droppe en bruger skal du bruge DROP-kommandoen, ligesom du ville gøre, når du sletter en database.

MariaDB [none]> DROP USER 'username'@'localhost';

Du vil muligvis også læse følgende MySQL-relaterede artikler:

  • Useful Tips to Troubleshoot Common Errors in MySQL
  • Mytop – A Useful Tool for Monitoring MySQL/MariaDB Performance in Linux
  • How to Change Default MySQL/MariaDB Port in Linux
  • How to Reset MySQL or MariaDB Root Password in Linux

Forhåbentlig kan du nu oprette brugere i dine MySQL-databaseservere og komfortabelt tildele eller tilbagekalde tilladelser.