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


190

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?


5
10061= Connexion refusée
Danny Beckett

Réponses:


294

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 passant à la base de données mentionnée.

31-07-2019 - syntaxe modifiée


23
J'ai dû entourer le mot de passe entre guillemets simples. iemysql -u USERNAME -p'PASSWORD' -h REMOTE_SERVER_IP DB_NAME
Nick Brady

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
Ne fonctionne pas dans Terminal sur MacOS High Sierra Version 10.13.3
realPK

9
pas d'espace -p intermédiaire
Ivan Chau

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


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)
alfasin

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'
alfasin

5
NE JAMAIS accorder '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

30

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


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.


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é.


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 dans 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


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 


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

{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 vous connectez, 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.


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}"


0

Vous devriez mettre votre mot de passe avec 'p'

mysql -u root -u 1.1.1.1 -p'MyPass'

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/


0

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 machine locale, 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

0

Celui-ci a fonctionné pour moi dans mysql 8, remplacez-le hostnamepar 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


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.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.