Pages : 1
#1 Le 12/08/2016, à 20: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, à 20:52)
Hors ligne
#2 Le 12/08/2016, à 22: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, à 22:45)
https://utux.fr (blog perso)
Hors ligne
#3 Le 12/08/2016, à 23:43
- seabird2_fr
Re : Connexion base de données distante
Bonsoir,
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 12/08/2016, à 23:50)
Hors ligne
#4 Le 13/08/2016, à 07: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.
#5 Le 13/08/2016, à 08: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, à 08:15)
Hors ligne
#6 Le 13/08/2016, à 09: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, à 09:44)
#7 Le 13/08/2016, à 10: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, à 10:10)
Hors ligne
#8 Le 13/08/2016, à 10:16
- bruno
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
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.
#9 Le 13/08/2016, à 10:31
- seabird2_fr
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.
A ben mince alors c'est bon 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, à 10:32)
Hors ligne
#10 Le 13/08/2016, à 10: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, à 10:44)
#11 Le 13/08/2016, à 10: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
Merci en tout cas pour votre aide
Eric
Hors ligne
#12 Le 13/08/2016, à 13: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, à 13:29)
Hors ligne
#13 Le 13/08/2016, à 14: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.
#14 Le 13/08/2016, à 14: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, à 14:46)
Hors ligne
#15 Le 13/08/2016, à 16: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.
#16 Le 13/08/2016, à 16: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, à 11: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
Pages : 1