Za ustvar­ja­nje novega upo­rab­ni­ka v MySQL po­tre­bu­je­te zadostne ad­mi­ni­stra­tor­ske pravice ali pri­vi­le­gi­je su­pe­ru­po­rab­ni­ka, ki vam omogočajo ustvar­ja­nje upo­rab­ni­ških računov in upra­vlja­nje po­o­bla­stil, poleg dostopa do zadevne zbirke podatkov. Prav tako morate vedeti, kakšen dostop potrebuje novi uporabnik, ali gre za pravice branja, pisanja ali celo ad­mi­ni­stra­tor­ske pravice.

Kako upo­ra­blja­ti ukaz MySQL CREATE USER

Pri na­me­sti­tvi sistema za upra­vlja­nje po­dat­kov­nih baz MySQL samodejno ustvari root račun. Ta račun vam omogoča popoln nadzor nad vašimi po­dat­kov­ni­mi bazami, tabelami in upo­rab­ni­ki, kar omogoča učin­ko­vi­to upra­vlja­nje. Če po­tre­bu­je­te pomoč pri na­me­sti­tvi, naš MySQL tutorial vsebuje vse potrebne in­for­ma­ci­je.

S svojim korenskim računom lahko ustvarite dodatne upo­rab­ni­ške račune ali nove upo­rab­ni­ke MySQL in jim dodelite po­o­bla­sti­la. Na sistemih Ubuntu z MySQL 5.7 ali novejšimi raz­li­či­ca­mi je uporabnik root MySQL privzeto na­sta­vljen tako, da se av­ten­ti­fi­ci­ra s pluginom auth_socket namesto z geslom. To pomeni, da če se ime sis­tem­ske­ga upo­rab­ni­ka, ki kliče odjemalca MySQL, razlikuje od imena upo­rab­ni­ka MySQL, na­ve­de­ne­ga v ukazu, morate pred ukazom dodati sudo, da pridobite dostop do svojega root računa:

$ sudo mysql
bash

Za ustvar­ja­nje novega upo­rab­ni­ka v MySQL uporabite ukaz CREATE USER. To vam omogoča ustvar­ja­nje upo­rab­ni­ka z določenim upo­rab­ni­škim imenom in geslom:

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

Za­me­njaj­te username z imenom upo­rab­ni­ka po vaši izbiri. V polje host vnesite ime go­sti­te­lja, s katerega se lahko novi uporabnik poveže. Če naj bi imel uporabnik dostop do zbirke podatkov samo z vašega lokalnega strežnika Ubuntu, lahko vnesete localhost.

Pri izbiri vtičnika za av­ten­ti­fi­ka­ci­jo imate na voljo več možnosti. Vtičnik auth_socket ponuja visoko varnost, saj od upo­rab­ni­kov zahteva vnos gesla za dostop do baze podatkov. Vendar omejuje oddaljene povezave, kar lahko zahteva več truda za zunanje programe, ki ko­mu­ni­ci­ra­jo z MySQL. Al­ter­na­tiv­no lahko izpustite del ukaza WITH authentication_plugin, da av­ten­ti­fi­ci­ra­te upo­rab­ni­ke z uporabo stan­dar­dne­ga vtičnika MySQL caching_sha2_password. Tako bi izgledal ukaz:

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

Ko ustvarite novega upo­rab­ni­ka, mu morate dodeliti po­o­bla­sti­la.

Kako dodeliti pravice upo­rab­ni­kom v MySQL

Ustvar­ja­nje in upra­vlja­nje upo­rab­ni­ških pravic je bistveno za ohra­nja­nje varnosti podatkov v MySQL. Splošni ukaz za do­de­lje­va­nje upo­rab­ni­ških pravic je:

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

Vrednost PRIVILEGE določa, katere ukrepe lahko uporabnik izvede v določeni zbirki podatkov in tabeli. To vrednost lahko na­do­me­sti­te med drugim z na­sle­dnji­mi ukazi:

  • CREATE: Omogoča upo­rab­ni­kom ustvar­ja­nje baze podatkov ali tabele
  • SELECT: Omogoča upo­rab­ni­kom, da pridobijo podatke
  • INSERT: Omogoča upo­rab­ni­kom dodajanje novih vnosov v tabele
  • UPDATE: Omogoča upo­rab­ni­kom spre­mi­nja­nje ob­sto­je­čih vnosov v tabelah
  • DELETE: Omogoča upo­rab­ni­kom, da izbrišejo vnose v tabelah
  • DROP: Omogoča upo­rab­ni­kom, da izbrišejo celotne tabele baze podatkov

Novim upo­rab­ni­kom lahko dodelite tudi več pri­vi­le­gi­jev hkrati. Pri tem morate pri­vi­le­gi­je ločiti z vejico:

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

Po­o­bla­sti­la za vse baze podatkov ali tabele je mogoče dodeliti tudi z enim samim ukazom, tako da namesto po­sa­me­znih imen baz podatkov in tabel vnesete *. Na primer, naslednji ukaz upo­rab­ni­ku dodeli po­o­bla­sti­lo za po­i­zve­do­va­nje podatkov (SELECT), dodajanje novih vnosov (INSERT) in spre­mi­nja­nje ob­sto­je­čih vnosov (UPDATE) v vseh bazah podatkov in tabelah.

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

Ko izvedete CREATE USER ali GRANT ukazov v MySQL, lahko uporabite ukaz FLUSH PRIVILEGES za po­so­do­bi­tev zbirke podatkov. To ponovno naloži tabele po­o­bla­stil in zagotovi, da se nova po­o­bla­sti­la začnejo upo­ra­blja­ti:

mysql> FLUSH PRIVILEGES;
bash

Vendar je pomembno, da upo­rab­ni­kom dodelite samo po­o­bla­sti­la, ki jih po­tre­bu­je­jo. Če upo­rab­ni­ku dodelite popoln nadzor, lahko to pred­sta­vlja veliko varnostno tveganje.

Kako pre­kli­ca­ti upo­rab­ni­ške pravice upo­rab­ni­kom v MySQL

Ukaz REVOKE se uporablja za od­stra­nje­va­nje upo­rab­ni­ških pravic v MySQL. Sintaksa je podobna sintaksi ukaza GRANT. Vendar pa morate pri tem ukazu namesto TO uporabiti FROM:

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

Za prikaz trenutnih po­o­bla­stil, ki jih ima uporabnik, lahko uporabite ukaz SHOW GRANTS:

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

Za brisanje upo­rab­ni­ka lahko uporabite ukaz DROP:

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

Pri brisanju upo­rab­ni­kov, zlasti tistih z ad­mi­ni­stra­tiv­ni­mi pravicami, morate biti izredno previdni. Pre­pri­čaj­te se, da od­stra­ni­te samo tiste upo­rab­ni­ke, ki jih resnično želite izbrisati, da ne pride do nenamerne izgube podatkov.

Ko končate z ustvar­ja­njem novih upo­rab­ni­kov MySQL in do­de­lje­va­njem pravic, lahko zaprete odjemalca MySQL:

mysql> exit
bash

45d969e266677cabb44ceaf95418e879

bf812055a1ab3935cb15b43974c56856

01524320532809020958f4b5d042b02d

1b67cfdd89611352c3472ca463d3de9f

26285f4721b20b07e60196b9449d21e7

b7f8469a4592c8d2235cdd9e51f76293

a688cb080be603b459387ced9a2a7ac9

Go to Main Menu