it-swarm.com.de

Zugriff auf eine MySQL-Datenbank von einem externen Host/IP? (zB: MySQL-Workbench)

Ich habe einen MySQL-Server, der auf x.x.x.x läuft, und kann intern darauf zugreifen (natürlich). Wenn Sie jedoch versuchen, eine externe Verbindung herzustellen (z. B. mit mysql workbench oder sogar von einem externen Server), wird die Fehlermeldung "Host 'bla.bla.bla' darf nicht mit diesem MySQL-Server verbunden werden. 

Ich habe getan:

  • GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY "somepass"; 
  • Und ich habe Port 3306 in iptables geöffnet. 

Gibt es ein anderes grundlegendes Sicherheitsproblem, das ich vermisse? 

9
Jon

Du musst es tun 

GRANT ALL PRIVILEGES ON *.* TO [email protected]'bla.bla.bla' ...

Der Teil nach dem @ ist der Host, von dem die Verbindung stammt. Sie haben also nur Verbindungen zugelassen, die von localhost stammen. Sie müssen den Zugriff von jedem entfernten Host aus ermöglichen (oder von allen Hosts - ... [email protected]'%' ... - falls zutreffend).

14
Andrew Medico

Um dieses Problem zu lösen, mussten Sie die folgenden Befehle ausführen:

mysql -u root -p
[enter in your password]
CREATE USER 'mysqluser'@'%' IDENTIFIED BY 'aC0MPL3XPa33W0RD';
GRANT ALL PRIVILEGES ON *.* TO 'mysqluser'@'%' WITH GRANT OPTION;
8
Ahmad

Ich hatte genau die gleiche Situation. Mein MYSQL ist auf einem centOS installiert. Der Pfad zum Nirvana ist wie folgt.

  1. bindungsadresse: DID NICHT ARBEIT
  2. erlaubnis erteilen: DID NICHT ARBEIT
  3. Iptables im ausgeschalteten Zustand: DID work. 

LÖSUNG: Ich habe in die iptables geangelt und folgende Änderungen vorgenommen:

  1. Greifen Sie mit dem Befehl auf die iptables zu: vim/etc/sysconfig/iptables
  2. Wenn Sie die unten stehenden Anweisungen finden, KOMMENTIEREN Sie sie durch Hinzufügen eines '#' am Anfang der Zeile.

    -A INPUT -s 123.123.123.123/32 -p Zustand des TCP-Status - Zustand NEU -m TCP-Port 3306 -j ACCEPT 

    -A INPUT -j REJECT --reject-with icmp-Host-verboten

    -A AUSGABE -p tcp -m tcp --dport 3306 -j AKZEPTIEREN

  3. Starten Sie die iptables erneut mit dem Befehl: service iptables restart

Ja, das hat für mich funktioniert. Ich hoffe es ist für jemanden nützlich.

4
Yoosaf Abdulla

Als ich meinen Server bekam, hatte auch ich das gleiche Problem beim Zugriff auf die MySQL-Clientanwendung, . Dann erteilte ich der Mysql-Berechtigung mit der folgenden Abfrage.

es hat super funktioniert 

**GRANT ALL PRIVILEGES ON db_base.* TO db_user @'%' IDENTIFIED BY 'db_passwd';** 

db_base is the database Name
db_user is database User
db_passwd is the database password 

Sobald Sie dieses Flush ausführen, führen Sie den folgenden Befehl aus: FLUSH PRIVILEGES;

Angenommen, Sie möchten Berechtigungen für den Zugriff auf bestimmte Tabellen in der Datenbank erteilen, können Sie den folgenden Befehl verwenden

GRANT ALL PRIVILEGES ON db_base.HELLOWORLD TO db_user @'%' IDENTIFIED BY 'db_passwd';

Dabei ist HELLOWORLD der Tabellenname

3
gmhk

Ich kenne die Sicherheitsaspekte hinter diesem bind-addressthing nicht. Ich lerne einfach, indem ich einen Debian-Server auf einer Virtual-Box-Maschine installiere. Dieser Gast verfügt über eine virtuelle Netzwerkkarte, die als Bridge eingerichtet ist Haus kann es sehen. Seine IP-Adresse ist 192.168.1.4. Von einem anderen Computer (192.168.1.3) aus konnte keine Verbindung mit bind-address = 127.0.0.1. Hergestellt werden. bind-address = 192.168.1.4 funktioniert einwandfrei. .____.] Es muss die Interpretation von 127.0.0.1 in einer virtuellen Konfiguration sein, nicht sicher ...

0
oli

Verbinden Sie sich als Benutzer mysql? Sie können versuchen, die GRANT-Abfrage wie folgt auszuführen: GRANT ALL PRIVILEGES ON *.* TO [email protected] IDENTIFIED BY "somepass";

0
jesse reiss

Haben Sie überprüft, dass mysql workbench die Verbindung mit dem entsprechenden Benutzernamen versucht? Haben Sie die Berechtigungen gelöscht nachdem Sie den Grant-Befehl ausgeführt haben?

0
eykanal