Mir ist dieser Befehl bekannt:
GRANT ALL PRIVILEGES
ON database.*
TO 'user'@'yourremotehost'
IDENTIFIED BY 'newpassword';
Dann kann ich jedoch nur eine bestimmte IP-Adresse für den Zugriff auf diese entfernte MySQL-Datenbank vergeben. Was ist, wenn ich möchte, dass jeder Remote-Host auf diese MySQL-Datenbank zugreifen kann? Wie mache ich das? Grundsätzlich mache ich diese Datenbank öffentlich, damit jeder darauf zugreifen kann.
Antworten:
% ist ein Platzhalter - Sie können auch
'%.domain.com'
oder'%.123.123.123'
und solche Dinge tun , wenn Sie brauchen.quelle
-h my_machine_name
Parameter zu übergeben. Dies täuscht den Kunden vor, Sie als zu identifizieren'user'@my_machine_name.example.com
, anstatt'user'@localhost
. Auf diese Weise müssen Sie keine doppelten Konten und Zuschüsse für beidelocalhost
und den Netzwerkzugriff erstellen und verwalten . Und natürlich, werden sichermysqld
ist gebunden0.0.0.0
vs.127.0.0.1
.Aktivieren des Remotezugriffs (Grant) Startseite / Tutorials / MySQL / Aktivieren des Remotezugriffs (Grant) Wenn Sie versuchen, von einem Remotecomputer aus eine Verbindung zu Ihrem MySQL-Server herzustellen, und der folgende Fehler auftritt, ist dieser Artikel genau das Richtige für Sie.
Ändern Sie die MySQL-Konfiguration
Beginnen Sie mit der Bearbeitung der MySQL-Konfigurationsdatei
Kommentieren Sie die folgenden Zeilen aus.
Wenn Sie keine Skip-Networking-Zeile finden, fügen Sie sie hinzu und kommentieren Sie sie aus.
Starten Sie den MySQL-Server neu.
Ändern Sie das GRANT-Privileg
Es kann Sie überraschen, dass Sie auch nach der obigen Änderung keinen Remotezugriff oder Zugriff erhalten, aber nicht auf alle Datenbanken zugreifen können.
Standardmäßig dürfen der von Ihnen verwendete MySQL-Benutzername und das Passwort lokal auf den MySQL-Server zugreifen. Also muss das Privileg aktualisiert werden.
Führen Sie einen Befehl wie unten aus, um von allen Computern aus darauf zuzugreifen. (Ersetzen Sie
USERNAME
undPASSWORD
durch Ihre Anmeldeinformationen.)Führen Sie einen Befehl wie unten aus, um Zugriff von einer bestimmten IP zu gewähren. (Ersetzen Sie
USERNAME
undPASSWORD
durch Ihre Anmeldeinformationen.)Sie können 1.2.3.4 durch Ihre IP ersetzen. Sie können den obigen Befehl viele Male ausführen, um den Zugriff von mehreren IP-Adressen zu gewähren.
Sie können auch ein separates
USERNAME
&PASSWORD
für den Fernzugriff angeben .Sie können das Endergebnis überprüfen, indem Sie:
Schließlich müssen Sie möglicherweise auch Folgendes ausführen:
Testverbindung
Vom Terminal / Kommandozeile:
Wenn Sie eine MySQL-Shell erhalten, vergessen Sie nicht, Show-Datenbanken auszuführen. um zu überprüfen, ob Sie über die richtigen Berechtigungen von Remotecomputern verfügen.
Bonus-Tipp: Zugriff widerrufen
Wenn Sie einem Benutzer versehentlich Zugriff gewähren, sollten Sie die Widerrufsoption zur Hand haben.
Im Folgenden werden alle Optionen für USERNAME von allen Computern widerrufen:
Wenn Sie nach dem Ausführen des REVOKE-Befehls das USAGE-Privileg sehen, ist dies in Ordnung. Es ist so gut wie gar kein Privileg. Ich bin nicht sicher, ob es widerrufen werden kann.
quelle
/etc/mysql/mysql.conf.d/mysqld.cnf
Datei ändern musste, anstatt die/etc/mysql/my.cnf
zu kommentierenbind-address
Teil zu müssen. Die#skip-networking
Zeile fehlt und das Hinzufügen und Kommentieren der Zeile sollte keine Auswirkungen haben./etc/mysql/mariadb.conf.d/50-server.cnf
3306
Angenommen, der obige Schritt ist abgeschlossen und auf den MySQL-Port 3306 kann remote zugegriffen werden. Vergessen Sie nicht, die öffentliche IP-Adresse in der MySQL-Konfigurationsdatei zu binden.
Zum Beispiel auf meinem Ubuntu-Server:
Suchen Sie in der Datei nach dem Abschnittsblock [mysqld] und fügen Sie die neue Bindungsadresse hinzu. In diesem Beispiel ist dies 192.168.0.116. Es würde ungefähr so aussehen
Sie können die localhost-Bindung (127.0.0.1) entfernen, wenn Sie dies wünschen. Anschließend müssen Sie jedoch eine IP-Adresse angeben, um auf den Server auf dem lokalen Computer zugreifen zu können.
Der letzte Schritt besteht darin, den MySQL-Server neu zu starten (unter Ubuntu).
oder
#/etc/init.d/mysql restart
für andere SystemeJetzt kann remote auf die MySQL-Datenbank zugegriffen werden durch:
quelle
/etc/init.d/mysql reload
sollte ausreichenbind-address
Direktive bestimmt die IP-Adresse, die der MySQL- Server abhört. nicht die IP-Adressen, von denen der Server Verbindungen akzeptiert.bind-address
entweder die localhost- oder die remotehost-Adresse auskommentiere.mysql.serviceJob for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
Für alle, die damit herumgefummelt haben, hier ist, wie ich die Privilegien gewähren konnte, hoffe, es hilft jemandem
Wie bereits erwähnt,
%
handelt es sich um einen Platzhalter, mit dem jede IP-Adresse eine Verbindung zu Ihrer Datenbank herstellen kann. Die Annahme, die ich hier mache, ist, wenn Sie eine Verbindung herstellen, haben Sie einen Benutzer namensroot
(was jedoch die Standardeinstellung ist). Geben Sie das Root-Passwort ein und Sie können loslegen. Beachten Sie, dass ich keine einfachen Anführungszeichen ('
) um das Benutzerstammverzeichnis habe.quelle
Änderungen an der Konfigurationsdatei sind erforderlich, um Verbindungen über localhost zu aktivieren.
Um eine Verbindung über Remote-IPs herzustellen, melden Sie sich als "Root" -Benutzer an und führen Sie die folgenden Abfragen in MySQL aus.
Dadurch wird ein neuer Benutzer erstellt, auf den sowohl über localhost als auch über Remote-IPs zugegriffen werden kann.
Kommentieren Sie auch die folgende Zeile aus Ihrer my.cnf-Datei in /etc/mysql/my.cnf
Starten Sie Ihre MySQL mit neu
Jetzt sollten Sie in der Lage sein, eine Remote-Verbindung zu Ihrem MySQL herzustellen.
quelle
Verwenden Sie diesen Befehl:
Dann:
Dann kommentieren Sie die folgende Zeile in der Datei "/etc/mysql/mysql.conf.d/mysqld.cnf" (erforderlich!):
Funktioniert bei mir!
quelle
your-password-does-not-satisfy-the-current-policy-requirements
Gehen Sie wie folgt vor, um von einer beliebigen IP-Adresse aus eine Verbindung mit Ihrem Benutzer herstellen zu können:
Erlauben Sie dem MySQL-Server, Remoteverbindungen zu akzeptieren. Öffnen Sie dazu die Datei mysqld.conf:
Suchen Sie nach der Zeile, die mit "Bindungsadresse" beginnt, und setzen Sie den Wert auf 0.0.0.0
und speichern Sie schließlich die Datei.
Hinweis: Wenn Sie MySQL 8+ ausführen, befindet sich die
bind-address
Direktivemysqld.cnf
standardmäßig nicht in der Datei. Fügen Sie in diesem Fall die Direktive am Ende der Datei hinzu/etc/mysql/mysql.conf.d/mysqld.cnf
.Starten Sie nun den MySQL-Server entweder mit
systemd
oder mit dem älterenservice
Befehl neu. Dies hängt von Ihrem Betriebssystem ab:Schließlich kann der MySQL-Server jetzt Remoteverbindungen akzeptieren.
Jetzt müssen wir einen Benutzer erstellen und ihm die Berechtigung erteilen, damit wir uns remote mit diesem Benutzer anmelden können.
Stellen Sie eine Verbindung zur MySQL-Datenbank als Root oder zu einem anderen Benutzer mit Root-Rechten her.
Erstellen Sie nun den gewünschten Benutzer sowohl im lokalen Platzhalter als auch im Platzhalter '%' und erteilen Sie Berechtigungen für alle DBs als solche.
Dann,
Und vergessen Sie nicht, die Berechtigungen zu löschen
Hinweis: Wenn Sie auf Ihrem Datenbankserver eine Firewall konfiguriert haben, müssen Sie auch den Port öffnen
3306
den Standardport von Port MySQL , um Datenverkehr zu MySQL zuzulassen.Hoffe das hilft ;)
quelle
Führen Sie Folgendes aus:
Versuchen Sie dann eine Verbindung von der von Ihnen angegebenen IP-Adresse:
Sie sollten in der Lage sein, eine Verbindung herzustellen.
quelle
Mit diesem Befehl können Sie das Problem von MariaDB lösen :
Hinweis:
%
ist ein Platzhalter. In diesem Fall bezieht es sich auf alle IP-Adressen.quelle
quelle
So greifen Sie remote auf den Datenbank-MySQL-Server 8 zu:
quelle
Wenn Sie eine EC2-Instanz ausführen, vergessen Sie nicht, die eingehenden Regeln in der Sicherheitsgruppe mit MYSQL / Aurura hinzuzufügen.
quelle
Datei bearbeiten:
/etc/mysql/percona-server.cnf
Fügen Sie den folgenden Code in die Datei ein.
[mysqld] bind-address = 0.0.0.0
Erstellen Sie einen Benutzer für den Remotezugriff.
Alle Linux Server funktioniert,
Für MSWin c: \ Installationsort suchen \ Dateipfad
quelle
Erstellen Sie einfach den Benutzer zu einer Datenbank wie
GRANT ALL PRIVILEGES ON <database_name>.* TO '<username>'@'%' IDENTIFIED BY '<password>'
Dann geh zu
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
und ändern Sie die Zeilebind-address = 127.0.0.1
inbind-address = 0.0.0.0
Danach können Sie von jeder IP-Adresse aus eine Verbindung zu dieser Datenbank herstellen.
quelle
Öffnen Sie Ihre
mysql console
und führen Sie den folgenden Befehl aus (geben Sie Ihren Datenbanknamen, Benutzernamen und Ihr Passwort ein):Dann ausführen:
Öffnen Sie die Befehlszeile und öffnen Sie die Datei
/etc/mysql/mysql.conf.d/mysqld.cnf
mit einem beliebigen Editor mitroot privileges
.Beispielsweise:
Dann kommentieren Sie die folgende Zeile aus:
Starten Sie mysql neu, um die Änderungen mit dem folgenden Befehl widerzuspiegeln:
Genießen ;)
quelle
Sie müssen die MySQL-Konfigurationsdatei ändern:
Beginnen Sie mit der Bearbeitung der MySQL-Konfigurationsdatei
hinzufügen:
quelle
In Website-Panels wie cPanel können Sie den
%
zulässigen Hostnamen ein einzelnes (Prozentzeichen) hinzufügen, um auf Ihre MySQL-Datenbank zuzugreifen.Durch Hinzufügen einer einzelnen
%
können Sie von jeder IP-Adresse oder Website aus auf Ihre Datenbank zugreifen, auch von Desktop-Anwendungen aus.quelle
Zum Beispiel in meinem CentOS
Kommentieren Sie die folgenden Zeilen aus
dann
quelle
Wenn Sie den Remotezugriff auf Ihre Datenbank von einer beliebigen IP-Adresse aus gewähren möchten, führen Sie den Befehl mysql und anschließend den folgenden Befehl aus.
quelle
Was unter Ubuntu funktioniert hat, ist, dem Benutzer alle Berechtigungen zu gewähren:
und Setzen der Bindungsadresse in
/etc/mysql/mysql.conf.d/mysqld.cnf
:Starten Sie dann den MySQL-Daemon neu:
quelle
Sie können die gesamte Sicherheit deaktivieren, indem Sie /etc/my.cnf bearbeiten:
quelle