Android

Comment autoriser les connexions à distance au serveur de base de données mysql

Comment autoriser les connexions à distance MySQL dans ISPConfig 3 ?

Comment autoriser les connexions à distance MySQL dans ISPConfig 3 ?

Table des matières:

Anonim

Par défaut, le serveur MySQL n'écoute les connexions que depuis localhost, ce qui signifie qu'il n'est accessible que par les applications s'exécutant sur le même hôte.

Cependant, dans certaines situations, il est nécessaire d'accéder au serveur MySQL à distance. Par exemple, lorsque vous souhaitez vous connecter au serveur MySQL distant à partir de votre système local, ou lorsque vous utilisez un déploiement multi-serveur où l'application s'exécute sur une machine différente du serveur de base de données. Une option serait d'accéder au serveur MySQL via SSH Tunnel et une autre est de configurer le serveur MySQL pour accepter les connexions à distance.

Dans ce guide, nous allons parcourir les étapes nécessaires pour autoriser les connexions à distance à un serveur MySQL. Les mêmes instructions s'appliquent à MariaDB.

Configurer le serveur MySQL

La première étape consiste à configurer le serveur MySQL pour écouter une adresse IP spécifique ou toutes les adresses IP de la machine.

Si le serveur MySQL et les clients peuvent communiquer entre eux sur un réseau privé, la meilleure option est de configurer le serveur MySQL pour écouter uniquement sur l'adresse IP privée. Sinon, si vous souhaitez vous connecter au serveur via un réseau public, configurez le serveur MySQL pour écouter toutes les adresses IP de la machine.

Pour ce faire, vous devez modifier le fichier de configuration MySQL et ajouter ou modifier la valeur de l'option bind-address . Vous pouvez définir une seule adresse IP et des plages IP. Si l'adresse est 0.0.0.0 , le serveur MySQL accepte les connexions sur toutes les interfaces IPv4 hôtes. Si vous avez configuré IPv6 sur votre système, utilisez plutôt :: . 0.0.0.0 .

L'emplacement du fichier de configuration MySQL diffère selon la distribution. Dans Ubuntu et Debian, le fichier se trouve dans /etc/mysql/mysql.conf.d/mysqld.cnf , tandis que dans les distributions basées sur Red Hat telles que CentOS, le fichier se trouve dans /etc/my.cnf .

Ouvrez le fichier avec votre éditeur de texte:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Recherchez une ligne commençant par bind-address et définissez sa valeur sur l'adresse IP sur laquelle un serveur MySQL doit écouter.

Par défaut, la valeur est définie sur 127.0.0.1 (écoute uniquement dans localhost).

Dans cet exemple, nous allons configurer le serveur MySQL pour écouter sur toutes les interfaces IPv4 en modifiant la valeur à 0.0.0.0

mysqld.cnf

bind-address = 0.0.0.0 # skip-networking

S'il existe une ligne contenant un skip-networking , supprimez-la ou mettez-la en commentaire en ajoutant # au début de la ligne.

Dans MySQL 8.0 et supérieur, la directive bind-address peut ne pas être présente. Dans ce cas, ajoutez-le sous le section.

Une fois terminé, redémarrez le service MySQL pour que les modifications prennent effet. Seuls les utilisateurs root ou root disposant des privilèges sudo peuvent redémarrer les services.

Pour redémarrer le service MySQL sur Debian ou Ubuntu, tapez:

sudo systemctl restart mysql

Sur les distributions basées sur RedHat comme CentOS pour redémarrer l'exécution du service:

sudo systemctl restart mysqld

Accorder l'accès à un utilisateur à partir d'une machine distante

L'étape suivante consiste à autoriser l'accès à la base de données à l'utilisateur distant.

Connectez-vous au serveur MySQL en tant qu'utilisateur root en tapant:

sudo mysql

mysql -uroot -p

Depuis l'intérieur du shell MySQL, utilisez l'instruction GRANT pour accorder l'accès à l'utilisateur distant.

GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';

Où:

  • database_name est le nom de la base de données à laquelle l'utilisateur se connectera. user_name est le nom de l'utilisateur MySQL. ip_address est l'adresse IP à partir de laquelle l'utilisateur se connectera. Utilisez % pour permettre à l'utilisateur de se connecter à partir de n'importe quelle adresse IP. user_password est le mot de passe utilisateur.

Par exemple, pour accorder l'accès à un my_passwd de base de données à un utilisateur nommé foo avec le mot de passe my_passwd partir d'une machine client avec IP 10.8.0.5 , vous devez exécuter:

GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';

Configuration du pare-feu

La dernière étape consiste à configurer votre pare-feu pour autoriser le trafic sur le port 3306 (port par défaut MySQL) à partir des machines distantes.

Iptables

sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT

Autoriser l'accès à partir d'une adresse IP spécifique:

sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT

UFW

UFW est l'outil de pare-feu par défaut dans Ubuntu. Pour autoriser l'accès à partir de n'importe quelle adresse IP sur Internet (très non sécurisé), exécutez:

sudo ufw allow 3306/tcp

Autoriser l'accès à partir d'une adresse IP spécifique:

sudo ufw allow from 10.8.0.5 to any port 3306

Pare-feuD

FirewallD est l'outil de gestion de pare-feu par défaut dans CentOS. Pour autoriser l'accès à partir de n'importe quelle adresse IP sur Internet (très non sécurisé), tapez:

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp sudo firewall-cmd --reload

Pour autoriser l'accès à partir d'une adresse IP spécifique sur un port spécifique, vous pouvez soit créer une nouvelle zone FirewallD, soit utiliser une règle riche. Eh bien, créez une nouvelle zone nommée mysqlzone :

sudo firewall-cmd --new-zone=mysqlzone --permanent sudo firewall-cmd --reload sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32 sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp sudo firewall-cmd --reload

Vérification des modifications

Pour vérifier que l'utilisateur distant peut se connecter au serveur MySQL, exécutez la commande suivante:

mysql -u user_name -h mysql_server_ip -p

user_name est le nom de l'utilisateur mysql_server_ip vous avez accordé l'accès et mysql_server_ip est l'adresse IP de l'hôte sur lequel le serveur MySQL s'exécute.

Si tout est correctement configuré, vous pourrez vous connecter au serveur MySQL distant.

ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"

L'erreur ci-dessous indique que l'utilisateur auquel vous essayez de vous connecter n'a pas les droits d'accès au serveur MySQL distant.

"ERROR 1130 (HY000): Host '10.8.0.5' is not allowed to connect to this MySQL server"

Conclusion

MySQL, le serveur de base de données open source le plus populaire par défaut, n'écoute les connexions entrantes que sur localhost.

Pour autoriser les connexions à distance à un serveur MySQL, vous devez effectuer les étapes suivantes:

  1. Configurez le serveur MySQL pour écouter sur tout ou une interface spécifique. Accordez un accès à l'utilisateur distant. Ouvrez le port MySQL dans votre pare-feu.
mysql mariadb