to moje pierwsze pytanie tutaj i szczerze zrobiłem to po długim dochodzeniu bez odpowiedzi.MYSQL CREATE DEFINER
Stworzyłem aplikację internetową w intranecie, która działa na serwerze internetowym CentOS, aplikacja korzysta z innego serwera lokalnego (zawsze CentOS) dla bazy danych mysql.
Wewnątrz bazy danych stworzyłem procedury wich Evey początek tak:
CREATE DEFINER='localuser02'@'192.168.0.5' PROCEDURE 'Createuser'
192.168.0.5 IP to IP serwera, na którym jest zainstalowana aplikacja.
Do tego czasu wszystko jest w porządku, aplikacja działa. Kilka dni temu jako serwer, który uruchamia aplikację, jest stary, aby dodać kolejny serwer (mam na myśli serwer towarowy), myślałem o zrobieniu równowagi między nimi.
Teraz poprawnie skonfigurowałem oba serwery do uruchomienia aplikacji, problem polega na DEFINERZE SQL, które mają tylko jeden adres IP.
Moje serwery mają teraz 192.168.0.5 i 192.168.0.6.
Teoretycznie mój nowy DEFINER powinno być tak:
CREATE DEFINER='localuser02'@'192.168.0.5, 192.168.0.6' PROCEDURE 'Createuser'
Ale nie wiem, jak postępować.
dzięki za odpowiedź.
Dla symboli wieloznacznych rozumiem, jak używać z procentem, jak powiedziałeś 192.168.% Lub jak sugeruje eggyal 192.168.0.% moje pytanie i obawy w tym przypadku, jeśli to zadziała? Ponieważ moja sieć jest rozprowadzany tak:
192.168.0.1 - router
192.168.0.2 - voip phone
192.168.0.3 - voip phone
192.168.0.4 - firewall
192.168.0.5 - Server 01
192.168.0.6 - Server 02
192.168.0.7 - SQL Server
192.168.0.8 - LAN Printer
192.168.0.9 - First pc
192.168.0.10 - Second pc
Moje pytanie jest o IP od 192.168.0.1 do xxx.10 zastrzeżone, jeśli dodam wieloznaczny na SQL może być kolizja z adresem Znaczy z ewentualnego DEFINER próbować uwierzytelnić na przykład na telefonach VoIP, drukarce lub zaporze sieciowej, a nie tylko na dwóch serwerach?
także pytanie drugie, istnieje możliwość, aby podać więcej niż jeden adres IP, aby być bardziej uporządkowane jak:
CREATE DEFINER='localuser02'@'192.168.0.5, 192.168.0.6' PROCEDURE 'Createuser'
góry dzięki
'DEFINER' to po prostu użytkownik, który" posiada "procedurę; jeśli procedura jest zdefiniowana za pomocą 'SQL SECURITY DEFINER', to zostanie uruchomiona z uprawnieniami tego konta niezależnie od użytkownika, który go wywoła. Dane uwierzytelniające 'DEFINER' powinny odpowiadać ważnemu kontu użytkownika, którego części hosta wskazują maszyny, z którymi użytkownik może się połączyć. Dlatego nie ma szczególnej potrzeby zmiany "DEFINER" w tym przypadku; Jeśli jednak chcesz włączyć konto 'localuser02' do połączenia z dowolnego komputera, możesz zmienić swoje poświadczenia, aby użyć symbolu wieloznacznego:' @ '192.168.0.%' '. – eggyal
Cześć Eggyal, dziękuję za odpowiedź. Z tego, co zrozumiałem, popraw mnie, jeśli się mylę, procedura zadziała, albo użytkownik korzysta z aplikacji z serwera 01 lub serwera 02, prawda? Chodzi mi o to, że na obu serwerach aplikacja wykonuje zapytania i wywołuje bazę danych, więc w tym przypadku, jeśli użyję tylko jednego adresu IP, jeden z pierwszego serwera 192.168.0.5 będzie działał na użytkowniku korzystającym z aplikacji na serwerze 02 (192.168.0.6) ? Mam na myśli użytkownika serwera 02 będzie uwierzytelniony na serwerze 01, jeśli w procedurze dodaję IP pierwszego serwera? Dzięki –
Dla wildcard mam problem, ponieważ w mojej sieci mam 192.168.0.7 do 192.168.0.10, które są przechowywane przez inne komputery, niż 192.168.0.2 do 192.168.0.3, które są używane przez telefony VoIP i drukarkę, w teorii SQL wyszukać IP, które są używane przez inne komputery w mojej sieci i spowoduje błędy? Czy mogę dodać do CREATE DEFINER dwa oddzielone przecinkami IP? dzięki –