MySQL: tworzenie użytkownika, który może łączyć się z wielu hostów

30

Korzystam z MySQL i muszę utworzyć konto, które można połączyć z hosta lokalnego lub z innego serwera, tj. 10.1.1.1. Więc robię:

CREATE USER 'bob'@'localhost' IDENTIFIED BY 'password123';
CREATE USER 'bob'@'10.1.1.1' IDENTIFIED BY 'password123';
GRANT SELECT, INSERT, UPDATE, DELETE on MyDatabse.* to 'bob'@'localhost', 'bob'@'10.1.1.1';

Działa to dobrze, ale czy istnieje bardziej elegancki sposób na utworzenie konta użytkownika powiązanego z wieloma adresami IP, czy też trzeba to zrobić w ten sposób?

Obawiam się, że w przyszłości uprawnienia zostaną zaktualizowane dla jednego konta „bob”, ale nie dla drugiego.

DrStalker
źródło

Odpowiedzi:

20

Jeśli chcesz ograniczyć się do hosta i nie chcesz określać go w oparciu o podsieć lub symbol wieloznaczny %, jest to jedyny sposób, aby to zrobić. Więcej szczegółów jest dostępnych w dokumentacji MySQL .

Wciąż próbuję znaleźć sposoby na wyeliminowanie narzutu podczas zarządzania uwierzytelnianiem w dużych instalacjach MySQL i jeszcze nie znalazłem idealnego rozwiązania.

Warner
źródło
8

Zacznijmy od stworzenia nowego użytkownika o nazwie „chaminda” w powłoce MySQL:

CREATE USER 'chaminda'@'%' IDENTIFIED BY 'password';

Pierwszą rzeczą do zrobienia jest udzielenie użytkownikowi niezbędnej zgody i tutaj udzieliłem całej zgody konkretnemu użytkownikowi.

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'%';

Załaduj ponownie wszystkie uprawnienia.

FLUSH PRIVILEGES;

Jeśli chcesz dopuścić zakres adresów IP do konkretnego użytkownika, skorzystaj z poniższych instrukcji 10.1.1.%

GRANT ALL PRIVILEGES ON * . * TO 'chaminda'@'10.1.1.%';

Uwaga: tutaj Nazwa hosta =%, co oznacza, że ​​możesz uzyskać dostęp do tego serwera bazy danych z dowolnego hosta. Nadanie użytkownikowi wszystkich uprawnień jest dużym ryzykiem i nie jest to najlepsza praktyka. Ponadto możesz zastąpić użytkownika „chaminda” na „bob”.

Chaminda Bandara
źródło
5
To nie odpowiada na pytanie. Zapewnia dostęp do użytkownika ze wszystkich adresów IP, ale OP pyta o bardziej elegancki sposób, aby umożliwić pojedynczemu użytkownikowi dostęp do bazy danych z listy adresów IP. Zasadniczo zamiast wielu instrukcji dodawania użytkownika wiele razy z wielu adresów IP, pomysł polega na dodaniu jednego użytkownika, który może uzyskać dostęp do bazy danych z wielu adresów IP, co ułatwia zarządzanie i zmniejsza podatność na błędy.
Anthony
Możesz także użyć _ jako symbolu wieloznacznego, takiego jak 10.1.1.1__, aby dopasować 100-199, ale dla 200 musisz utworzyć osobne konto lub użyć% wildcard i podać również 0-99 i 201-255
Chaminda Bandara
-3

MySQL pozwala na stosowanie wielu symboli wieloznacznych w jednym rzędzie. Możliwym rozwiązaniem jest ustawienie Host dla użytkownika Bob, aby być

locahost/10.1.1.1

Odniesienie:

http://dev.mysql.com/doc/refman/5.1/en/connection-access.html

Gabriel C.
źródło
Nie o tym mówi dokumentacja. Jak podano w tabeli, /255.255.255.0 to maska ​​sieci. Jeśli istnieje sposób wyświetlania wielu symboli wieloznacznych w definicji hosta, nie jest to odpowiedni sposób.
majikman