web-dev-qa-db-fra.com

Activer l'accès à distance au serveur MySQL (Linux)

Comment puis-je activer l'accès à distance à mon serveur MySQL Debian?

3
Petko

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.

SOURCE

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 et PASSWORD 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 et PASSWORD 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é.

2
Simon Hayter