Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Suche nach MySQL im Netzwerk (bevorzugt Zeos) (https://www.delphipraxis.net/214553-suche-nach-mysql-im-netzwerk-bevorzugt-zeos.html)

Hobbycoder 29. Jan 2024 14:47

Suche nach MySQL im Netzwerk (bevorzugt Zeos)
 
Hi,

ich suche gerade nach einer Möglichkeit im Netzwerk mögliche MySQL-Server zu finden. Nach Möglichkeit auch ohne User/Pass.
Mich interessiert erst mal nicht, ob der Login funktioniert, sondern eigentlich nur die IP-Adresse des Rechners.
Bisher ist mir das aber noch nicht gelungen. TZConnection.Ping oder TZConnection.PingServer bringen nur was, wenn dieser Connected ist.
Nach Möglichkeit würde ich gerne Zeos verwenden. Wenn es jedoch eine andere Lösung gibt, wird halt die verwendet.

himitsu 29. Jan 2024 14:54

AW: Suche nach MySQL im Netzwerk (bevorzugt Zeos)
 
Am einfachsten wäre es, wenn der DB-Server auch einen UDP-Broadcast reagieren würde, so ala "Hallo, ist da ein MySQL-Server?".

Ganz einfach mit einer TCP-Komponente versuchen den Datenbank-Port auf allen möglichen IPs deines Subnetzes zuzugreifen und zu schauen ob die was sagen.

haentschman 29. Jan 2024 15:00

AW: Suche nach MySQL im Netzwerk (bevorzugt Zeos)
 
Zitat:

im Netzwerk mögliche MySQL-Server
...auch das WWW ist ein Netzwerk. Spezifiziere "Netzwerk"...:zwinker:

Hobbycoder 29. Jan 2024 15:15

AW: Suche nach MySQL im Netzwerk (bevorzugt Zeos)
 
Zitat:

Zitat von haentschman (Beitrag 1532715)
Zitat:

im Netzwerk mögliche MySQL-Server
...auch das WWW ist ein Netzwerk. Spezifiziere "Netzwerk"...:zwinker:

Du hast zwar recht, jedoch wenn man von "im Netzwerk" spricht, meint man eigentlich immer das LAN :wink:
Und...ist ja für die Fragestellung irrelevant, weil theoretisch könnte man ja auch MySQL-Server im WWW suchen.

joachimd 29. Jan 2024 15:16

AW: Suche nach MySQL im Netzwerk (bevorzugt Zeos)
 
Zitat:

Zitat von haentschman (Beitrag 1532715)
Zitat:

im Netzwerk mögliche MySQL-Server
...auch das WWW ist ein Netzwerk. Spezifiziere "Netzwerk"...:zwinker:

dafür gibt es dann shodan.io

joachimd 29. Jan 2024 15:20

AW: Suche nach MySQL im Netzwerk (bevorzugt Zeos)
 
Zitat:

Zitat von Hobbycoder (Beitrag 1532717)
Du hast zwar recht, jedoch wenn man von "im Netzwerk" spricht, meint man eigentlich immer das LAN :wink:
Und...ist ja für die Fragestellung irrelevant, weil theoretisch könnte man ja auch MySQL-Server im WWW suchen.

Alle IP-Adressen im LAN mit Netstat auf TCP 3306 abgrasen und schauen, ob da was lauscht.

Delphi.Narium 29. Jan 2024 15:24

AW: Suche nach MySQL im Netzwerk (bevorzugt Zeos)
 
Da ich davon keine Ahnung habe, hab' ich mal meinen Lieblingschatbot gefragt ;-)
Zitat:

Zitat von Frage
Wie kann man in einem Netzwerk MySQL-Server finden?

Zitat:

Zitat von ChatBot
Um einen MySQL-Server in einem Netzwerk zu finden, können Sie folgende Schritte ausführen:

1. **Konfigurieren Sie den SQL-Dienst**: Starten Sie den SQL Server Konfigurations-Manager Ihres SQL-Servers über das Windows Startmenü². Stellen Sie sicher, dass im Reiter "Protokoll" bei "aktiviert" "Ja" eingestellt ist². Vergeben Sie im Reiter IP-Adressen ganz unten bei "IPAll" einen festen Port².

2. **Firewall-Freigaben erstellen**: Damit der SQL Server von anderen PCs im Netzwerk aus erreichbar ist, müssen einige Ports freigegeben werden². Geben Sie den TCP-Port 1433 sowie den im vorigen Abschnitt eingestellten festen Port ein².

3. **MySQL-Server starten**: Ein MySQL-Server hört auf den Port TCP 3306¹. Wenn netstat diesen Port nicht aufführt, läuft der MySQL-Server nicht¹. Das Control Panel von XAMPP sollte das eigentlich auch anzeigen¹.

4. **Zugriff erlauben**: Wenn der MySQL-Server läuft, wird der Zugriff ggf. durch die Windows-Firewall geblockt¹. Da müssen Sie den Zugriff von außen dann genehmigen¹.

Bitte beachten Sie, dass Sie während der Konfiguration des SQL Servers den SQL Server-Dienst neu starten müssen, damit die Einstellungen wirksam werden². Während des Neustarts dürfen keine Clients (Wawi, LS-POS, ...) mit der Datenbank verbunden sein, da sonst Datenverlust droht².

Quelle: Unterhaltung mit Bing, 29.1.2024
(1) SQL-Datenbank im Netzwerk verwenden - luwosoft-support.de. https://www.luwosoft-support.de/6419...werk-verwenden.
(2) MySQL Server im lokalen Netzwerk erreichen. Wie? - Gutefrage. https://www.gutefrage.net/frage/mysq...-erreichen-wie.
(3) Wie kann ich mich von meinem Rechner mit einem MySQL-Server verbinden?. https://www.variomedia.de/faq/Wie-ka...en/article/244.

Zitat:

Zitat von Frage
Welche Windows-API muss ich in Delphi nutzen um zu erfahren, welcher Server im Netz auf dem Port 3306 und / oder dem Port 1433 lauscht?

Zitat:

Zitat von ChatBot
Um herauszufinden, welcher Server in einem Netzwerk auf den Ports 3306 (MySQL) und/oder 1433 (SQL Server) lauscht, können Sie die Windows Sockets API (Winsock) verwenden. In Delphi können Sie die `TIdStack`-Klasse aus der Indy-Bibliothek verwenden, die eine High-Level-Abstraktion für Netzwerkoperationen bietet.

Hier ist ein einfacher Codeausschnitt, der zeigt, wie Sie einen offenen Port auf einem bestimmten Host überprüfen können:

Delphi-Quellcode:
uses
  IdStack;

function IsPortOpen(const AHost: string; const APort: Integer): Boolean;
var
  LIdStack: TIdStack;
begin
  LIdStack := TIdStack.Create;
  try
    try
      LIdStack.Connect(AHost, APort);
      Result := True;
    except
      Result := False;
    end;
  finally
    LIdStack.Free;
  end;
end;
Zitat:

Zitat von ChatBot
In diesem Code wird versucht, eine Verbindung zum angegebenen Host und Port herzustellen. Wenn die Verbindung erfolgreich ist, gibt die Funktion `True` zurück, was bedeutet, dass der Port offen ist. Andernfalls gibt die Funktion `False` zurück.

Bitte beachten Sie, dass dieser Code nur überprüft, ob ein Port offen ist. Es kann nicht bestimmen, welcher Dienst (z.B. MySQL oder SQL Server) auf diesem Port läuft. Um den spezifischen Dienst zu ermitteln, der auf einem Port läuft, müssten Sie eine tiefere Inspektion des Netzwerkverkehrs durchführen, was normalerweise über den Anwendungslayer hinausgeht¹².

Quelle: Unterhaltung mit Bing, 29.1.2024
(1) Where can I find Delphi Declarations for Windows API calls?. https://stackoverflow.com/questions/...dows-api-calls.
(2) Can we call Native Windows API from Delphi? - Stack Overflow. https://stackoverflow.com/questions/...pi-from-delphi.
(3) 3 Programmierung der seriellen Schnittstelle - Elektronik-Labor. https://www.elektronik-labor.de/RS232/RS232_3_4.htm.
(4) Herstellen einer Verbindung zu MySQL Server (FireDAC). https://docwiki.embarcadero.com/RADS..._%28FireDAC%29.
(5) TMS WEB Core: Entwicklung von Webanwendungen mit Delphi. https://learndelphi.org/de/tms-web-c...t-with-delphi/.

Zitat:

Zitat von Frage
Welche Windows-API muss ich mit Delphi nutzen um zu erfahren welche Server im Netzwerk verfügbar sind?

Zitat:

Zitat von ChatBot
Um herauszufinden, welche Server in einem Netzwerk verfügbar sind, können Sie die Windows Networking API (WNet) verwenden. In Delphi können Sie die Funktionen `WNetOpenEnum`, `WNetEnumResource` und `WNetCloseEnum` verwenden, um durch die verfügbaren Netzwerkressourcen zu iterieren¹.

Hier ist ein einfacher Codeausschnitt, der zeigt, wie Sie die verfügbaren Netzwerkressourcen auflisten können:

Delphi-Quellcode:
uses
  Winapi.Windows, Winapi.Winnetwk;

procedure ListNetworkResources;
var
  NetResource: TNetResource;
  EnumHandle: THandle;
  Buffer: array[0..1023] of TNetResource;
  Entries: DWORD;
  i: Integer;
begin
  FillChar(NetResource, SizeOf(NetResource), 0);
  NetResource.dwScope := RESOURCE_GLOBALNET;
  NetResource.dwType := RESOURCETYPE_ANY;

  if WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, @NetResource, EnumHandle) = NO_ERROR then
  try
    repeat
      Entries := DWORD(-1);
      if WNetEnumResource(EnumHandle, Entries, @Buffer, SizeOf(Buffer)) = NO_ERROR then
        for i := 0 to Entries - 1 do
          if Buffer[i].dwDisplayType = RESOURCEDISPLAYTYPE_SERVER then
            WriteLn(Buffer[i].lpRemoteName);
    until Entries < DWORD(-1);
  finally
    WNetCloseEnum(EnumHandle);
  end;
end;
Zitat:

Zitat von ChatBot
In diesem Code wird die Funktion `WNetOpenEnum` verwendet, um einen Enumerator für Netzwerkressourcen zu erstellen. Dann wird `WNetEnumResource` in einer Schleife aufgerufen, um die Ressourcen einzeln abzurufen. Jede Ressource, die als Server angezeigt wird (d.h., `dwDisplayType` ist `RESOURCEDISPLAYTYPE_SERVER`), wird dann auf der Konsole ausgegeben¹.

Bitte beachten Sie, dass dieser Code nur die Namen der verfügbaren Server auflistet. Es kann nicht bestimmen, welche Dienste auf diesen Servern laufen¹².

Quelle: Unterhaltung mit Bing, 29.1.2024
(1) Delphi WinAPI verfügbare Domains auflisten - Delphi-PRAXiS. https://www.delphipraxis.net/204432-...auflisten.html.
(2) Where can I find Delphi Declarations for Windows API calls?. https://stackoverflow.com/questions/...dows-api-calls.
(3) Can we call Native Windows API from Delphi? - Stack Overflow. https://stackoverflow.com/questions/...pi-from-delphi.
(4) undefined. http://www.delphigroups.info/2/72/169815.html.

Zitat:

Zitat von Frage
Wie kann ich in Delphi, unter Nutzung der Zeos-Bibliothek, prüfen ob auf einem Server eine MySQL-Datenbank zur Verfügung steht?

Zitat:

Zitat von ChatBot
Um zu überprüfen, ob eine MySQL-Datenbank auf einem Server verfügbar ist, können Sie die Zeos-Bibliothek in Delphi verwenden. Sie können eine Verbindung zur Datenbank herstellen und dann überprüfen, ob die Verbindung erfolgreich war. Hier ist ein einfacher Codeausschnitt, der zeigt, wie Sie das tun können:

Delphi-Quellcode:
uses
  ZConnection;

var
  Connection: TZConnection;

begin
  Connection := TZConnection.Create(nil);
  try
    Connection.HostName := 'IhrServer'; // Ersetzen Sie 'IhrServer' durch den tatsächlichen Servernamen
    Connection.Port := 3306;
    Connection.Protocol := 'mysql';
    Connection.Database := 'IhreDatenbank'; // Ersetzen Sie 'IhreDatenbank' durch den tatsächlichen Datenbanknamen
    Connection.User := 'IhrBenutzername'; // Ersetzen Sie 'IhrBenutzername' durch den tatsächlichen Benutzernamen
    Connection.Password := 'IhrPasswort'; // Ersetzen Sie 'IhrPasswort' durch das tatsächliche Passwort
    Connection.Connect;
    if Connection.Connected then
      WriteLn('Verbindung erfolgreich')
    else
      WriteLn('Verbindung fehlgeschlagen');
  finally
    Connection.Free;
  end;
end;
Zitat:

Zitat von ChatBot
In diesem Code wird versucht, eine Verbindung zur angegebenen MySQL-Datenbank auf dem angegebenen Server herzustellen. Wenn die Verbindung erfolgreich ist, gibt der Code "Verbindung erfolgreich" aus. Andernfalls gibt er "Verbindung fehlgeschlagen" aus¹².

Bitte beachten Sie, dass Sie die entsprechenden Werte für `IhrServer`, `IhreDatenbank`, `IhrBenutzername` und `IhrPasswort` durch die tatsächlichen Werte ersetzen müssen¹².

Quelle: Unterhaltung mit Bing, 29.1.2024
(1) MySQL mit ZeosLib - Delphi-Treff. https://www.delphi-treff.de/tutorial...l-mit-zeoslib/.
(2) MYSQL Abfrage mit ZEOS? Datensatz vorhanden? - Delphi-PRAXiS. https://www.delphipraxis.net/43731-m...vorhanden.html.
(3) Delphi Mysql Datenbank erzeugen mit Zeos - Delphi-PRAXiS. https://www.delphipraxis.net/50698-m...-mit-zeos.html.

Eventuell kannst Du Dir daraus ja was brauchbares zusammenbauen. Vom Prinzip, denkt ich, müsste alles Wesentliche dabei sein.

himitsu 29. Jan 2024 15:48

AW: Suche nach MySQL im Netzwerk (bevorzugt Zeos)
 
Stimmt, man könnte auch einfach irgendwelche Dummyzugangsdaten bei seiner DBConnection angeben und dann auf den Fehler "ungültiger name/passwort" reagieren. (alternativ Timeout ... und blind drauf hoffen, dass diese "Zugangsdaten" wirklich niemand so benutzt)

johndoe049 29. Jan 2024 16:07

AW: Suche nach MySQL im Netzwerk (bevorzugt Zeos)
 
Zitat:

Zitat von himitsu (Beitrag 1532722)
Stimmt, man könnte auch einfach irgendwelche Dummyzugangsdaten bei seiner DBConnection angeben und dann auf den Fehler "ungültiger name/passwort" reagieren. (alternativ Timeout ... und blind drauf hoffen, dass diese "Zugangsdaten" wirklich niemand so benutzt)

Gute Idee. Sind schon andere für Weniger vor Gericht gelandet.

https://www.heise.de/news/Warum-ein-...e-9601392.html

himitsu 29. Jan 2024 16:26

AW: Suche nach MySQL im Netzwerk (bevorzugt Zeos)
 
Natürlich nicht im Internet,
aber im Intranet, bei eigenen Servern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:05 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz