For at oprette en ny bruger i MySQL skal du have til­stræk­ke­li­ge ad­mi­ni­stra­tor­ret­tig­he­der eller su­per­bru­ger­ret­tig­he­der, der giver dig mulighed for at oprette bru­ger­kon­ti og ad­mi­ni­stre­re au­to­ri­sa­tio­ner ud over adgang til den respek­ti­ve database. Du skal også vide, hvilken type adgang den nye bruger har brug for, uanset om det er læse- eller skriv­ret­tig­he­der eller endda ad­mi­ni­stra­tor­ret­tig­he­der.

Sådan bruges MySQL’s CREATE USER -kommando

Når du in­stal­le­rer da­ta­ba­sesty­rings­sy­ste­met, opretter MySQL au­to­ma­tisk en root-konto. Denne konto giver dig om­fat­ten­de kontrol over dine databaser, tabeller og brugere, hvilket muliggør effektiv ad­mi­ni­stra­tion. Hvis du har brug for hjælp til in­stal­la­tions­pro­ces­sen, in­de­hol­der vores MySQL-vej­led­ning alle de nød­ven­di­ge op­lys­nin­ger.

Med din root-konto kan du oprette yder­li­ge­re bru­ger­kon­ti eller nye MySQL-brugere og tildele dem au­to­ri­sa­tio­ner. På Ubuntu-systemer med MySQL 5.7 eller nyere versioner er MySQL-root­bru­ge­ren som standard kon­fi­gu­re­ret til at au­ten­ti­fi­ce­re sig selv med auth_socket i stedet for et kodeord. Det betyder, at hvis navnet på den sy­stem­bru­ger, der påkalder MySQL-klienten, adskiller sig fra navnet på den MySQL-bruger, der er angivet i kom­man­do­en, skal du indsætte sudo foran kom­man­do­en for at få adgang til din root-konto:

$ sudo mysql
bash

For at oprette en ny bruger i MySQL skal du bruge kom­man­do­en CREATE USER. Dette giver dig mulighed for at oprette en bruger med et bestemt bru­ger­navn og en bestemt ad­gangs­ko­de:

mysql> CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
bash

Erstat username med et bru­ger­navn efter eget valg. Under host skal du indtaste navnet på den host, hvorfra den nye bruger kan oprette for­bin­del­se. Hvis brugeren kun skal have adgang til databasen fra din lokale Ubuntu-server, kan du indtaste localhost.

Når du vælger god­ken­del­ses­plu­gi­net, har du flere mu­lig­he­der. Pluginet auth_socket tilbyder høj sikkerhed ved at kræve, at brugerne indtaster en ad­gangs­ko­de for at få adgang til databasen. Det begrænser dog fjer­n­for­bin­del­ser, hvilket po­ten­ti­elt kræver en større indsats for eksterne pro­gram­mer for at kunne in­ter­a­ge­re med MySQL. Al­ter­na­tivt kan du udelade delen WITH authentication_plugin af kom­man­do­en for at godkende brugere ved hjælp af MySQL-stan­dard­plu­gi­net caching_sha2_password. Sådan vil kom­man­do­en se ud:

mysql> CREATE USER 'sammy'@'localhost' IDENTIFIED BY 'password';
bash

Når du har oprettet en ny bruger, skal du tildele ved­kom­men­de til­la­del­ser.

Sådan tildeles ret­tig­he­der til brugere i MySQL

Op­ret­tel­se og ad­mi­ni­stra­tion af bru­ger­ret­tig­he­der er afgørende for at op­ret­hol­de da­ta­sik­ker­he­den i MySQL. Den generelle kommando til tildeling af bru­ger­ret­tig­he­der er:

mysql> GRANT PRIVILEGE ON database.table TO 'username'@'host';
bash

Værdien PRIVILEGE bestemmer, hvilke hand­lin­ger brugeren kan udføre i den angivne database og tabel. Du kan erstatte denne værdi med blandt andet følgende kom­man­do­er:

  • CREATE: Giver brugerne mulighed for at oprette en database eller tabel
  • SELECT: Giver brugerne mulighed for at hente data
  • INSERT: Giver brugerne mulighed for at tilføje nye poster til tabeller
  • UPDATE: Giver brugerne mulighed for at ændre ek­si­ste­ren­de poster i tabeller
  • DELETE: Giver brugerne mulighed for at slette ta­bel­po­ster
  • DROP: Giver brugerne mulighed for at slette hele da­ta­ba­se­ta­bel­ler

Du kan også tildele nye brugere flere ret­tig­he­der på én gang. Når du gør det, skal du adskille ret­tig­he­der­ne med et komma:

mysql> GRANT SELECT, INSERT, UPDATE ON database.table TO 'username'@'host';
bash

Au­to­ri­sa­tio­ner til alle databaser eller tabeller kan også gives med en enkelt kommando ved at indtaste * i stedet for de enkelte database- og ta­bel­nav­ne. F.eks. giver følgende kommando en bruger au­to­ri­sa­tion til at søge data (SELECT), tilføje nye poster (INSERT) og ændre ek­si­ste­ren­de poster (UPDATE) i alle databaser og tabeller.

mysql> GRANT SELECT, INSERT, UPDATE ON *.* TO 'username'@'host';
bash

Når du har udført de CREATE USER eller GRANT kom­man­do­er i MySQL, kan du bruge kom­man­do­en FLUSH PRIVILEGES til at opdatere databasen. Dette ge­nind­læ­ser au­to­ri­sa­tions­ta­bel­ler­ne og sikrer, at de nye au­to­ri­sa­tio­ner træder i kraft:

mysql> FLUSH PRIVILEGES;
bash

Det er dog vigtigt kun at give brugerne de ret­tig­he­der, de har brug for. Hvis du giver en bruger fuld kontrol, kan det udgøre en stor sik­ker­heds­ri­si­ko.

Sådan til­ba­ge­kal­des bru­ger­ret­tig­he­der fra brugere i MySQL

Kom­man­do­en REVOKE bruges til at fjerne bru­ger­ret­tig­he­der i MySQL. Syntaksen ligner den for kom­man­do­en GRANT. Med denne kommando skal du dog bruge FROM i stedet for TO:

mysql> REVOKE type_of_permission ON database_name.table_name FROM 'username'@'host';
bash

For at vise de aktuelle til­la­del­ser, som en bruger har, kan du bruge kom­man­do­en SHOW GRANTS:

mysql> SHOW GRANTS FOR 'username'@'host';
bash

Du kan bruge kom­man­do­en DROP til at slette en bruger:

mysql> DROP USER 'username'@'localhost';
bash

Du skal være meget forsigtig, når du sletter brugere, især brugere med ad­mi­ni­stra­tor­ret­tig­he­der. Sørg for, at du kun fjerner brugere, du virkelig ønsker at slette, for at undgå util­sig­tet datatab.

Når du er færdig med at oprette nye MySQL-brugere og tildele dem ret­tig­he­der, kan du afslutte MySQL-klienten:

mysql> exit
bash

45d969e266677cabb44ceaf95418e879

a031a90e7a9561de7ffb4b2a6a2bdb0c

Gå til ho­ved­me­nu­en