Activer l'accès à distance (Grant) Accueil / Tutoriels / Mysql / Activer l'accès à distance (Grant) Si vous essayez de vous connecter à votre serveur mysql à partir d'une machine distante et que vous rencontrez une erreur comme ci-dessous, cet article est pour vous.
ERREUR 1130 (HY000): l'hôte '1.2.3.4' n'est pas autorisé à se connecter à ce serveur MySQL
Changer la configuration de mysql
Commencez par éditer le fichier de configuration mysql
vim /etc/mysql/my.cnf
Mettez en commentaire 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
Modifier le privilège GRANT
Vous serez peut-être surpris de voir, même après le changement ci-dessus, que vous n'obtenez pas d'accès à distance ou que vous n'avez pas accès à 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 localement au serveur mysql. Il faut donc 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 à partir d'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 la commande ci-dessus plusieurs fois pour accorder l'accès à partir de plusieurs adresses IP.
Vous pouvez également spécifier un USERNAME
& séparé PASSWORD
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 également exécuter:
mysql> FLUSH PRIVILEGES;
Tester la connexion
Depuis le terminal / la ligne de commande:
mysql -h HOST -u USERNAME -pPASSWORD
Si vous obtenez un shell mysql, n'oubliez pas d'exécuter les bases de données show; pour vérifier si vous disposez des droits appropriés sur les machines distantes.
Astuce bonus: révoquer l'accès
Si vous accordez accidentellement l'accès à un utilisateur, mieux vaut avoir l'option de révocation à portée de main.
Les éléments suivants révoqueront toutes les options de 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, ça va. C'est aussi bon que pas de privilège du tout. Je ne sais pas s'il peut être révoqué.