pokaż loginy do serwera (zwróć uwagę, że %
oznacza dowolnego hosta lub symbol wieloznaczny)
select user,host from mysql.user;
+-----------+------------+
| user | host |
+-----------+------------+
| ajax_guy | % |
| joe7 | % |
| joe8 | % |
+-----------+------------+
pokaż, jakie granty istnieją dla określonego użytkownika.
show grants for 'ajax_guy'@'%';
+----------------------------------------------------------------------
| Grants for [email protected]%
+----------------------------------------------------------------------
| GRANT USAGE ON *.* TO 'ajax_guy'@'%' IDENTIFIED BY PASSWORD ...
| GRANT ALL PRIVILEGES ON `ajax_stuff`.* TO 'ajax_guy'@'%'
| GRANT ALL PRIVILEGES ON `ajax_stuff`.`ajax_stuff` TO 'ajax_guy'@'%'
+----------------------------------------------------------------------
Jak przyznać dostęp do określonej bazy danych do określonego loginu.Poniżej przyznajemy wszystkie prawa użytkownikowi do so_gibberish
baza danych .
grant ALL on so_gibberish.* to 'ajax_guy'@'%';
Spójrz na dotacje obowiązujące teraz dla tego loginu
+----------------------------------------------------------------------
| Grants for [email protected]%
+----------------------------------------------------------------------
| GRANT USAGE ON *.* TO 'ajax_guy'@'%' IDENTIFIED BY PASSWORD ...
| GRANT ALL PRIVILEGES ON `ajax_stuff`.* TO 'ajax_guy'@'%'
| GRANT ALL PRIVILEGES ON `so_gibberish`.* TO 'ajax_guy'@'%'
| GRANT ALL PRIVILEGES ON `ajax_stuff`.`ajax_stuff` TO 'ajax_guy'@'%'
+----------------------------------------------------------------------
Utwórz nowy login drew_saturday
z hasłem friday987
.Ma wszystkie uprawnienia do bazy danych so_gibberish
i może się zalogować z dowolnego hosta (%
)
grant ALL on so_gibberish.* to 'drew_saturday'@'%' IDENTIFIED BY 'friday987';
select user,host,password from mysql.user where user='drew_saturday';
+---------------+------+-------------------------------------------+
| user | host | password |
+---------------+------+-------------------------------------------+
| drew_saturday | % | *4600ED0F377308959665877BD327D4788DC2071F |
+---------------+------+-------------------------------------------+
Nawiasem mówiąc, powyższe hasło jest haszowanym hasłem.
Uwaga:dla MySQL 5.7 powyższe polecenie to:
select user,host,authentication_string from mysql.user where user='drew_saturday';
Strona podręcznika Mysql na Grant
. Nie nadawaj nadmiernych uprawnień użytkownikom korzystającym z grant ALL on *. ...
. To byłoby dla wszystkich bazy danych w systemie. Po prostu przeczytaj instrukcję, a mniej znaczy więcej.
Czasami administratorzy chcą przyznać dostęp tylko do kilku tabel w bazie danych (nie do wszystkich tabel w niej) do logowania. Koniecznie przeczytaj instrukcję.
I ostatnia rzecz. 'drew_saturday'@'%' to inny login niż 'drew_saturday'@'NOT-local' (pożyczając z tytułu). Są to różne loginy z różnymi uprawnieniami. To jest punkt pierwszej rzeczy, którą napisałem tam na górze.