IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MySQL Discussion :

Connexion distante vers un autre serveur


Sujet :

MySQL

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Points : 64
    Points
    64
    Par défaut Connexion distante vers un autre serveur
    Bonjour,

    Je veux permettre a un serveur distant (SERVER) de se connecter sur ma base de donnée (CIBLE), j'ai fait les etapes suivantes:

    Cryper le mot de passe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT password('Pass_Allowed_To_Access');
    Garantir l'utilisation
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    GRANT USAGE ON *.* TO 'USER'@'IP_SERVER' IDENTIFIED BY PASSWORD 'Encypted_Pass_Allowed_To_Access';
     
    FLUSH PRIVILEGES;
    Je teste avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql -u USER -p -h IP_CIBLE
    Mais en précisant la base de donnée, je peux pas me connecter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql -u USER -p -h IP_CIBLE -D BDD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    mysql> SHOW GRANTS for 'USER'@'IP_SERVER';
    +----------------------------------------------------------------------------------------------------------------------+
    | Grants for USER@localhost                                                                                   |
    +----------------------------------------------------------------------------------------------------------------------+
    | GRANT USAGE ON *.* TO 'USER'@'IP_SERVER' IDENTIFIED BY PASSWORD 'PASS_ENCRYPTED' |
    | GRANT ALL PRIVILEGES ON `USER`.* TO 'USER'@'IP_SERVER'                                             |
    +----------------------------------------------------------------------------------------------------------------------+
    2 rows in set (0.00 sec)
    Je peux y accéder, mais je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    +--------------------+
    1 row in set (0.03 sec)
    Les autres bases de données n'existent pas, qu'est ce que j'ai oublié de faire?

    Merci a vous

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 377
    Points : 19 049
    Points
    19 049
    Par défaut
    Salut Fredy007.

    Pour accéder en ligne de commande, à un serveur distant, vous devez préciser :

    1) créer un compte user sur votre serveur distant.
    Vous devez mettre comme privilège, par exemple, "select, delete, update, insert".
    Je suppose que c'est pour faire que de la manipulation de données (DML=Data Manipulation Language) et non créer des structures (DDL=Data Definition Language).

    Bien sûr, cela doit se faire que sur une base de données dont vous désirez accéder et pas toutes les bases.

    Ne pas oublier d'adjoindre à ce compte un mot de passe.

    2) quand vous créez le compte, toujours sur le serveur distant, vous devez préciser le nom d'hôte.
    En général, on met "localhost" ou "127.0.0.1" car les accès se vont en local.
    Pour des accès distants, et si vous ne savez pas quoi mettre, autant mettre "%" qui signifie tout le monde.
    Sinon, mettre l'adresse IP de l'ordinateur où est hébergé votre serveur distant mysql ou encore le nom du site.
    Le nom du site fonctionne parfaitement si dans apache, vous avez déclaré un VirtualHost.

    3) essayez de connaitre le port qui est utilisé pour le serveur distant MySql. En général, on met "3306".

    4) au niveau du pare-feu, il faut s'assurer que le port 3306 est ouvert.

    5) si vous passez par un routeur, s'assurer que celui-ci redirige correctement le flux entrant (port 3306) vers votre serveur distant mysql.

    6) en ligne de commande, pour exécuter une requête sql, vous devez faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    shell> mysql  -user=compte_mysql  --password=mot_de_passe  --host=adresse_ip_distant  --port=3306 --verbose  --force  < script.sql
    La redirection "< script.sql" permet de rediriger le script sql comme un flux entrant à la commande mysql.

    Dans ce script sql, la première des choses à faire est de préciser le nom de votre base de donénes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    use votre_base_de_données;
    7) pour tester la connexion, faites un ping de votre adresse ip du serveur distant mysql.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Points : 64
    Points
    64
    Par défaut
    Dernier EDIT:

    J'ai supprimé l'utilisateur et recréer un autre, et ça marche,

    Une chose que j'obtiens au niveau du terminal:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mysql: [Warning] Using a password on the command line interface can be insecure.
    et ça se connecte pas



    Merci Artemus24 pour l'explication, je vous informe ci suite:

    - Le port 3306 est ouvert au niveau du IPTABLES,
    - L'utilisateur est deja crée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    USER	94.23.XXX.XXX	Oui	USAGE	Non
    La connexion est réussie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # mysql -u USER -p -h IP_CIBLE
    Enter password: 
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 21084
    Server version: 5.5.52-0ubuntu0.12.04.1 (Ubuntu)
     
    Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
     
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.
     
    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    Et lors de saisie la commande show databases, j'obtiens pas les bases de donnée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    +--------------------+
    1 row in set (0.00 sec)
     
    mysql>
    et le code que vous avez mis me retourne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    mysql: [Warning] Using a password on the command line interface can be insecure.
    ERROR 1044 (42000) at line 1: Access denied for user 'USER'@'IP_CLIENT' to database 'DB_NAME'

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 377
    Points : 19 049
    Points
    19 049
    Par défaut
    Salut Fredy007.

    Citation Envoyé par Fredy007
    J'ai supprimé l'utilisateur et recréer un autre, et ça marche,
    Qu'est-ce qui fonctionne ?

    Citation Envoyé par Fredy007
    et ça se connecte pas
    Citation Envoyé par Fredy007
    La connexion est réussie:
    Pas très clair votre compte rendu de ce que vous essayez de faire.
    Ca fonctionne ou ça ne fonctionne pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql: [Warning] Using a password on the command line interface can be insecure.
    C'est juste un warning pour indiquer que MySql n'apprécie pas du tout de mettre en clair le mot de passe dans la ligne de commande.
    Ce n'est pas cela qui vous empêche de vous connecter.

    Citation Envoyé par Fredy007
    Et lors de saisie la commande show databases, j'obtiens pas les bases de donnée
    Sayez cohérent dans ce que vous faites.
    Par exemple, vous avez les privilèges "select, insert, update, delete" pour la base de données "test".
    Pourquoi interroger une autre base de données, avec des privilèges que vous ne possédez pas ?

    Ce que vous devez faire avec les privilèges que vous possédez, c'est par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use test;
    select * from {une_table_de_la_base_test} limit 25;
    Si cela fonctionne, c'est que vous êtes autorisé à consulter cette table de la base "test", avec le compte "user".

    si vous désirez un accès total à votre serveur mysql distant, prenez les mêmes privilèges que le compte "root" !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR 1044 (42000) at line 1: Access denied for user 'USER'@'IP_CLIENT' to database 'DB_NAME'
    Le message est pourtant clair, non ? Soit :
    1) l'hôte n'est pas le bon. Je vous avais dit, en cas de doute, de mettre "%", au lieu de "IP_CLIENT".
    2) vous n'avez pas autorisé le compte "user" à accéder à la base de données "DB_NAME".
    3) soit vous vous êtes trompés de base. Dans le compte "user", vous avez mis une autre base de données.
    4) vous n'avez pas mis toutes les autorisations sur ce que vous voulez faire.
    Si vous désirez consulter les bases de données, dans les privilèges globaux, de la partie "administration", vous devez cocher "SHOW DATABASES".

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Points : 64
    Points
    64
    Par défaut
    Quand j'ai obtenu le warning, j'ai utilisé le mot de passe crypté, c'est pour cela il se connectait pas, mais en utilisant le mot de passe clair, ca marche.

    Y a t-il un moyen d'utiliser le mot de passe crypté en terminal?

  6. #6
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 377
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 377
    Points : 19 049
    Points
    19 049
    Par défaut
    Salut fredy007.

    Citation Envoyé par Fredy007
    Y-a-t-il un moyen d'utiliser le mot de passe crypté en terminal?
    Non, ce n'est pas possible.

    Dans la pratique, le mot de passe se saisie à la main et ne se met pas en dure dans un script batch, et encore moins dans le fichier my.ini.
    C'est une question de sécurité !

    Si vous avez terminé, vous pouvez mettre ce sujet à résolu.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 171
    Points : 64
    Points
    64
    Par défaut
    Merci a vous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rediriger une connexion vers un autre serveur
    Par Damian Iste dans le forum Réseau
    Réponses: 4
    Dernier message: 11/09/2013, 19h27
  2. [MySQL] Connexion distante vers un serveur MySQL
    Par Shiryu57 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 05/09/2007, 11h08
  3. Réponses: 4
    Dernier message: 19/12/2005, 11h31
  4. Réponses: 5
    Dernier message: 08/07/2005, 13h10
  5. copie d'un fichier vers un autre serveur
    Par jexl dans le forum ASP
    Réponses: 4
    Dernier message: 20/12/2004, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo