Je connais cette commande:
GRANT ALL PRIVILEGES
ON database.*
TO 'user'@'yourremotehost'
IDENTIFIED BY 'newpassword';
Mais cela me permet seulement d'accorder une adresse IP particulière pour accéder à cette base de données MySQL distante. Et si je le souhaite pour que tout hôte distant puisse accéder à cette base de données MySQL? Comment je fais ça? Fondamentalement, je rends cette base de données publique afin que tout le monde puisse y accéder.
Réponses:
% est un caractère générique - vous pouvez également faire
'%.domain.com'
ou'%.123.123.123'
et des choses comme ça si vous en avez besoin.la source
-h my_machine_name
paramètre. Cela incite le client à vous identifier'user'@my_machine_name.example.com
plutôt que'user'@localhost
. De cette façon, vous n'avez pas besoin de créer et de gérer des comptes doubles et des autorisations pour les deuxlocalhost
et l'accès au réseau. Et, bien sûr, être sûrmysqld
est lié à0.0.0.0
contre127.0.0.1
.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.
Changer la configuration de mysql
Commencez par éditer le fichier de configuration mysql
Mettez en commentaire les lignes suivantes.
Si vous ne trouvez pas de ligne de saut de réseau, ajoutez-la et commentez-la.
Redémarrez le serveur mysql.
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
etPASSWORD
par vos informations d'identification.)Exécutez une commande comme ci-dessous pour donner accès à partir d'une adresse IP spécifique. (Remplacez
USERNAME
etPASSWORD
par vos informations d'identification.)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:
Enfin, vous devrez peut-être également exécuter:
Tester la connexion
Depuis le terminal / la ligne de commande:
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:
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é.
la source
/etc/mysql/mysql.conf.d/mysqld.cnf
fichier au lieu de/etc/mysql/my.cnf
commenter labind-address
pièce. La#skip-networking
ligne est manquante et il ne devrait y avoir aucun effet à ajouter et à commenter la ligne./etc/mysql/mariadb.conf.d/50-server.cnf
3306
que vousEn supposant que l'étape ci-dessus est terminée et que le port MySql 3306 est libre d'accès à distance; N'oubliez pas de lier l'adresse IP publique dans le fichier de configuration mysql.
Par exemple sur mon serveur Ubuntu:
Dans le fichier, recherchez le bloc de section [mysqld] et ajoutez la nouvelle adresse de liaison, dans cet exemple, c'est 192.168.0.116. Cela ressemblerait à quelque chose comme ça
vous pouvez supprimer la liaison localhost (127.0.0.1) si vous le souhaitez, mais vous devez ensuite donner spécifiquement une adresse IP pour accéder au serveur sur la machine locale.
Ensuite, la dernière étape consiste à redémarrer le serveur MySql (sur ubuntu)
ou
#/etc/init.d/mysql restart
pour d'autres systèmesLa base de données MySQL est désormais accessible à distance par:
la source
/etc/init.d/mysql reload
devrait suffirebind-address
directive détermine l'adresse IP sur laquelle le serveur mysql écoute; pas les adresses IP à partir desquelles le serveur accepte les connexions.bind-address
J'obtiens une erreur lorsque je commente l'adresse localhost ou remotehost.mysql.serviceJob for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
Pour tous ceux qui ont tâté avec ça, voici comment j'ai pu accorder les privilèges, j'espère que cela aide quelqu'un
Comme indiqué, il
%
s'agit d'un caractère générique et cela permettra à n'importe quelle adresse IP de se connecter à votre base de données. L'hypothèse que je fais ici est que lorsque vous vous connecterez, vous aurez un utilisateur nomméroot
(qui est le nom par défaut). Saisissez le mot de passe root et vous êtes prêt à partir. Notez que je n'ai pas de guillemets simples ('
) autour de la racine de l'utilisateur.la source
Des modifications du fichier de configuration sont nécessaires pour activer les connexions via localhost.
Pour vous connecter via des adresses IP distantes, connectez-vous en tant qu'utilisateur "root" et exécutez les requêtes ci-dessous dans mysql.
Cela créera un nouvel utilisateur accessible sur l'hôte local ainsi que sur les adresses IP distantes.
Commentez également la ligne ci-dessous de votre fichier my.cnf situé dans /etc/mysql/my.cnf
Redémarrez votre mysql en utilisant
Vous devriez maintenant pouvoir vous connecter à distance à votre mysql.
la source
Utilisez cette commande:
Ensuite:
Puis commentez la ligne ci-dessous dans le fichier "/etc/mysql/mysql.conf.d/mysqld.cnf" (est requis!):
Travaille pour moi!
la source
your-password-does-not-satisfy-the-current-policy-requirements
Pour pouvoir vous connecter avec votre utilisateur à partir de n'importe quelle adresse IP, procédez comme suit:
Autorisez le serveur mysql à accepter les connexions à distance. Pour ce fichier mysqld.conf ouvert:
Recherchez la ligne commençant par "bind-address" et définissez sa valeur sur 0.0.0.0
et enfin enregistrer le fichier.
Remarque: Si vous exécutez MySQL 8+, la
bind-address
directive ne sera pas dans lemysqld.cnf
fichier par défaut. Dans ce cas, ajoutez la directive au bas du fichier/etc/mysql/mysql.conf.d/mysqld.cnf
.Redémarrez maintenant le serveur mysql, avec
systemd
ou utilisez l'ancienneservice
commande. Cela dépend de votre système d'exploitation:Enfin, le serveur mysql est désormais capable d'accepter les connexions à distance.
Nous devons maintenant créer un utilisateur et lui accorder une autorisation, afin que nous puissions nous connecter à distance avec cet utilisateur.
Connectez-vous à la base de données MySQL en tant que root ou à tout autre utilisateur disposant des privilèges root.
créez maintenant l'utilisateur souhaité à la fois dans l'hôte local et dans le caractère générique '%' et accordez des autorisations sur toutes les bases de données en tant que telles.
Ensuite,
Et enfin n'oubliez pas de vider les privilèges
Remarque: Si vous avez configuré un pare-feu sur votre serveur de base de données, vous devrez également ouvrir le port
3306
par défaut de MySQL pour autoriser le trafic vers MySQL.J'espère que cela t'aides ;)
la source
Exécutez ce qui suit:
Ensuite, essayez une connexion à partir de l'adresse IP que vous avez spécifiée:
Vous devriez pouvoir vous connecter.
la source
Vous pouvez résoudre le problème de MariaDB via cette commande :
Remarque:
%
est un caractère générique. Dans ce cas, il fait référence à toutes les adresses IP.la source
la source
Pour accéder à distance à la base de données du serveur Mysql 8:
la source
Si vous exécutez une instance EC2, n'oubliez pas d'ajouter les règles entrantes dans le groupe de sécurité avec MYSQL / Aurura.
la source
Modifier le fichier:
/etc/mysql/percona-server.cnf
Ajoutez le code ci-dessous dans le fichier.
[mysqld] bind-address = 0.0.0.0
Créez un utilisateur pour l'accès à distance.
Tous les serveurs Linux fonctionnent,
Pour MSWin c: \ Find insatallation location \ file path
la source
Créez simplement l'utilisateur dans une base de données comme
GRANT ALL PRIVILEGES ON <database_name>.* TO '<username>'@'%' IDENTIFIED BY '<password>'
Ensuite aller à
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
et changez la lignebind-address = 127.0.0.1
enbind-address = 0.0.0.0
Après cela, vous pouvez vous connecter à cette base de données à partir de n'importe quelle adresse IP.
la source
Ouvrez votre
mysql console
et exécutez la commande suivante (entrez le nom, le nom d'utilisateur et le mot de passe de votre base de données):Ensuite, exécutez:
Ouvrez la ligne de commande et ouvrez le fichier à l'
/etc/mysql/mysql.conf.d/mysqld.cnf
aide de n'importe quel éditeur avecroot privileges
.Par exemple:
Commentez ensuite la ligne ci-dessous:
Redémarrez mysql pour refléter les changements en utilisant la commande:
Prendre plaisir ;)
la source
Vous devez changer le fichier de configuration mysql:
Commencez par éditer le fichier de configuration mysql
ajouter:
la source
Dans les panneaux de sites Web comme cPanel, vous pouvez ajouter un seul
%
(signe de pourcentage) dans les noms d'hôtes autorisés pour accéder à votre base de données MySQL.En ajoutant un seul,
%
vous pouvez accéder à votre base de données à partir de n'importe quelle adresse IP ou site Web, même à partir d'applications de bureau.la source
Par exemple dans mon CentOS
commenter les lignes suivantes
puis
la source
Si vous souhaitez accorder l'accès à distance à votre base de données à partir de n'importe quelle adresse IP, exécutez la commande mysql et exécutez ensuite la commande suivante.
la source
ce qui a fonctionné sur Ubuntu est d'accorder tous les privilèges à l'utilisateur:
et définir l'adresse de liaison dans
/etc/mysql/mysql.conf.d/mysqld.cnf
:puis redémarrage du démon mysql:
la source
Vous pouvez désactiver toute la sécurité en éditant /etc/my.cnf:
la source