S'il s'agit de MySQL, la mise en réseau du serveur de base de données n'est pas activée par défaut. Pour activer la mise en réseau dans MySQL, vous devez trouver le fichier de configuration MySQL actif nommé my.cnf
. Et modifiez-le.
Je vais vous expliquer comment procéder sur Ubuntu 12.04, mais les instructions sont similaires pour la plupart des installations Linux.
Activer la mise en réseau MySQL
Tout d'abord, ouvrez le fichier à l'aide d'un éditeur comme nano
. Vous devrez peut-être exécuter la commande via sudo
:
sudo nano /etc/mysql/my.cnf
Recherchez ensuite la zone dans votre fichier de configuration avec le bind-address
choix :
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
Changez maintenant cette bind-address
réglage sur ce qui suit :
bind-address = 0.0.0.0
Ceci fait, enregistrez le fichier et redémarrez MySQL comme ceci :
sudo service mysql restart
Et maintenant, votre base de données MySQL pourra prendre des connexions non-localhost à partir de machines distantes.
Assurez-vous que le port MySQL 3306
est ouvert
Cela dit, même avec la mise en réseau activée, vous devez toujours vérifier si vous pouvez vous connecter à la machine distante à partir de la ligne de commande à l'aide d'un outil de mise en réseau tel que nmap
. Vous avez peut-être un pare-feu sur 192.168.1.10
blocage du port MySQL 3306
vous devez donc vérifier s'il est ouvert ou fermé comme ceci :
nmap 192.168.1.10 -p3306
Et si le port 3306
est ouvert, ce sera la réponse ; notez le open
sous STATE
:
Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT STATE SERVICE
3306/tcp open mysql
Mais si le port 3306
est fermé, vous obtiendrez ceci ; notez le closed
sous STATE
:
Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT STATE SERVICE
3306/tcp closed mysql
Vérifiez vos subventions utilisateur MySQL
Maintenant que tout est fait, votre serveur de base de données MySQL devrait être accessible sur le réseau. Mais cela dit, vous devez vous assurer que l'utilisateur de votre base de données que vous utilisez est autorisé à se connecter à partir d'une machine distante sur votre réseau local. Alors connectez-vous à MySQL et exécutez cette commande pour voir les subventions que l'utilisateur pourrait avoir :
SELECT user, host FROM `mysql`.`user`;
Cela vous montrera une liste d'utilisateurs et d'hôtes connectés à ces utilisateurs dans MySQL. Le fait est que la plupart des utilisateurs n'ont que des privilèges d'accès à localhost
ou 127.0.0.1
. Certains reçoivent l'hôte générique de %
. Vous devez consulter cette liste et voir si l'utilisateur que vous souhaitez utiliser a un hôte générique (%
) ou une adresse IP spécifique qui leur est connectée. Vous pouvez vérifier le GRANT
d'un utilisateur s en exécutant une ligne comme celle-ci ; bien sûr changer [your_database_user]
et [hostname]
pour correspondre à vos paramètres :
SHOW GRANTS FOR '[your_database_user]'@'[hostname]';
Cela devrait vous montrer une liste de GRANT
disponibles s pour un utilisateur sur un hôte spécifique. S'ils ont GRANT
s qui autoriseraient l'accès à distance, comme l'utilisation du caractère générique %
hôte, alors vous êtes prêt. S'ils n'ont pas de GRANT
s vous pouvez exécuter les commandes MySQL suivantes ; bien sûr changer [your_database]
et [your_database_user]
pour correspondre à vos paramètres :
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'192.168.0.0/255.255.0.0';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'10.0.0.0/255.0.0.0';
FLUSH PRIVILEGES;
Les deux GRANT
Les lignes appliquent un ensemble assez standard de droits d'accès à une base de données. La première ligne les applique à toute connexion dans la plage de réseau LAN de 192.168.x.x
. La deuxième ligne les applique à toute connexion dans la plage de réseau LAN de 10.x.x.x
. J'aime faire cela pour couvrir toutes les bases sur les réseaux internes. Les derniers FLUSH PRIVILEGES;
La ligne indique essentiellement à MySQL de recharger les tables de privilèges utilisateur qui permettent à ces autorisations de prendre effet.