Comment puis-je activer l'accès à distance à mon serveur MySQL Debian?
Vous devez uniquement autoriser un accès IP distant distant à votre serveur MySQL local, car l'activation de toutes les adresses IP constitue un risque pour la sécurité. Utilisez le guide ci-dessous comme référence pour la procédure à suivre pour activer l'accès à distance.
Changer la configuration de mysql
Commencez par éditer le fichier de configuration mysql
vim /etc/mysql/my.cnf
Commentez les lignes suivantes.
#bind-address = 127.0.0.1 #skip-networking
Si vous ne trouvez pas de ligne de saut de réseau, ajoutez-la et commentez-la.
Redémarrez le serveur mysql.
~ /etc/init.d/mysql restart
Changer le privilège GRANT
Vous serez peut-être surpris de voir que même après la modification ci-dessus, vous n'obtenez pas d'accès à distance ni d'accès mais ne pouvez pas accéder à toutes les bases de données.
Par défaut, le nom d'utilisateur et le mot de passe mysql que vous utilisez sont autorisés à accéder à mysql-server localement. Donc besoin de mettre à jour le privilège.
Exécutez une commande comme ci-dessous pour accéder à partir de toutes les machines. (Remplacez
USERNAME
etPASSWORD
par vos informations d'identification.)mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Exécutez une commande comme ci-dessous pour donner accès à une adresse IP spécifique. (Remplacez
USERNAME
etPASSWORD
par vos informations d'identification.)mysql> GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'1.2.3.4' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Vous pouvez remplacer 1.2.3.4 par votre IP. Vous pouvez exécuter plusieurs fois la commande ci-dessus pour DONNER un accès à partir de plusieurs adresses IP.
Vous pouvez également spécifier un
USERNAME
&PASSWORD
distinct pour l'accès à distance.Vous pouvez vérifier le résultat final en:
SELECT * from information_schema.user_privileges where grantee like "'USERNAME'%";
Enfin, vous devrez peut-être aussi exécuter:
mysql> FLUSH PRIVILEGES;
Test de connexion
Depuis le terminal/ligne de commande:
mysql -h Host -u USERNAME -pPASSWORD
Si vous avez un shell mysql, n’oubliez pas d’exécuter des bases de données show; pour vérifier si vous avez les droits appropriés des machines distantes.
Bonus-Astuce: Révoquer l'accès
Si vous accordez accidentellement l'accès à un utilisateur, il est préférable d'avoir l'option de révocation à portée de main.
Ce qui suit révoquera toutes les options pour USERNAME de toutes les machines:
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'%'; Following will revoke all options for USERNAME from particular IP: mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'USERNAME'@'1.2.3.4'; Its better to check information_schema.user_privileges table after running REVOKE command.
Si vous voyez le privilège USAGE après avoir exécuté la commande REVOKE, tout va bien. C'est comme ne pas avoir de privilège du tout. Je ne sais pas si cela peut être révoqué.