es ist meine erste Frage hier und ich habe es ehrlich nach langen Nachforschungen ohne Antworten gemacht.Mysql CREATE DEFINER
Ich habe eine Intranet-Webanwendung erstellt, die auf einem CentOS-Webserver ausgeführt wird. Die Anwendung verwendet einen anderen lokalen Server (immer CentOS) für die MySQL-Datenbank.
in der Datenbank habe ich erstellt Routinen wich evey Start wie folgt aus:
CREATE DEFINER='localuser02'@'192.168.0.5' PROCEDURE 'Createuser'
Die IP 192.168.0.5 ist die IP-Adresse des Servers, auf dem Anwendung installiert ist.
Bis hier alles in Ordnung ist, funktioniert die Anwendung. Jetzt vor ein paar Tagen als der Server, der die Anwendung läuft eine alte, um einen anderen Server hinzufügen (ich meine Commodity-Server), was ich dachte, ist eine Verkehrsbilanz zwischen ihnen zu tun.
Jetzt habe ich richtig eingerichtet, beide Server, um die Anwendung zu starten, ist das Problem mit dem SQL-DEFINER, die nur eine IP haben.
Meine Server haben jetzt 192.168.0.5 und 192.168.0.6.
Theoretisch sollte meine neue DEFINER so aussehen:
CREATE DEFINER='localuser02'@'192.168.0.5, 192.168.0.6' PROCEDURE 'Createuser'
Aber ich weiß nicht, wie es weitergeht.
danke für die Antwort.
Für Wildcard habe ich verstanden wie die Verwendung mit Prozent wie Sie sagten 192.168.% Oder wie von eggyal 192.168.0 vorgeschlagen.% meine Frage und Bedenken, dies zu tun, wenn es funktioniert? Da mein Netzwerk ist wie folgt verteilt:
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
Meine Frage IP von 192.168.0.1 ist mit bis xxx.10 reserviert, wenn ich hinzufügen Wildcard auf SQL eine Kollision mit Adresse sein könnte ich die DEFINER versuchen könnten bedeuten, zu authentifizieren zum Beispiel auf dem VoIP-Telefon oder einem Drucker oder der Firewall statt ausschließlich der beiden Server?
Auch zweite Frage, gibt es die Möglichkeit, mehr als eine IP-Liste mehr ordentlich wie zu sein:
CREATE DEFINER='localuser02'@'192.168.0.5, 192.168.0.6' PROCEDURE 'Createuser'
Vielen Dank im Voraus
Der 'DEFINER' ist einfach der Benutzer, der das Verfahren" besitzt "; Wenn die Prozedur mit SQL SECURITY DEFINER definiert ist, wird sie mit den Rechten dieses Accounts ausgeführt, unabhängig vom Benutzer, der sie aufruft. Die DEFINER-Anmeldeinformationen sollten mit einem gültigen Benutzerkonto übereinstimmen, dessen Host-Teile die Maschinen angeben, von denen der Benutzer eine Verbindung herstellen kann. Daher ist es in diesem Fall nicht notwendig, den "DEFINER" zu ändern; Wenn Sie jedoch das Konto "localuser02" für die Verbindung von einem der beiden Computer aktivieren möchten, können Sie ihre Anmeldeinformationen ändern, um einen Platzhalter zu verwenden: '@ '192.168.0.%''. – eggyal
Hallo Eggyal, danke für deine Antwort. Von dem, was ich richtig verstanden habe, korrigieren Sie mich, wenn ich falsch liege, wird die Prozedur funktionieren, entweder ein Benutzer verwendet die Anwendung von Server 01 oder Server 02 richtig? Ich meine auf beiden Servern die Anwendung führt Abfragen und ruft Datenbank auf, so in diesem Fall, wenn ich nur eine IP-Adresse des ersten Servers 192.168.0.5 der Benutzer verwenden, der die Anwendung auf Server 02 (192.168.0.6) verwendet wird ? Ich meine Benutzer von Server 02 wird über Server 01 authentifiziert, wenn in der Prozedur ich IP des ersten Servers hinzufügen? Danke –
Für Wildcard habe ich ein Problem, weil in meinem Netzwerk habe ich 192.168.0.7 bis 192.168.0.10, die von anderen PCs gehalten werden, als 192.168.0.2 bis 192.168.0.3, die von VoIP-Telefonen und Drucker verwendet werden, in der SQL wird Nach IPs suchen, die von anderen PCs in meinem Netzwerk verwendet werden und Fehler verursachen? Kann ich zu CREATE DEFINER zwei IP-Kommas hinzufügen? danke –