Accéder à la base de données distante mysql à partir de la ligne de commande

206

J'ai un serveur avec Rackspace. Je souhaite accéder à la base de données à partir de la ligne de commande de ma machine locale.

J'ai essayé comme:

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

Mais cela donne une erreur:

ERREUR 2003 (HY000):

Impossible de se connecter au serveur MySQL sur «my.application.com» (10061)

Quelles sont les causes de cette erreur et comment puis-je me connecter à la base de données distante?

user1986299
la source
5
10061= Connexion refusée
Danny Beckett

Réponses:

318

Pour vous connecter directement à une console mysql distante, utilisez la commande ci-dessous:

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

Par exemple

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

pas d'espace après -p comme spécifié dans la documentation

Cela vous mènera directement à la console mysql en basculant vers la base de données mentionnée.

Venkat M
la source
2
Pour spécifier le nom de la base de données, nous devons ajouter -D. mysql -u {nom d'utilisateur} -p {mot de passe} -h {IP du serveur distant} -D {nom de la base de données}
randeepsp
1
et si nous devons spécifier le PORT spécifique?
Serge
2
N'a pas fonctionné dans le terminal sur MacOS High Sierra Version 10.13.3
realPK
9
pas d'espace -p intermédiaire
Ivan Chau
Est intéressant que dans dev.mysql.com/doc/refman/8.0/en/command-line-options.html ne mentionne pas sur le -Dparamètre
Manuel Jordan
33

éditez mon fichier.cnf:

vi /etc/my.cnf:

sois sûr que:

bind-address=YOUR-SERVER-IP

et si vous avez la ligne:

skip-networking

assurez-vous de le commenter:

#skip-networking

n'oubliez pas de redémarrer:

/etc/init.d/mysqld restart

Nir Alfasi
la source
bind-address = VOTRE-SERVEUR-IP. ici quelle IP dois-je mentionner est-ce une adresse IP de serveur distant?
user1986299
@ user1986299 non, vous avez besoin de l'adresse IP de votre serveur (pas de la télécommande)
Nir Alfasi
1
vous devriez vous accorder l'accès ... connectez-vous à votre base de données depuis le serveur local en tapant mysql puis:grant all privileges on *.* to 'root'@'%' identified by 'your-password'
Nir Alfasi
5
N'accordez JAMAIS 'root' @ '%' c'est une énorme sécurité non non!
josh123a123
1
@alfasin c'est un petit tweak avec un impact profond, merci!
Christopher Schönfeldt
31

mettez simplement ceci sur le terminal à ubuntu:

mysql -u username -h host -p

Maintenant appuyez sur Entrée

le terminal vous demandera le mot de passe, entrez le mot de passe et vous êtes dans le serveur de base de données

Kedar Jangir
la source
14

Essayez cette commande mysql -uuser -hhostname -PPORT -ppassword.

J'ai fait face à une situation similaire et plus tard, lorsque le port mysql pour l'hôte a été entré avec la commande, cela a été résolu.

rajarajan2809
la source
5
mysql -u testuser -h 192.168.**.* -P 3306 -p passwordtravaillé pour moi
Mahebub A Sayyed
14

Pour Mac, utilisez la commande suivante:

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

puis entrez le mot de passe lorsque vous y êtes invité.

KayV
la source
12

Si vous ne voulez pas utiliser le tunnel ssh, dans my.cnf ou mysqld.cnf, vous devez changer 127.0.0.1 avec votre adresse IP locale ( 192.168.1.100 ) afin d'avoir accès sur le LAN. exemple ci-dessous:

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

Recherchez l' adresse de liaison dans my.cnf ou mysqld.cnf

bind-address            =  127.0.0.1

et remplacez 127.0.0.1 par 192.168.1.100 (adresse IP locale)

bind-address            =  192.168.1.100

Pour appliquer le changement que vous avez effectué, vous devez redémarrer le serveur mysql en utilisant la commande suivante.

sudo /etc/init.d/mysql restart

Modifiez la racine de l' utilisateur pour l'accès au réseau local (exécutez la requête ci-dessous sur le serveur distant auquel vous souhaitez avoir accès)

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;

Si vous souhaitez avoir accès uniquement à partir d'une adresse IP spécifique, remplacez "root" @ "%" par "root" @ "(adresse IP ou nom d'hôte)"

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;

Ensuite, vous pouvez vous connecter:

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

testé sur le serveur ubuntu 18.04

Cornée Valentin
la source
La meilleure réponse! Merci
Nastro
6

Je suppose que MySQL est installé sur votre machine. Exécutez la commande ci-dessous après avoir rempli les détails manquants:

mysql -uUSERNAME -pPASSWORD -hHOSTNAME -P3306 
realPK
la source
2

Doit vérifier si l'accès entrant au port 3306 est bloqué ou non par le pare-feu.

Amirol Ahmad
la source
Comment puis-je vérifier cela
ChandraMouli Poreddy
2

Les serveurs mysql sont généralement configurés pour n'écouter que localhost (127.0.0.1), où ils sont utilisés par les applications Web.

Si tel est votre cas mais que vous avez un accès SSH à votre serveur, vous pouvez créer un tunnel ssh et vous connecter via celui-ci.

Sur votre ordinateur local, créez le tunnel.

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

(cet exemple utilise le port local 3307, au cas où vous auriez également mysql en cours d'exécution sur votre machine locale et en utilisant le port standard 3306)

Maintenant, vous devriez être ale pour vous connecter avec

mysql -u $user -p -h 127.0.0.1 -P 3307
mivk
la source
Comment transférer plusieurs ports vers différents serveurs en même temps? Mon cas d'utilisation - nous avons plusieurs serveurs Wordpress de production qui sont derrière un pare-feu. Supposons également que chacun d'eux utilise une clé SSH différente pour autoriser l'accès.
RodrikTheReader
@RodrikTheReader: répétez simplement les commandes avec différents numéros de port et les variables d'hôte $ user @ $ appropriées. Vous pouvez également ajouter des éléments différents -i $identity_fileà la commande ssh si vous avez des clés différentes.
mivk
2

Il y a une commande simple.

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

Exemple

mysql -h 192.16.16.2 -P 45012 -u rockbook -p rockbookdb
Manish Goswami
la source
{hostip} n'ajoutera aucun type de détail de port comme 192.10.10.26::45124
Manish Goswami
1

cette solution a fonctionné pour moi:

Sur votre machine distante (exemple: 295.13.12.53) a accès à votre machine distante cible (qui exécute le serveur mysql)

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

Expliqué:

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 - ce n'est pas une adresse IP locale, c'est une adresse IP à laquelle vous ssh, dans cet exemple 295.13.12.53

your_ssh_mashine_local_port -c'est le port personnalisé et non le 22, dans cet exemple, il s'agit du 3306.

target_ipaddress - adresse IP de la machine sur laquelle vous essayez de vider la base de données.

target_port - 3306 c'est le vrai port pour le serveur MySQL.

user @ your_ip_address - il s'agit des informations d'identification ssh pour le mashine ssh que vous connectez

Une fois tout cela fait, retournez sur votre machine et procédez comme suit:

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

Va demander le mot de passe, mettez votre mot de passe et vous êtes connecté. J'espère que cela t'aides.

violentr
la source
1

Essayez ceci, cela fonctionne:

mysql -h {nom d'hôte} -u {nom d'utilisateur} -p {mot de passe} -N -e "{requête à exécuter}"

ravi teja
la source
1

Celui-ci a fonctionné pour moi dans mysql 8, remplacez hostname par votre nom d'hôte et port_numberpar votre numéro de port, vous pouvez également changer votre mysql_user s'il n'est pas root

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

Plus d'informations ici

Lévi's
la source
0

Vous devriez mettre votre mot de passe avec 'p'

mysql -u root -u 1.1.1.1 -p'MyPass'
Karin Lahyani
la source
0

J'obtenais trop la même erreur. Mais je l'ai trouvé utile en créant un nouvel utilisateur mysql sur un serveur mysql distant, puis connectez-vous. Exécutez la commande suivante sur le serveur distant:

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;

Vous pouvez maintenant vous connecter avec mysql distant avec la commande suivante.

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

Voici le post complet:

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

Davinder Snehi
la source
0

Si vous êtes sous Windows, essayez Visual Studio Code avec des plugins MySQL, un moyen simple et intégré d'accéder aux données MySQL sur une machine Windows. Et les tables de base de données répertoriées et peuvent exécuter toutes les requêtes personnalisées.

Cosmo Arun
la source