wake-up-neo.net

fernzugriff auf die MySQL-Datenbank von einer beliebigen IP-Adresse aus gewähren

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 will, dass jeder entfernte Host auf diese MySQL-Datenbank zugreifen kann? Wie mache ich das? Im Grunde mache ich diese Datenbank öffentlich, damit jeder darauf zugreifen kann.

238
adit
TO 'user'@'%'

% ist ein Platzhalter - Sie können auch '%.domain.com' oder '%.123.123.123' und solche Dinge tun, wenn Sie dies benötigen.

234
Ariel

Aktivieren Sie den Remote-Zugriff (Grant) Startseite/Tutorials/Mysql/Aktivieren Sie den Remote-Zugriff (Grant) Wenn Sie versuchen, eine Verbindung zu Ihrem Mysql-Server von einem Remote-Computer aus herzustellen, und der folgende Fehler auftritt, ist dieser Artikel für Sie.

FEHLER 1130 (HY000): Host ‘1.2.3.4’ darf keine Verbindung zu diesem herstellen MySQL-Server

Ändern Sie die MySQL-Konfiguration

Beginnen Sie mit der Bearbeitung der Mysql-Konfigurationsdatei

vim /etc/mysql/my.cnf

Kommentieren Sie die folgenden Zeilen aus.

#bind-address           = 127.0.0.1
#skip-networking

Wenn Sie keine Überspringenetzwerklinie finden, fügen Sie sie hinzu und kommentieren Sie sie aus.

Starten Sie den MySQL-Server neu.

~ /etc/init.d/mysql restart

Ändern Sie das GRANT-Privileg

Es kann sein, dass Sie überrascht sind zu sehen, dass Sie selbst nach den oben genannten Änderungen keinen Remotezugriff oder Zugriff erhalten, aber nicht auf alle Datenbanken zugreifen können.

Standardmäßig dürfen der von Ihnen verwendete Benutzername und das Kennwort für mysql lokal auf den mysql-server zugreifen. Sie müssen also das Privileg aktualisieren.

Führen Sie einen Befehl wie unten aus, um von allen Computern aus darauf zuzugreifen. (Ersetzen Sie USERNAME und PASSWORD durch Ihre Anmeldeinformationen.)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

Führen Sie einen Befehl wie unten aus, um den Zugriff von einer bestimmten IP-Adresse aus zu gewähren. (Ersetzen Sie USERNAME und PASSWORD durch Ihre Anmeldeinformationen.)

mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;

Sie können 1.2.3.4 durch Ihre IP ersetzen. Sie können den obigen Befehl mehrmals ausführen, um von mehreren IPs aus Zugriff zu erhalten.

Sie können auch eine separate USERNAME & PASSWORD für den Fernzugriff angeben.

Sie können das Endergebnis überprüfen, indem Sie:

SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%";

Schließlich müssen Sie möglicherweise auch Folgendes ausführen:

mysql> FLUSH PRIVILEGES;

Testverbindung

Von Terminal/Befehlszeile:

mysql -h Host -u USERNAME -pPASSWORD

Wenn Sie eine MySQL-Shell erhalten, vergessen Sie nicht, Show-Datenbanken auszuführen. um zu prüfen, ob Sie über Rechterechte von Remote-Computern verfügen.

Bonus-Tipp: Zugang widerrufen

Wenn Sie versehentlich einem Benutzer den Zugriff gewähren, sollten Sie die Widerrufsoption zur Hand haben.

Im Folgenden werden alle Optionen für USERNAME von allen Computern aufgehoben:

mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%';
Following will revoke all options for USERNAME from particular IP:

mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4';
Its better to check information_schema.user_privileges table after running REVOKE command.

Wenn Sie nach dem Ausführen des REVOKE-Befehls ein USAGE-Privileg sehen, ist dies in Ordnung. Es ist so gut wie überhaupt kein Privileg. Ich bin nicht sicher, ob es widerrufen werden kann.

140

Angenommen, der obige Schritt ist abgeschlossen und es ist frei, auf den MySQL-Port 3306 zuzugreifen; Vergessen Sie nicht, die öffentliche IP-Adresse in der mysql-Konfigurationsdatei zu binden.

Zum Beispiel auf meinem Ubuntu-Server:

#nano /etc/mysql/my.cnf

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

......    
.....    
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.

bind-address        = 127.0.0.1    
bind-address        = 192.168.0.116

.....    
......

sie können die localhost-Bindung (127.0.0.1) entfernen, wenn Sie möchten. Sie müssen jedoch ausdrücklich eine IP-Adresse angeben, um auf den Server auf dem lokalen Computer zuzugreifen.

Der letzte Schritt besteht darin, den MySQL-Server neu zu starten (Auf Ubuntu)

stop mysql

start mysql

oder #/etc/init.d/mysql restart für andere Systeme

Nun kann auf die MySQL-Datenbank remote zugegriffen werden durch:

mysql -u username -h 192.168.0.116 -p
36
Waqas

Für jeden, der sich damit beschäftigt hat, habe ich hier die Privilegien vergeben. Ich hoffe, es hilft jemandem

GRANT ALL ON yourdatabasename.* TO [email protected]'%' IDENTIFIED BY
'yourRootPassword';

Wie bereits erwähnt, ist % ein Platzhalter, und jede IP-Adresse kann sich mit Ihrer Datenbank verbinden. Die Annahme, die ich hier mache, ist, wenn Sie eine Verbindung herstellen, haben Sie einen Benutzer namens root (der Standardwert ist jedoch). Geben Sie das root-Passwort ein und Sie können loslegen. Beachten Sie, dass ich keine einfachen Anführungszeichen (') um den Benutzer root habe.

24
Dev

Konfigurationsdateiänderungen sind erforderlich, um Verbindungen über localhost zu ermöglichen.

Um eine Verbindung über Remote-IPs herzustellen, melden Sie sich als "root" an und führen Sie die folgenden Abfragen in mysql aus.

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

Dadurch wird ein neuer Benutzer erstellt, auf den sowohl von localhost als auch von Remote-IPs aus zugegriffen werden kann. 

Kommentieren Sie auch die folgende Zeile aus Ihrer my.cnf-Datei in /etc/mysql/my.cnf

bind-address = 127.0.0.1

Starten Sie Ihr Mysql neu mit 

Sudo service mysql restart

Jetzt sollten Sie in der Lage sein, sich remote mit Ihrem MySQL zu verbinden.

20
harishannam

Verwenden Sie diesen Befehl:

GRANT ALL ON yourdatabasename.* TO [email protected]'%' IDENTIFIED BY 'yourRootPassword';

Dann:

FLUSH PRIVILEGES; 

Dann kommentieren Sie die folgende Zeile in der Datei "/etc/mysql/mysql.conf.d/mysqld.cnf" aus (erforderlich!)

bind-address = 127.0.0.1 

Funktioniert bei mir!

18

Führen Sie folgendes aus:

$ mysql -u root -p      
mysql> GRANT ALL ON *.* to [email protected]'ipaddress' IDENTIFIED BY 'mysql root password';     
mysql> FLUSH PRIVILEGES;     
mysql> exit

Versuchen Sie dann eine Verbindung von der angegebenen IP-Adresse aus:

mysql -h address-of-remove-server -u root -p   

Sie sollten in der Lage sein, eine Verbindung herzustellen.

16
akhil.o.v

Sie können das Problem von MariaDB über diesen Befehl :

Hinweis:

GRANT ALL ON *.* to [email protected]'%' IDENTIFIED BY 'mysql root password';

% ist ein Platzhalter. In diesem Fall bezieht es sich auf alle IP-Adressen.

GRANT ALL PRIVILEGES ON *.* TO 'user'@'ipadress'
8
user3846464

So greifen Sie remote auf Datenbank MySQL Server 8 zu:

CREATE USER 'root'@'%' IDENTIFIED BY '[email protected]';

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;
4
Anil Rana

Datei bearbeiten:

/etc/mysql/percona-server.cnf

Füge den folgenden Code in der Datei an.

[mysqld] bind-address = 0.0.0.0

Erstellen Sie einen Benutzer für den Fernzugriff.

$ mysql -u root -p      
mysql> GRANT ALL ON *.* to [email protected]'%' IDENTIFIED BY 'tejastank';   
mysql> FLUSH PRIVILEGES;    
mysql> exit

Alle Linux-Server funktionieren,

Für MSWin c:\Installationspfad\Dateipfad suchen

4
Tejas Tank
  • Starten Sie MySQL mit dem Admin-Benutzer
    • mysql -u admin-user -p (Eingabeaufforderung ENTER PASSWORD ON)
  • Erstellen Sie einen neuen Benutzer:
    • ERSTELLEN USER 'newuser' @ '%' IDENTIFIED BY 'password'; (% -> anyhost)
  • Gewähren Sie Berechtigungen:
    • GRANT SELECT, DELETE, INSERT, UPDATE ON Datenbankname. * TO 'newuser' @ '%';
    • FLUSH PRIVILEGES;

Wenn Sie eine EC2-Instanz ausführen, vergessen Sie nicht, die eingehenden Regeln zur Sicherheitsgruppe mit MYSQL/Aurura hinzuzufügen.

3
Rifaideen

Gehen Sie wie folgt vor, um von einer beliebigen IP-Adresse aus eine Verbindung mit Ihrem Benutzer herzustellen:

Erlauben Sie mysql server, Remote-Verbindungen zu akzeptieren. Öffnen Sie dazu die Datei mysqld.conf:

Sudo gedit /etc/mysql/mysql.conf.d/mysqld.cnf

Suchen Sie nach der Zeile, die mit "bind-address" beginnt, und setzen Sie den Wert auf 0.0.0.0

bind-address                    = 0.0.0.0

und speichern Sie schließlich die Datei.

Starten Sie nun den MySQL-Server neu, entweder mit systemd oder verwenden Sie den älteren Befehl service:

Sudo systemctl restart mysqld.service

Schließlich ist der MySQL-Server jetzt in der Lage, Remoteverbindungen zu 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 als Benutzer mit Root-Rechten her.

mysql -u root -p

erstellen Sie nun den gewünschten Benutzer sowohl in localhost als auch in '%' als Platzhalter und erteilen Sie Berechtigungen für alle DBs als solche.

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

Dann,

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

Und schließlich vergessen Sie nicht, Privilegien zu spülen

FLUSH PRIVILEGES;

Hoffe das hilft ;)

Öffnen Sie Ihren mysql console und führen Sie den folgenden Befehl aus (geben Sie Ihren Datenbanknamen, Ihren Benutzernamen und Ihr Kennwort ein):

ERTEILEN SIE ALLES FÜR IhrenDatabasenamen. * TO admin @ '%' IDENTIFIED BY 'yourRootPassword';

Dann ausführen:

FLUSH PRIVILEGES;

Öffnen Sie die Befehlszeile und öffnen Sie die Datei /etc/mysql/mysql.conf.d/mysqld.cnf mit einem beliebigen Editor mit root privileges.

Zum Beispiel:

Sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Dann kommentieren Sie die folgende Zeile aus:

bindungsadresse = 127.0.0.1

Starten Sie mysql neu, um die Änderungen mit dem Befehl anzuzeigen:

Sudo service mysql restart

Genießen ;)

2
Usman Yousaf

Erstellen Sie einfach den Benutzer für eine 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 ändere die Zeile bind-address = 127.0.0.1 in bind-address = 0.0.0.0

Danach können Sie von jeder beliebigen IP-Adresse aus eine Verbindung zu dieser Datenbank herstellen.

2
Diogo Mendes

Sie müssen die mysql-Konfigurationsdatei ändern:

Beginnen Sie mit der Bearbeitung der MySQL-Konfigurationsdatei

vim /etc/mysql/my.cnf

hinzufügen:

bind-address = 0.0.0.0
1
bhushan pardhi

Zum Beispiel in meinem CentOS

Sudo gedit /etc/mysql/my.cnf

kommentieren Sie die folgenden Zeilen aus

# bind-address = 127.0.0.1

dann 

Sudo-Dienst mysqld neu starten

0
zawhtut

was für Ubuntu funktioniert hat, ist dem Benutzer alle Privilegien zu gewähren:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword' WITH GRANT OPTION;

und Festlegen der Bindungsadresse in /etc/mysql/mysql.conf.d/mysqld.cnf:

bind-address            = 0.0.0.0

starten Sie dann den mysql-Daemon neu:

service mysql restart
0
Miguel Mota

Wenn Sie von einer beliebigen IP-Adresse aus Fernzugriff auf Ihre Datenbank gewähren möchten, führen Sie den Befehl mysql und anschließend den folgenden Befehl aus.

GRANT ALL PRIVILEGES ON *.*
TO 'root'@'%' 
IDENTIFIED BY 'password' 
WITH GRANT OPTION;
0
Atul6.Singh

In Website-Panels wie cPanel können Sie ein einzelnes % (Prozentzeichen) in zulässigen Hostnamen hinzufügen, um auf Ihre MySQL-Datenbank zuzugreifen.

Durch Hinzufügen eines einzelnen % können Sie von jeder IP-Adresse oder Website aus auf Ihre Datenbank zugreifen, auch von Desktop-Anwendungen.

0
Muhammad Saqib