Greifen Sie über die Befehlszeile auf die entfernte MySQL-Datenbank zu

190

Ich habe einen Server mit Rackspace. Ich möchte über die Befehlszeile meines lokalen Computers auf die Datenbank zugreifen.

Ich habe versucht wie:

mysql -u username -h my.application.com -ppassword

Aber es gibt einen Fehler:

FEHLER 2003 (HY000):

Es kann keine Verbindung zum MySQL-Server auf 'my.application.com' (10061) hergestellt werden.

Was verursacht diesen Fehler und wie kann ich eine Verbindung zur entfernten Datenbank herstellen?

user1986299
quelle
5
10061= Verbindung abgelehnt
Danny Beckett

Antworten:

289

Verwenden Sie den folgenden Befehl, um sich direkt bei einer Remote-MySQL-Konsole anzumelden:

mysql -u {username} -p'{password}' \
    -h {remote server ip or name} -P {port} \
    -D {DB name}

Beispielsweise

mysql -u root -p'root' \
        -h 127.0.0.1 -P 3306 \
        -D local

Kein Leerzeichen nach -p wie in der Dokumentation angegeben

Sie gelangen direkt zur MySQL-Konsole, indem Sie zur genannten Datenbank wechseln.

31-07-2019 - bearbeitete Syntax

Venkat M.
quelle
23
Ich musste das Passwort in einfache Anführungszeichen setzen. dhmysql -u USERNAME -p'PASSWORD' -h REMOTE_SERVER_IP DB_NAME
Nick Brady
2
Um den Datenbanknamen anzugeben, müssen wir -D hinzufügen. mysql -u {Benutzername} -p {Passwort} -h {Remote-Server-IP} -D {DB-Name}
randeepsp
1
Was ist, wenn wir den spezifischen PORT angeben müssen?
Serge
2
Funktionierte nicht im Terminal unter MacOS High Sierra Version 10.13.3
realPK
9
Kein Zwischenraum nach -p dev.mysql.com/doc/refman/8.0/en/command-line-options.html
Ivan Chau
33

Bearbeiten Sie die Datei my.cnf:

vi /etc/my.cnf::

Stelle sicher das:

bind-address=YOUR-SERVER-IP

und wenn Sie die Linie haben:

skip-networking

Stellen Sie sicher, dass Sie es kommentieren:

#skip-networking

Vergessen Sie nicht, neu zu starten:

/etc/init.d/mysqld restart

Alfasin
quelle
Bindungsadresse = IHRE-SERVER-IP. Hier, welche IP muss ich erwähnen, ist es Remote-Server-IP?
user1986299
@ user1986299 nein, Sie benötigen die IP Ihres Servers (nicht die Remote)
Alfasin
1
Sie sollten sich Zugriff gewähren ... melden Sie Ihre grant all privileges on *.* to 'root'@'%' identified by 'your-password'
Datenbank
5
Gewähren Sie NIEMALS 'root' @ '%'. Dies ist eine riesige Sicherheit. Nein, nein!
Josh123a123
1
@alfasin das ist ein kleiner Tweak mit einer tiefen Wirkung, danke!
Christopher Schönfeldt
30

Stellen Sie dies einfach auf das Terminal bei Ubuntu:

mysql -u username -h host -p

Drücken Sie nun die Eingabetaste

Das Terminal fragt Sie nach dem Passwort, gibt das Passwort ein und Sie befinden sich im Datenbankserver

Kedar Jangir
quelle
14

Versuchen Sie diesen Befehl mysql -uuser -hhostname -PPORT -ppassword.

Ich hatte eine ähnliche Situation und später, als der MySQL-Port für den Host mit dem Befehl eingegeben wurde, wurde er gelöst.

rajarajan2809
quelle
5
mysql -u testuser -h 192.168.**.* -P 3306 -p passwordarbeitete für mich
Mahebub A Sayyed
14

Verwenden Sie für Mac den folgenden Befehl:

mysql -u app -h hostaddress -P port -D dbname -p

und geben Sie dann das Passwort ein, wenn Sie dazu aufgefordert werden.

KayV
quelle
12

Wenn Sie den SSH- Tunnel nicht verwenden möchten , müssen Sie in my.cnf oder mysqld.cnf 127.0.0.1 mit Ihrer lokalen IP-Adresse ( 192.168.1.100 ) ändern , um Zugriff über das Lan zu erhalten. Beispiel unten:

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

Suchen Sie nach Bindungsadresse in my.cnf oder mysqld.cnf

bind-address            =  127.0.0.1

und ändern Sie 127.0.0.1 in 192.168.1.100 (lokale IP-Adresse)

bind-address            =  192.168.1.100

Um die von Ihnen vorgenommene Änderung zu übernehmen, müssen Sie den MySQL-Server mit dem nächsten Befehl neu starten.

sudo /etc/init.d/mysql restart

Ändern Benutzer root für LAN Access (laufen die unten Abfrage in Remote - Server , dass Sie Zugriff haben wollen)

root@192.168.1.100:~$ mysql -u root -p

..

CREATE USER 'root'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Wenn Sie nur von einer bestimmten IP-Adresse aus Zugriff haben möchten, ändern Sie 'root' @ '%' in 'root' @ '(IP-Adresse oder Hostname).'

CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Dann können Sie verbinden:

nobus@xray:~$ mysql -h 192.168.1.100 -u root -p

getestet auf Ubuntu 18.04 Server

Hornhaut Valentin
quelle
Die beste Antwort! Danke
Nastro
6

Ich gehe davon aus, dass Sie MySQL auf Ihrem Computer installiert haben. Führen Sie den folgenden Befehl aus, nachdem Sie fehlende Details eingegeben haben:

mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 
realPK
quelle
2

Es muss überprüft werden, ob der eingehende Zugriff auf Port 3306 von der Firewall blockiert wird oder nicht.

Amirol Ahmad
quelle
Wie kann ich das überprüfen
ChandraMouli Poreddy
2

Es gibt einen einfachen Befehl.

mysql -h {hostip} -P {port} -u {username} -p {database}

Beispiel

mysql -h 192.16.16.2 -P 45012 -u rockbook -p rockbookdb
Manish Goswami
quelle
{Hostip} wird keine Port-Details wie 192.10.10.26::45124
Manish Goswami
1

Diese Lösung hat bei mir funktioniert:

Auf Ihrem Remote-Computer (Beispiel: 295.13.12.53) hat Zugriff auf Ihren Remote-Zielcomputer (auf dem der MySQL-Server ausgeführt wird).

ssh -f -L 295.13.12.53:3306:10.18.81.36:3306 user@295.13.12.53

Erklärt:

ssh -f -L your_ssh_mashine_ipaddress:your_ssh_mashine_local_port:target_ipaddress:target_port user@your_ip_address -N

your_ssh_mashine_ipaddress - Es handelt sich nicht um eine lokale IP-Adresse, sondern um eine IP-Adresse, an die Sie in diesem Beispiel 295.13.12.53 senden

your_ssh_mashine_local_port - dies ist ein benutzerdefinierter Port, nicht 22, in diesem Beispiel 3306.

target_ipaddress - IP des Computers, auf dem Sie die Datenbank sichern möchten.

target_port - 3306 Dies ist ein echter Port für den MySQL-Server.

user @ your_ip_address - Dies sind die SSH-Anmeldeinformationen für die SSH-Mashine, die Sie verbinden

Wenn dies alles erledigt ist, kehren Sie zu Ihrer Maschine zurück und gehen Sie folgendermaßen vor:

mysqldump -h 295.13.12.53 -P 3306 -u username -p db_name > dumped_db.sql

Ich werde nach dem Passwort fragen, dein Passwort eingeben und du bist verbunden. Hoffe das hilft.

gewalttätig
quelle
1

Versuchen Sie dies, es funktioniert:

mysql -h {Hostname} -u {Benutzername} -p {Passwort} -N -e "{auszuführende Abfrage}"

Ravi Teja
quelle
0

Sie sollten Ihr Passwort mit 'p' eingeben.

mysql -u root -u 1.1.1.1 -p'MyPass'
Karin Lahyani
quelle
0

Ich bekam auch den gleichen Fehler. Aber fand es nützlich, indem Sie einen neuen MySQL-Benutzer auf einem Remote-MySQL-Server erstellen und dann eine Verbindung herstellen. Führen Sie den folgenden Befehl auf dem Remote-Server aus:

CREATE USER 'openvani'@'localhost' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'openvani'@'localhost WITH GRANT 
OPTION;
CREATE USER 'openvani'@'%' IDENTIFIED BY 'some_pass';
GRANT ALL PRIVILEGES ON *.* TO 'openvani'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Jetzt können Sie mit dem folgenden Befehl eine Verbindung mit Remote-MySQL herstellen.

mysql -u openvani -h 'any ip address'-p

Hier ist der vollständige Beitrag:

http://openvani.com/blog/connect-remotely-mysql-server/

Davinder Snehi
quelle
0

MySQL-Server sind normalerweise so konfiguriert, dass sie nur localhost (127.0.0.1) abhören, wo sie von Webanwendungen verwendet werden.

Wenn dies der Fall ist, Sie jedoch SSH-Zugriff auf Ihren Server haben, können Sie einen SSH-Tunnel erstellen und über diesen eine Verbindung herstellen.

Erstellen Sie auf Ihrem lokalen Computer den Tunnel.

ssh -L 3307:127.0.0.1:3306 -N $user@$remote_host

(In diesem Beispiel wird der lokale Port 3307 verwendet, falls auf Ihrem lokalen Computer auch MySQL ausgeführt wird und der Standardport 3306 verwendet wird.)

Jetzt sollten Sie Ale sein, mit dem Sie sich verbinden können

mysql -u $user -p -h 127.0.0.1 -P 3307
mivk
quelle
0

Dieser hat in MySQL 8 für mich funktioniert. Ersetzen Sie ihn hostnamedurch Ihren Hostnamen und port_numberdurch Ihre Portnummer. Sie können auch Ihren MySQL-Benutzer ändern, wenn er nicht root ist

      mysql --host=host_name --port=port_number -u root -p

Weitere Informationen hier

levis
quelle
0

Wenn Sie unter Windows arbeiten, probieren Sie Visual Studio Code mit MySQL-Plugins aus, eine einfache und integrierte Möglichkeit, auf MySQL-Daten auf einem Windows-Computer zuzugreifen. Und die Datenbanktabellen aufgelistet und können beliebige benutzerdefinierte Abfragen ausführen.

Cosmo Arun
quelle