Aby rozpocząć edycję uprawnień w MySQL, musisz najpierw zalogować się do swojego serwera, a następnie połączyć się z mysql klient. Zazwyczaj będziesz chciał połączyć się z root lub którekolwiek konto jest Twoim głównym, początkowym kontem „super użytkownika”, które ma pełny dostęp przez całą instalację MySQL.
Zazwyczaj root użytkownik otrzyma hasło uwierzytelniające podczas instalacji MySQL, ale jeśli tak nie jest, powinieneś podjąć kroki w celu zwiększenia bezpieczeństwa, dodając root hasła zgodnie z ilustracją w oficjalnej dokumentacji.
Łączenie z narzędziem wiersza poleceń MySQL
W tym przykładzie przyjmiemy root jest głównym kontem MySQL. Aby rozpocząć korzystanie z narzędzia wiersza poleceń MySQL (mysqlcli ), połącz się ze swoim serwerem jako root użytkownika, a następnie wydaj mysql polecenie:
$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
Jeśli się powiedzie, zobaczysz dane wyjściowe dotyczące połączenia MySQL i będziesz skierowany w dół mysql monit.
Uwaga:w przypadku, gdy nie możesz połączyć się bezpośrednio z serwerem jako root użytkownika przed połączeniem z mysql , możesz określić użytkownika, z którym chcesz się połączyć jako dodając --user= flaga:
$ mysql --user=username
Przyznawanie uprawnień
Teraz, gdy jesteś w mysqlcli monit, wystarczy wydać GRANT polecenie z niezbędnymi opcjami, aby zastosować odpowiednie uprawnienia.
Typy uprawnień
GRANT polecenie jest w stanie zastosować szeroką gamę uprawnień, wszystko od możliwości CREATE tabele i bazy danych, odczyt lub zapis FILES , a nawet SHUTDOWN serwer. W poleceniu dostępnych jest wiele flag i opcji, więc możesz chcieć zapoznać się z tym, co GRANT może to zrobić, przeglądając oficjalną dokumentację.
Uprawnienia specyficzne dla bazy danych
W większości przypadków będziesz nadawać uprawnienia użytkownikom MySQL na podstawie konkretnej database to konto powinno mieć dostęp. Jest to powszechna praktyka, na przykład dla każdej unikalnej database MySQL na serwerze, aby mieć własnego unikalnego user z nim powiązany, tak że tylko jeden user ma dostęp uwierzytelniający do jednej database i odwrotnie.
Aby GRANT ALL uprawnienia do user , pozwalając temu użytkownikowi na pełną kontrolę nad konkretną database , użyj następującej składni:
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
Za pomocą tego polecenia poinstruowaliśmy MySQL, aby:
GRANTPRIVILEGEStypuALL(a więc wszystko oczywiście). Uwaga:większość nowoczesnych instalacji MySQL nie wymaga opcjonalnychPRIVILEGESsłowo kluczowe.- Te uprawnienia dotyczą
database_namei dotyczy wszystkich tabele tej bazy danych, co jest wskazywane przez.*co następuje. - Te uprawnienia są przypisane do
usernamekiedy tausernamejest połączony lokalnie, jak określono przez@'localhost'. Aby określić dowolny prawidłowy host, zastąp'localhost'z'%'.
Zamiast przydzielać wszystkie uprawnienia do całej bazy danych, być może chcesz dać tolkien tylko użytkownik możliwość odczytu danych (SELECT ) od authors tabela books Baza danych. Można to łatwo osiągnąć w ten sposób:
mysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
Tworzenie kolejnego superużytkownika
Chociaż nie jest to szczególnie bezpieczne, w niektórych przypadkach możesz chcieć utworzyć innego „super użytkownika”, który ma WSZYSTKIE uprawnienia we WSZYSTKICH bazach danych na serwerze. Można to zrobić podobnie jak powyżej, ale zastępując database_name z gwiazdką z symbolem wieloznacznym:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
Teraz tolkien ma takie same uprawnienia jak domyślny root konto, uważaj!
Zapisywanie zmian
Jako ostatni krok po wszelkich aktualizacjach uprawnień użytkownika, pamiętaj, aby zapisać zmiany, wydając FLUSH PRIVILEGES polecenie z mysql monit:
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)