2017-02-10 26 views
5

Korzystanie albo MySQL 5.6 lub 5.7, którego gospodarzem w AWS RDS lub Docker MySQL container, chciałbym stworzyć najmniej uprzywilejowanego użytkownika, na przykład o nazwie creator, które można wykonać następujące czynności:Jakie są minimalne uprawnienia wymagane do tworzenia baz danych MySQL, użytkowników i udzielania uprawnień?

  • utworzyć nowy Baza danych.
  • Utwórz nowego użytkownika.
  • Udziel użytkownikowi nowego uprawnienia SELECT i INSERT dla wszystkich tabel w nowej bazie danych.

Wolałbym, jeśli użytkownik creator nie ma dostępu do istniejących baz danych, które nie były odpowiedzialne za tworzenie.

Czy jest to możliwe?

Moje dotychczasowe badania sugerują, że taki użytkownik creator może wymagać globalnych uprawnień SELECT i INSERT w instancji MySQL, ale wydaje się to przesadne.

Odpowiedz

2

Można to zrobić za pomocą procedury przechowywanej i obejście, że jest to prostsze niż SP i może być to, czego szukasz: GRANT CREATE USER ON *.* TO '<user>'@'<host'; GRANT ALL PRIVILEGES ON `<user>_%`.* TO '<user>'@'<host>' WITH GRANT OPTION; Jak widać w this answer trzeba zwrócić uwagę na kilka punktów:

  1. Użytkownik nie będzie w stanie tylko do tworzenia baz danych, który rozpoczyna swoją nazwę użytkownika + „_” (używając podanych przykładów link, jeśli nazwa użytkownika jest aaa można utworzyć bazę danych, którego nazwa to aaa_example, jeśli aaa chce stworzyć bazę danych o nazwie bbb_example mysql usunie błąd odmowy uprawnień.
  2. Ma on uprawnienia tylko do tych baz danych, które zostały przez niego utworzone, ale do tych stworzonych przez jego użytkowników (jeśli przyzna im ten przywilej).
  3. Mimo to może zarządzać uprawnieniami w bazach danych należących do niego.

Mając to na uwadze, możesz ulepszyć ten `<user>_%`, dostosowując go do swoich potrzeb.