Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment accéder à un service Web de base de données MySQL sur LAN ?

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.