J'ai installé le serveur MySQL sur une machine Ubuntu distante. L' root
utilisateur est défini dans le mysql.user
tableau de cette manière:
mysql> SELECT host, user, password FROM user WHERE user = 'root';
+------------------+------+-------------------------------------------+
| host | user | password |
+------------------+------+-------------------------------------------+
| localhost | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ip-10-48-110-188 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| 127.0.0.1 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| ::1 | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+
Je peux accéder avec l'utilisateur à root
partir de la même interface de ligne de commande de machine distante en utilisant le mysql
client standard . Maintenant, je veux autoriser l'accès root à partir de chaque hôte sur Internet , j'ai donc essayé d'ajouter la ligne suivante (c'est une copie exacte de la première ligne du vidage précédent, à l'exception de la host
colonne):
mysql> SELECT host, user, password FROM user WHERE host = '%';
+------------------+------+-------------------------------------------+
| host | user | password |
+------------------+------+-------------------------------------------+
| % | root | *xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
+------------------+------+-------------------------------------------+
Mais mon client sur mon PC personnel continue de me dire (j'ai obscurci l'adresse IP du serveur):
Erreur SQL (2003): impossible de se connecter au serveur MySQL sur '46 .xxx '(10061)
Je ne peux pas dire s'il s'agit d'une erreur d'authentification ou d'une erreur réseau. Sur le pare-feu du serveur, j'ai activé le port 3306 / TCP pour 0.0.0.0/0 , et cela me convient ...
la source
bind-address
dans my.cnfRéponses:
Il y a deux étapes dans ce processus:
a) Accorder des privilèges. En tant qu'utilisateur root, exécutez ce remplacement
'password'
par votre mot de passe root actuel:b) se lier à toutes les adresses:
Le moyen le plus simple est de commenter la ligne de votre
my.cnf
fichier:et redémarrez mysql
Par défaut, il se lie uniquement à localhost, mais si vous commentez la ligne, il se lie à toutes les interfaces qu'il trouve. Commenter la ligne équivaut à
bind-address=*
.Pour vérifier où le service mysql s'est lié, exécutez en tant que root:
Mise à jour pour Ubuntu 16:
Le fichier de configuration est (maintenant)
(au moins sur Ubuntu 16 standard)
la source
USE mysql; UPDATE user SET Grant_priv='Y' WHERE user='root';
Exécutez la requête suivante:
use mysql;
update user set host='%' where host='localhost'
REMARQUE: non recommandé pour une utilisation en production.
la source
update mysql.user set host='%' where user='root'
quelquefois
devrait être
la source
MYSQL 8.0 - ouvre le client de ligne de commande mysql
GRANT ALL PRIVILEGES ON *. * TO 'root' @ 'localhost';
utilisez mysql
UPDATE mysql.user SET host = '%' WHERE user = 'root';
Redémarrez le service mysql
la source
MariaDB fonctionnant sur Raspbian - le fichier contenant l'adresse de liaison est difficile à identifier. MariaDB a des informations pas très utiles sur le sujet.
j'ai utilisé
pour localiser où se trouve la fichue chose.
J'ai également dû définir les privilèges et les hôtes dans le mysql comme tout le monde l'a souligné.
Et j'ai également eu du plaisir à ouvrir le port 3306 pour les connexions à distance à mon Raspberry Pi - enfin utilisé iptables-persistent .
Tout fonctionne très bien maintenant.
la source
si vous avez plusieurs réseaux attachés à votre système d'exploitation, vous devez en spécifier un dans les bind-addres du fichier my.conf. un exemple:
cette adresse IP provient d'une configuration ethX.
la source
Dans mon cas, le paramètre "bind-address" était le problème. Commenter ce paramètre
my.cnf
n'a pas aidé, car dans mon cas, mysql a défini la valeur par défaut sur 127.0.0.1 pour une raison quelconque.Pour vérifier quel paramètre MySql utilise actuellement, ouvrez la ligne de commande sur votre boîte locale:
Lisez le paramètre actuel:
Vous devriez voir 0.0.0.0 ici si vous souhaitez autoriser l'accès de tous les hôtes. Si ce n'est pas le cas, modifiez votre
/etc/mysql/my.cnf
adresse de liaison et définissez-la dans la section [mysqld]:Enfin, redémarrez votre serveur MySql pour récupérer le nouveau paramètre:
Réessayez et vérifiez si le nouveau paramètre a été sélectionné.
la source
mysql_update
est ce dont vous avez besoin.Je ne sais pas pourquoi quiconque suivrait les moyens les plus complexes de corriger ce problème, lorsque MySql a gracieusement construit un outil qui le fait déjà ...
la source