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:
GRANT
PRIVILEGES
typuALL
(a więc wszystko oczywiście). Uwaga:większość nowoczesnych instalacji MySQL nie wymaga opcjonalnychPRIVILEGES
słowo kluczowe.- Te uprawnienia dotyczą
database_name
i dotyczy wszystkich tabele tej bazy danych, co jest wskazywane przez.*
co następuje. - Te uprawnienia są przypisane do
username
kiedy tausername
jest 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)