Hvordan opprette en ny bruker og gi tillatelser i MySQL


MySQL er et populært og mye brukt databasestyringssystem som lagrer og organiserer data og lar brukere hente det. Den kommer med et stort utvalg alternativer som gir brukere visse tillatelser til tabeller og databaser.

I denne veiledningen lærer du hvordan du oppretter en ny bruker og gir tillatelser i MySQL-databasen.

Hvordan opprette en ny bruker i MySQL

For å opprette en ny bruker logger du først på MySQL-skallet.

$ sudo mysql -u root -p

Oppgi sudo-passordet etterfulgt av passordet som ble gitt når du satte opp MySQL-databasen og trykk ENTER. Deretter vil du få denne forespørselen.

For å opprette en ny bruker, bruk syntaksen vist nedenfor:

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

For å opprette en ny bruker kalt 'tecmint' i databasen, kaller du for eksempel kommandoen:

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

Når du legger til en bruker lokalt, dvs. på systemet du har installert MySQL, er brukerens vert spesifisert som lokalvert, og ikke IP-adressen. Nøkkelordet 'localhost' oversettes til 'denne datamaskinen' og MySQL behandler det unikt. I utgangspunktet brukes localhost av mysql-klienten for å etablere en tilkobling til den lokalt installerte MySQL-databaseserveren.

Foreløpig har ikke tecmint-brukeren noen tillatelser til å samhandle med databasene. Faktisk kan brukeren ikke engang få tilgang til MySQL-skallet.

For å gi brukeren full tilgang til alle databasene, inkludert tabellene, kjør.

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

I kommandoen ovenfor peker stjernene til henholdsvis databasen og tabellen som brukeren har tilgang til. Den gir brukeren alle rettighetene til databasen – les, skriv, rediger og utfør, inkludert å utføre alle oppgavene på tvers av andre databaser og tabeller også.

Så langt har vi gitt brukeren full tilgang til databasen. Selv om dette er nyttig for å forklare MySQL-konsepter, anbefales det generelt ikke, da det kan utgjøre en sikkerhetsrisiko for databasene dine. Bare tenk på hva som kan skje hvis en hacker fikk tak i brukerens passord. Vi vil gå videre og diskutere hvordan du tildeler spesifikke tillatelser i neste avsnitt.

Når du er ferdig med å tildele tillatelser til brukeren, last inn alle privilegiene på nytt som vist for at endringene skal tre i kraft.

MariaDB [none]> FLUSH PRIVILEGES

Slik gir du forskjellige brukertillatelser

Her er en oversikt over mulige tillatelser du kan gi brukere:

  • ALLE PRIVILEGIER – Som tidligere sett, gir dette en MySQL-bruker full tilgang til en spesifikk database.
  • CREATE – Lar brukere opprette nye databaser eller tabeller.
  • DROP – Gjør det mulig for brukere å slette databaser eller brukere.
  • INSERT – Lar brukere sette inn rader i tabeller.
  • SLETT – Lar brukere slette rader fra tabeller.
  • SELECT – med «SELECT»-tillatelse kan brukere lese innholdet i en tabell.
  • OPPDATERING – Lar brukere oppdatere radene i en tabell.
  • GIVE VALG – Brukere kan gi eller fjerne rettighetene til andre brukere.

For å gi en spesifikk brukertillatelse, bruk syntaksen:

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

I tillegg kan du tildele tillatelser til alle tabellene i en database med et enkelt stjernesymbol som vist:

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

For eksempel, for å tildele SELECT-tillatelser til 'tecmint'-bruker på alle tabeller i databasen testdb, kjør kommandoen.

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

Fjern deretter rettighetene for at endringene skal tre i kraft.

MariaDB [none]> FLUSH PRIVILEGES;

I tillegg kan du tildele flere tillatelser på en gang ved å skille dem med et komma som vist.

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

Hvordan tilbakekalle MySQL-tillatelser

For å tilbakekalle tillatelser fra en bruker, bruk syntaksen:

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

For for eksempel å tilbakekalle INSERT-tillatelser fra brukeren 'tecmint', kjør kommandoen.

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

For å ta en titt på en brukers nåværende tillatelser, kjør:

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

Fra utdataene nedenfor kan vi se at INSERT-tillatelsen har blitt fjernet fra 'tecmint'-brukeren og etterlater bare SELECT- og UPDATE-rettigheter på testdb-databasen.

For å teste ut pålogging til MySQL-skallet med den nye brukeren, logg først ut.

MariaDB [none]> quit;

Logg deretter på igjen.

$ sudo mysql -u tecmint -p

Oppgi brukerens passord og trykk ENTER for å få tilgang til skallet.

For å droppe en bruker, bruk DROP-kommandoen, akkurat som når du sletter en database.

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

Du vil kanskje også lese følgende MySQL-relaterte artikler:

  • Nyttige tips for å feilsøke vanlige feil i MySQL
  • Mytop – Et nyttig verktøy for å overvåke MySQL/MariaDB-ytelse i Linux
  • Slik endrer du standard MySQL/MariaDB-port i Linux
  • Hvordan tilbakestille MySQL eller MariaDB root-passord i Linux

Forhåpentligvis kan du nå opprette brukere i MySQL-databaseserverne og komfortabelt tildele eller tilbakekalle tillatelser.