Ich versuche, eine JSF-Anwendung mit der Eclipse-IDE zu erstellen. Ich verwende einen entfernten mySQL-Server als meine Datenbank. Wie verbinde ich mich mit dieser entfernten Datenbank, um Tabellen zu erstellen und auf sie zuzugreifen?
Geben Sie einfach die IP-Adresse/den Hostnamen der Remote-Maschine in Ihrer Datenbankverbindungszeichenfolge anstelle von localhost
an. Zum Beispiel:
jdbc:mysql://192.168.15.25:3306/yourdatabase
Stellen Sie sicher, dass keine Firewall den Zugriff auf Port 3306
blockiert.
Stellen Sie außerdem sicher, dass der Benutzer, mit dem Sie sich verbinden, von diesem bestimmten Hostnamen aus eine Verbindung herstellen darf. Für Entwicklungsumgebungen ist dies mit 'username'@'%'
sicher. Überprüfen Sie das Benutzererstellungshandbuch und das GRANT
-Handbuch .
In der Verbindungszeichenfolge müssen Sie IP/Hostname der Rempote-Maschine übergeben.
import Java.sql.*;
import javax.sql.*;
public class Connect
{
public static void main (String[] args)
{
Connection conn = null;
try
{
String url = "jdbc:mysql://localhost:3306/mydb";
Class.forName ("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection (url,"root"," ");
System.out.println ("Database connection established");
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if (conn != null)
{
try
{
conn.close ();
System.out.println ("Database connection terminated");
}
catch (Exception e) { /* ignore close errors */ }
}
}
}
}
um von einem entfernten Computer auf die Datenbank zuzugreifen, müssen Sie Ihrer Datenbank alle Berechtigungen erteilen.
führen Sie das folgende Skript aus, um Berechtigungen zu erteilen: GRANT ALL PRIVILEGES ON. TO Benutzer @ '%' IDENTIFIED BY 'Passwort';
Außerdem sollten Sie sicherstellen, dass in der Konfiguration des MySQL-Servers (/etc/mysql/my.cnf,/etc/default/mysql unter Debian) "Skip-Networking" nicht aktiviert ist und nicht ausschließlich an die Loopback-Schnittstelle (127.0) gebunden ist .0.1), aber auch zu der Schnittstelle/IP-Adresse, zu der Sie eine Verbindung herstellen möchten.
Erstellen Sie einen neuen Benutzer im Schema "mysql" (mysql.user) Führen Sie diesen Code in Ihrem mysql-Arbeitsbereich aus
“GRANT ALL ON . to [email protected]'%'IDENTIFIED BY '';
Öffnen Sie den '3306'-Port an der Maschine, auf der sich die Datenbank befindet
Control Panel ->
Windows Firewall ->
Advance Settings ->
Inbound Rules ->
New Rule ->
Port ->
Next ->
TCP & set port as 3306 ->
Next ->
Next ->
Next ->
Fill Name and Description ->
Finish ->
Versuchen Sie es mit einer Telnet-Nachricht in cmd, einschließlich der IP-Adresse des DB-Servers
Schließen Sie alle Verbindungen, die geöffnet und mit dem Server-Überwachungsport verbunden sind, unabhängig davon, ob es sich um ein anwendungs- oder clientseitiges Tool (navicat) oder einen laufenden Server (Apache oder Weblogic) handelt. Schließen Sie zuerst alle Verbindungen und starten Sie dann alle Tools MySQL, Apache usw. neu.
Nach der Erstellung von localhost- und% -Versionen des Benutzers und dem entsprechenden Zugriff auf database.tables musste ich unter Ubuntu die 'bind-address' in /etc/mysql/mysql.conf.d/mysql auskommentieren .cnf und starten Sie mysql als Sudo neu.
Ändern Sie in my.cnf die folgenden Angaben
## Anstelle von "Skip-Networking" wird jetzt standardmäßig nur auf .__ gehört. ## localhost, der besser kompatibel und nicht weniger sicher ist . ## bind-address = 127.0.0.1