Kilka razy zostałem ugryziony przez użytkownika „debian-sys-maint”, który jest domyślnie instalowany na pakietach mysql-server instalowanych z repozytoriów Ubuntu.
Ogólnie rzecz biorąc, zdarza się, że pobieram świeżą kopię naszej produkcyjnej bazy danych (która nie jest uruchomiona na Debianie / Ubuntu) w celu rozwiązywania problemów lub nowego rozwoju i zapominam wykluczyć tabelę mysql.user, tracąc w ten sposób użytkownika debian-sys-maint.
Jeśli dodamy nowych użytkowników mysql z jakiegokolwiek powodu, muszę „scalić” je z moim środowiskiem programistycznym, zamiast nakładać na siebie tabelę.
Bez użytkownika mój system nadal wydaje się funkcjonalny, ale nękają go takie błędy, jak:
sudo /etc/init.d/mysql restart
Stopping MySQL database server: mysqld...failed.
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
- Do czego służy Debian-sys-maint?
- Czy istnieje lepszy sposób dla opiekunów pakietów na robienie tego, co próbują zrobić?
- Jaki jest najłatwiejszy sposób na przywrócenie go po tym, jak go zgubiłem?
- Jaki jest prawidłowy / minimalny zestaw uprawnień dla tego użytkownika?
- Wydaje się, że złym pomysłem jest „nadanie wszystkich uprawnień *. * ...”
Edytować
Dodatkowe pytanie - czy hasło w /etc/mysql/debian.cnf jest już zakodowane, czy jest to hasło w postaci zwykłego tekstu? Ma to znaczenie, gdy idziesz do odtworzenia użytkownika, a ja nigdy nie wydaje mi się, aby był poprawny za pierwszym razem.
Dzięki
Odpowiedzi:
Jedną z głównych rzeczy, dla których jest używany, jest powiedzenie serwerowi, aby rzucił dzienniki. Wymaga przynajmniej uprawnienia do ponownego ładowania i wyłączania.
Zobacz plik /etc/logrotate.d/mysql-server
Jest on używany przez
/etc/init.d/mysql
skrypt do uzyskania statusu serwera. Służy do płynnego zamykania / przeładowywania serwera.Oto cytat z README.Debian
Najlepszym planem jest po prostu nie stracić go. Jeśli naprawdę zgubisz hasło, zresetuj je, używając innego konta. Jeśli utraciłeś wszystkie uprawnienia administratora na serwerze mysql, postępuj zgodnie z instrukcjami, aby zresetować hasło roota, a następnie napraw je
debian-sys-maint
.Możesz użyć takiego polecenia, aby zbudować plik SQL, którego możesz użyć później do ponownego utworzenia konta.
Hasło nie jest szyfrowane / szyfrowane po zainstalowaniu, ale nowe wersje mysql mają teraz sposób szyfrowania poświadczeń (patrz: https://serverfault.com/a/750363 ).
źródło
Użytkownik debian-sys-maint jest domyślnie odpowiednikiem root . Jest on używany przez niektóre skrypty konserwacyjne w systemach Debian i jako efekt uboczny pozwala użytkownikom z dostępem do roota na skrzynce zobaczyć hasło w postaci jawnego tekstu w /etc/mysql/debian.cnf (dobry czy zły?)
Możesz ponownie utworzyć użytkownika poprzez:
Upewnij się tylko , że hasło jest zgodne z tym w /etc/mysql/debian.cnf
źródło
Możesz także:
Co da ci możliwość odtworzenia użytkownika debian-sys-maint. Istniejący użytkownicy i bazy danych są bezpieczne.
źródło
Chciałem tylko skomentować, ale myślę, że poprawna składnia zasługuje na swój własny wpis. Spowoduje to utworzenie użytkownika debian-sys-maint :
Jeśli nadal masz plik /etc/mysql/debian.cnf, po prostu użyj tam hasła.
Nie krępuj się wymyślić bardziej
paranoicznebezpieczne rozwiązanie.źródło
/etc/mysql/debian.cnf
, toroot
użytkownik systemu Linux . A kiedy ktoś może odczytać ten plik, ma jużroot
dostęp do komputera i może zatrzymać serwer MySQL i dodać własnego administratora systemu. A skrypt uruchamiający MySQL i inne pakiety nie może przeprowadzać konserwacji zabezpieczeń ani innych czynności konserwacyjnych. Tak, jest tak bezpieczny, jak zawsze musi być. I przydatne, jeśli stracisz hasło administratora MySQL, aby je odzyskać, bez potrzeby restartowania go w niepewnym trybie. ;-)Jeśli chcesz dodać
debian-sys-maint
użytkownika tylko dologrotate.d
celów, należy nie przyznawaćALL PRIVILEGES
alboGRANT OPTION
- jest to niepotrzebna dziura gigant bezpieczeństwa. Zamiast tego możesz po prostu dodać użytkownika z takimRELOAD
uprawnieniem (zakładając, że uzyskujesz dostęp do bazy danych jakoroot
i zastępujesz hasło xxxxxx)Aktualizacja 2019
Ta odpowiedź może być nieaktualna - zapoznaj się z silnie wyrażonymi komentarzami poniżej.
źródło
debian-sys-maint
. Mogę również potwierdzić, że działa jak urok. Twoje zdrowie!debian-sys-maint
użytkownik jest również używany do zamykania serwera. A także, aby sprawdzić użytkowników root podczas uruchamiania serwera mysql. Musisz przynajmniej nadać uprawnienia do wyboru w mysql. * I uprawnienia do wyłączania.Zamiast
Myślę
ponieważ hasło nie jest mieszane ...?
źródło
debian-sys-maint wymagane uprawnienia
Inne odpowiedzi w wystarczającym stopniu dotyczyły wszystkiego oprócz minimalnego zestawu uprawnień wymaganych dla użytkownika debian-sys-maint. Wiele odpowiedzi tutaj jest po prostu błędnych pod tym względem, a wręcz niebezpiecznych. Nie zmniejszaj uprawnień debian-sys-maint (w tym opcji grantu) bez przeczytania i zrozumienia poniżej:
Opiekun Debiana nie przyznał użytkownikowi wszystkich uprawnień kapryśnie. Oto, co jest wymagane, gdzie i dlaczego. Niektóre z tych przywilejów są nadzbiórami innych, ale wymienię je niezależnie, na wypadek gdybyś chciał dostosować rzeczy i usunąć wymaganie:
Ten ostatni jest oczywiście głównym wymogiem dla przywilejów. Strona podręcznika mysql_upgrade stwierdza, że:
OSTRZEŻENIE Jeśli zdecydujesz się ograniczyć uprawnienia, które ma debian-sys-maint, upewnij się, że jesteś przygotowany do ręcznej obsługi wszelkich przyszłych aktualizacji zabezpieczeń i / lub aktualizacji Debiana, które dotykają MySQL. Jeśli wykonasz aktualizację pakietów MySQL z ograniczonymi uprawnieniami debian-sys-maint, a jeśli mysql_upgrade nie będzie mógł zostać ukończony, może to spowodować pozostawienie bazy danych w nieokreślonym stanie (odczyt uszkodzony). Zmniejszenie uprawnień może nie powodować żadnych widocznych problemów z dnia na dzień, dopóki nie nadejdzie aktualizacja, więc nie przejmuj się faktem, że już zmniejszyłeś uprawnienia bez szkodliwych skutków jako podstawę do myślenia, że jest to bezpieczne.
źródło
Na marginesie tego, spójrz na ten post mysqlperformanceblog z powodów, dla których możesz chcieć wyłączyć rzeczy specyficzne dla Debiana.
źródło
Korzystając z MySQL 5.6+, zaleciłbym użycie
mysql_config_editor
polecenia do utworzenia wpisu dla użytkownika'debian-sys-maint'@'localhost'
przy użyciu odpowiedniego hasła, co oznacza, że hasło nie musi być przechowywane na serwerze w postaci zwykłego tekstu.mysql_config_editor set --login-path=debian-sys-maint --host=localhost --user=debian-sys-maint --password
Następnie specyficzny dla Debiana plik konfiguracyjny
/etc/mysql/debian.cnf
można zmienić, aby nazwa użytkownika i hasło nie były zapisywane w pliku.Na koniec zmień plik logrotate dla MySQL, aby używał danych logowania zapisanych w
~/.mylogin.cnf
pliku zamiast pliku specyficznego dla Debiana, zastępując/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf
z
/usr/bin/mysqladmin --login-path=debian-sys-maint
Mam nadzieję że to pomoże :)
Dave
źródło
debian-sys-maint
użytkownika zostanie przez to osiągnięty? Że pakiety powinny mieć możliwość używania tego użytkownika / hasła do wykonywania niektórych czynności konserwacyjnych systemu jakoroot
użytkownik w domenie Linuksa (nieroot
użytkownik w MySQL bez administratora, który musiałby wprowadzićroot
hasło do MySQL?/etc/mysql/debian.cnf
celu usunięcia haseł i zmiany pliku logrotate w celu odniesienia do korzystania z zabezpieczonych danych. Nie jestem pewien, czy użytkownik debian-sys-maint jest używany do czegokolwiek innego, ale jeśli tak, to pomoże ci wskazać, gdzie Debian używa tego konta użytkownika w twoim imieniu.