Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/08/2016, à 21:07

seabird2_fr

Connexion base de données distante

Bonjour,

Je suis en train de faire en sorte d'avoir un serveur de base de données séparé du  serveur web.
J'ai créé un vlan avec deux serveurs:

    - Server1 ( site ) avec une ip publique: xxx.xxx.xxx.xxx  et une ip local: 192.168.0.1
    - Server2 ( MySQL)  ip local:  192.168.0.2 

Ensuite , j'ai fait les modifs suivantes:
Dans /etc/mysql/my.cnf du Server2 MySQL j'ai mis: bind-address = 192.168.0.2 à la place de 127.0.0.1
et j'ai rajouté cette règle à iptables du Server2 MySQL.
iptables -A INPUT -i eth1 -s 192.168.0.1 -p tcp --destination-port 3306 -j ACCEPT

Avec cette config , j'arrive donc à  connecter le site du Server1 192.168.0.1 à la base sur le Server2. Donc ça c'est bon.

Maintenant , je voudrais me connecter avec phpmyadmin qui est sur le Server1 192.168.0.1 à la base de mysql sur 192.168.0.2
J'ai donc modifier la config de phpmyadmin /etc/phpmyadmin/config.inc.php en mettant $cfg['Servers'][$i]['host'] = '192.168.0.2';
Puis sur mysql:
mysql -u root -h localhost -p
mysql> GRANT ALL PRIVILEGES ON *.* TO root@192.168.0.1 IDENTIFIED BY 'mon_pass' WITH GRANT OPTION;
mysql> flush privileges;

Apres ces modifs, je n'arrive pas à me connecter avec phpmyadmin.
Si je regarde les logs, j'ai
phpmyadmin: Failed to load /etc/phpmyadmin/config-db.php. Check group www-data has read access.

Il y a un souci où à votre avis ? Peut-être est ce du à suexec et suphp que j'ai sur le Server1 ?

Je tiens à signaler que j'ai installé phpmyadmin sur les deux serveurs pour vérifier . Et tout marche sans problème avec $cfg['Servers'][$i]['host'] = 'localhost'; sur les deux serveurs.

Merci,

Eric

Dernière modification par seabird2_fr (Le 12/08/2016, à 21:52)

Hors ligne

#2 Le 12/08/2016, à 23:45

donut

Re : Connexion base de données distante

Salut,

D'une part je te conseille de tester ta connexion MySQL en cli d'abord.
Depuis ton server 192.168.0.1 (celui sur lequel il y a phpmyadmin) :

mysql -h 192.168.0.2 -u root -p

Si tu arrive à te connecter, ça veut dire que tes droits sont bons.

D'autre part tu as relevé un point intéressant :

phpmyadmin: Failed to load /etc/phpmyadmin/config-db.php. Check group www-data has read access.

Peut-être que tu as créé/édité ce fichier en root et qu'il n'est pas lisible par le serveur web ?
Essaie un :

chown www-data /etc/phpmyadmin/config-db.php

Dernière modification par donut (Le 12/08/2016, à 23:45)


https://utux.fr (blog perso)

Hors ligne

#3 Le 13/08/2016, à 00:43

seabird2_fr

Re : Connexion base de données distante

Bonsoir,

donut a écrit :
mysql -h 192.168.0.2 -u root -p

Si tu arrive à te connecter, ça veut dire que tes droits sont bons.

Effectivement , je n'arrive pas à me connecter
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.0.2' (110)

D'ailleurs pourquoi si je mets:

mysql -h 192.168.0.1 -u root -p

, ça ne marche pas non plus alors que

mysql -h localhost -u root -p

fonctionne ?
Je suis bien sur la même machine pourtant ?
ifconfig sur server1

eth1      Link encap:Ethernet  HWaddr 00:16:3e:78:d0:e3
          inet addr:192.168.0.1  Bcast:192.168.0.255  Mask:255.255.255.0
...................

Sinon pour chown www-data /etc/phpmyadmin/config-db.php
Oui ça j'avais essayé aussi

D'où cela peut venir ?

Eric

Dernière modification par seabird2_fr (Le 13/08/2016, à 00:50)

Hors ligne

#4 Le 13/08/2016, à 08:37

bruno

Re : Connexion base de données distante

Salut,

Donne-nous le retour de :

ls -l /etc/phpmyadmin/config-db.php

Exemple sous Ubuntu :

-rw-r----- 1 root www-data 519 avril 30 13:53 /etc/phpmyadmin/config-db.php

En principe tu n'aurais pas du modifier ce fichier. Ce fichier est généré à l'installation du paquet phpmyadmin et contient les informations concernant la base phpmyadmin. Il est ensuite utilisé par /etc/phpmyadmin/config.inc.php.

Voici un exemple qui fonctionne sur un réseau local où les deux machines ont mysql-server installé :

- un serveur ayant l'adresse 192.168.0.2 avec mysql-server fonctionnel ;
- une machine ayant l'adresse 192.168.0.1 avec une pile LAMP et phpmyadmin fonctionnels ;

Sur le serveur 192.168.0.2 :
- modification de /etc/mysql/my.cnf → la ligne bind-address est commentée (équivalent à bind-address = *, cf. la doc MySQL))
- commandes mysql pour donner les droits à l'utilisateur root distant :

 grant all privileges on *.* to root@192.168.0.1 identified by "motdepasse";
flush privileges;

- on relance mysql :

sudo service mysql restart

Sur la machine 192.168.0.1 :
- on ne touche pas au fichier config-db.php créé à l'installation.
- on crée un fichier /etc/phpmyadmin/conf.d/remote.php en tant que root :

sudo nano /etc/phpmyadmin/conf.d/remote.php

et on y met :

<?php
     $cfg['Servers'][$i]['host'] = '192.168.0.2';

- on enregistre.

Sur la machine 192.168.0.1 l'accès à phpmyadmin devrait permettre de se connecter soit à localhost, soit à 192.168.0.2 grâce à la nouvelle liste déroulante sur la page de connexion.

Tu pourra ensuite ajouter autant de serveur distants que tu veux en ajoutant des lignes dans /etc/phpmyadmin/conf.d/remote.php.

Hors ligne

#5 Le 13/08/2016, à 09:14

seabird2_fr

Re : Connexion base de données distante

Salut Bruno,

Pour ls -l /etc/phpmyadmin/config-db.php , j'ai :

-rw-r----- 1 root www-data 550 Jan 5 2016 /etc/phpmyadmin/config-db.php

Sinon pour le reste , j'ai fait comme tu as dit:
Sur le serveur 192.168.0.2 :
- modification de /etc/mysql/my.cnf → la ligne bind-address est commentée
- commandes mysql pour donner les droits à l'utilisateur root distant :

GRANT ALL PRIVILEGES ON *.* TO root@192.168.0.1 IDENTIFIED BY 'mon_pass' WITH GRANT OPTION;
flush privileges;

Ensuite, je n'avais pas créé de fichier remote.php dans /etc/phpmyadmin/conf.d/ ,mais j'ai modifié la config de phpmyadmin /etc/phpmyadmin/config.inc.php en mettant $cfg['Servers'][$i]['host'] = '192.168.0.2';

J'ai donc tenté le remote.php sachant que je n'avais pas de dossier conf.d que j'ai donc créé.
Par contre quand je lance phpmyadmin , je n'ai pas de liste déroulante tout comme d'ailleurs lorsque j'ai modifié $cfg['Servers'][$i]['host'] = '192.168.0.2'; dans /etc/phpmyadmin/config.inc.php

Eric

Dernière modification par seabird2_fr (Le 13/08/2016, à 09:15)

Hors ligne

#6 Le 13/08/2016, à 10:44

bruno

Re : Connexion base de données distante

Quelle version d'Ubuntu ? de phpmyadmin ?
Quel est le contenu de etc/phpmyadmin/config.inc.php ?

Arrives-tu à te connecter en ligne de commande de puis la machine 192.168.0.1 :

mysql -h 192.168.0.2  -u root  -p

Dernière modification par bruno (Le 13/08/2016, à 10:44)

Hors ligne

#7 Le 13/08/2016, à 11:10

seabird2_fr

Re : Connexion base de données distante

Non je n'arrive pas à me connecter en faisant:

mysql -h 192.168.0.2  -u root  -p

ni sur le serveur 192.168.0.1 en faisant

mysql -h 192.168.0.1  -u root  -p

pourtant pour

mysql -h localhost  -u root  -p

lorsque je suis sur le serveur 192.168.0.1 c'est bon.

Pourtant le test de site que j'ai sur 192.168.0.1 arrive à se connecter à la base sur 192.168.0.2 puisque j'ai mis 192.168.0.2 dans le host de connexion.

Sinon, j'ai cette version:
Linux version 3.18.26-guest-4-4751b4a-x86_64 (package@jessie64) (gcc version 4.9.2 (Debian 4.9.2-10) ) #4 SMP Mon Feb 1 16:09:23 UTC 2016

Pour phpmyadmin: Version: 3.4.11.1deb2

contenu de etc/phpmyadmin/config.inc.php:

<?php
/**
 * Debian local configuration file
 *
 * This file overrides the settings made by phpMyAdmin interactive setup
 * utility.
 *
 * For example configuration see
 *   /usr/share/doc/phpmyadmin/examples/config.sample.inc.php
 * or
 *   /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php
 *
 * NOTE: do not add security sensitive data to this file (like passwords)
 * unless you really know what you're doing. If you do, any user that can
 * run PHP or CGI on your webserver will be able to read them. If you still
 * want to do this, make sure to properly secure the access to this file
 * (also on the filesystem level).
 */

// Load secret generated on postinst
include('/var/lib/phpmyadmin/blowfish_secret.inc.php');

// Load autoconf local config
include('/var/lib/phpmyadmin/config.inc.php');

/**
 * Server(s) configuration
 */
$i = 0;
// The $cfg['Servers'] array starts with $cfg['Servers'][1].  Do not use $cfg['Servers'][0].
// You can disable a server config entry by setting host to ''.
$i++;

/**
 * Read configuration from dbconfig-common
 * You can regenerate it using: dpkg-reconfigure -plow phpmyadmin
 */
if (is_readable('/etc/phpmyadmin/config-db.php')) {
    require('/etc/phpmyadmin/config-db.php');
} else {
    error_log('phpmyadmin: Failed to load /etc/phpmyadmin/config-db.php.'
        . ' Check group www-data has read access.');
}
/* Configure according to dbconfig-common if enabled */
if (!empty($dbname)) {
    /* Authentication type */
    $cfg['Servers'][$i]['auth_type'] = 'cookie';
    /* Server parameters */
    if (empty($dbserver)) $dbserver = 'localhost';
    $cfg['Servers'][$i]['host'] = $dbserver;

    if (!empty($dbport) || $dbserver != 'localhost') {
        $cfg['Servers'][$i]['connect_type'] = 'tcp';
        $cfg['Servers'][$i]['port'] = $dbport;
    }
    //$cfg['Servers'][$i]['compress'] = false;
    /* Select mysqli if your server has it */
    $cfg['Servers'][$i]['extension'] = 'mysqli';
    /* Optional: User for advanced features */
    $cfg['Servers'][$i]['controluser'] = $dbuser;
    $cfg['Servers'][$i]['controlpass'] = $dbpass;
    /* Optional: Advanced phpMyAdmin features */
    $cfg['Servers'][$i]['pmadb'] = $dbname;
    $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
    $cfg['Servers'][$i]['relation'] = 'pma_relation';
    $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
    $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
    $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
    $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
    $cfg['Servers'][$i]['history'] = 'pma_history';
    $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
    $cfg['Servers'][$i]['tracking'] = 'pma_tracking';
    $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig';

    /* Uncomment the following to enable logging in to passwordless accounts,
     * after taking note of the associated security risks. */
    // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;

    /* Advance to next server for rest of config */
    $i++;


}
/* Authentication type */
//$cfg['Servers'][$i]['auth_type'] = 'cookie';
/* Server parameters */
$cfg['Servers'][$i]['host'] = '192.168.0.2';
//$cfg['Servers'][$i]['connect_type'] = 'tcp';
//$cfg['Servers'][$i]['compress'] = false;
/* Select mysqli if your server has it */
//$cfg['Servers'][$i]['extension'] = 'mysql';
/* Optional: User for advanced features */
// $cfg['Servers'][$i]['controluser'] = 'pma';
// $cfg['Servers'][$i]['controlpass'] = 'pmapass';
/* Optional: Advanced phpMyAdmin features */
// $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
// $cfg['Servers'][$i]['bookmarktable'] = 'pma_bookmark';
// $cfg['Servers'][$i]['relation'] = 'pma_relation';
// $cfg['Servers'][$i]['table_info'] = 'pma_table_info';
// $cfg['Servers'][$i]['table_coords'] = 'pma_table_coords';
// $cfg['Servers'][$i]['pdf_pages'] = 'pma_pdf_pages';
// $cfg['Servers'][$i]['column_info'] = 'pma_column_info';
// $cfg['Servers'][$i]['history'] = 'pma_history';
// $cfg['Servers'][$i]['designer_coords'] = 'pma_designer_coords';
/* Uncomment the following to enable logging in to passwordless accounts,
 * after taking note of the associated security risks. */
// $cfg['Servers'][$i]['AllowNoPassword'] = TRUE;

/*
 * End of servers configuration
 */

/*
 * Directories for saving/loading files from server
 */
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';

#On force phpmyadmin en ssl
$cfg['ForceSSL'] = True;

Dernière modification par seabird2_fr (Le 13/08/2016, à 11:10)

Hors ligne

#8 Le 13/08/2016, à 11:16

bruno

Re : Connexion base de données distante

seabird2_fr a écrit :

Non je n'arrive pas à me connecter en faisant:

mysql -h 192.168.0.2  -u root  -p

Il faut commencer par résoudre ce problème.
Si tu as un pare-feu, désactive-le (de toute façon, il ne sert probablement à rien…) et réessaie.

Hors ligne

#9 Le 13/08/2016, à 11:31

seabird2_fr

Re : Connexion base de données distante

bruno a écrit :
seabird2_fr a écrit :

Non je n'arrive pas à me connecter en faisant:

mysql -h 192.168.0.2  -u root  -p

Il faut commencer par résoudre ce problème.
Si tu as un pare-feu, désactive-le (de toute façon, il ne sert probablement à rien…) et réessaie.

A ben mince alors c'est bon wink en arrêtant iptables.
Pourtant , j'ai mis cette règle dedans:

iptables -A INPUT -i eth1 -s 192.168.0.1 -p tcp --destination-port 3306 -j ACCEPT

ce n'est pas bon ?

Pourquoi le site arrive à se connecter lui ?

Il vaut mieux mettre çà dans iptables ?

iptables -A INPUT -s 192.168.0.1 -j ACCEPT

NB: je laisse le pare feu , j'ai pour l'instant une ip publique sur 192.168.0.2

Dernière modification par seabird2_fr (Le 13/08/2016, à 11:32)

Hors ligne

#10 Le 13/08/2016, à 11:44

bruno

Re : Connexion base de données distante

J'aurais écrit (de mémoire -s est pour préciser l'interface de sortie):

iptables -A INPUT -i eth1 -src 192.168.0.1 -p tcp -dport 3306 -j ACCEPT

si eth1 est ton interface connectée au réseau local (192.168.0.0)
⇒ on autorise les connexions entrantes sur l'interface eth1 provenant uniquement de l'IP 192.168.0.1 en TCP sur le port 3306.

Dernière modification par bruno (Le 13/08/2016, à 11:44)

Hors ligne

#11 Le 13/08/2016, à 11:56

seabird2_fr

Re : Connexion base de données distante

pffff ben non en fait

iptables -A INPUT -i eth1 -s 192.168.0.1 -p tcp --destination-port 3306 -j ACCEPT

ca marche.

Je suis nul, je n'étais pas sur le bon ssh hmm

Merci en tout cas pour votre aide

Eric

Hors ligne

#12 Le 13/08/2016, à 14:19

seabird2_fr

Re : Connexion base de données distante

A tant que j'y suis.
Que prend-t-on principalement en compte pour dimensionner le serveur MySQL ?

Pour le serveur (192.168.0.1) sur lequel j'ai le site  , j'ai 4 Go de mémoire pour l'instant + 4 coeurs CPU
Si je prends pareil pour le serveur mysql, c'est trop ? Je peux prendre moins ?

C'est du VPS.

Merci

Dernière modification par seabird2_fr (Le 13/08/2016, à 14:29)

Hors ligne

#13 Le 13/08/2016, à 15:07

bruno

Re : Connexion base de données distante

La question n'a pas vraiment de sens…
J'ai un serveur MySQL qui tourne très bien sur un RaspberryPI (512 Mio de RAM).

Cela dépend de l'usage que tu en fait : nombre de base de données, tailles des tables, nombres de requêtes et complexité des requêtes, nombre de connexion simultanées, etc.

Hors ligne

#14 Le 13/08/2016, à 15:14

seabird2_fr

Re : Connexion base de données distante

Oui c'est sur.

En gros j'ai 5-6 bases de données avec en gros 150 tables chacunes. Et je fais aux alentours de 6000 vis /jours. En simultanée, cela doit être entre 20 et 25. ( 3 joomla, 2 wordpress, 1 prestashop )

Dernière modification par seabird2_fr (Le 13/08/2016, à 15:46)

Hors ligne

#15 Le 13/08/2016, à 17:04

bruno

Re : Connexion base de données distante

Le mieux c'est de surveiller régulièrement les ressources du serveur (il y a de nombreux outils pour cela) pendant quelque temps pour voir s'il a besoin de plus de RAM ou davantage de puissance de calcul.

Hors ligne

#16 Le 13/08/2016, à 17:26

seabird2_fr

Re : Connexion base de données distante

Oui c'est ce que je fais en général. Avec monit ,des sondes  pour le CPU et les disques.
Je voulais juste avoir une idée pour le départ quitte à rajouter des ressources apres.

Hors ligne

#17 Le 16/08/2016, à 12:17

jlmas

Re : Connexion base de données distante

En VPS on tourne entre 512Mo sur des petits sites monobase et 4Go sur des sites plus important en multibases pour du Mysql. En général on va de un  à quatre cœurs. Si ça peut aider

Hors ligne