Mysql
 sql >> Base de données >  >> RDS >> Mysql

Connexions à distance Mysql Ubuntu

Pour exposer MySQL à autre chose que localhost, vous devrez avoir la ligne suivante

Pour mysql version 5.6 et inférieure

décommenté dans /etc/mysql/my.cnf et attribué à l'adresse IP de vos ordinateurs et non au bouclage

Pour mysql version 5.7 et supérieure

décommenté dans /etc/mysql/mysql.conf.d/mysqld.cnf et attribué à l'adresse IP de vos ordinateurs et non au bouclage

#Replace xxx with your IP Address 
bind-address        = xxx.xxx.xxx.xxx

Ou ajoutez une bind-address = 0.0.0.0 si vous ne voulez pas spécifier l'IP

Ensuite, arrêtez et redémarrez MySQL avec la nouvelle entrée my.cnf. Une fois en cours d'exécution, accédez au terminal et entrez la commande suivante.

lsof -i -P | grep :3306

Cela devrait revenir quelque chose comme ça avec votre adresse IP réelle dans les xxx

mysqld  1046  mysql  10u  IPv4  5203  0t0  TCP  xxx.xxx.xxx.xxx:3306 (LISTEN)

Si l'instruction ci-dessus revient correctement, vous pourrez alors accepter des utilisateurs distants. Cependant, pour qu'un utilisateur distant se connecte avec les privilèges corrects, vous devez avoir créé cet utilisateur à la fois dans l'hôte local et '%' comme dans.

CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';

alors,

GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';

et enfin,

FLUSH PRIVILEGES; 
EXIT;

Si vous n'avez pas créé le même utilisateur que ci-dessus, lorsque vous vous connectez localement, vous pouvez hériter des privilèges de base localhost et avoir des problèmes d'accès. Si vous souhaitez restreindre l'accès de myuser, vous devez lire la syntaxe de l'instruction GRANT ICI Si vous parvenez à tout cela et que vous rencontrez toujours des problèmes, publiez une sortie d'erreur supplémentaire et les lignes appropriées my.cnf.

REMARQUE :Si lsof ne revient pas ou n'est pas trouvé, vous pouvez l'installer ICI en fonction de votre distribution Linux. Vous n'avez pas besoin de lsof pour faire fonctionner les choses, mais c'est extrêmement pratique lorsque les choses ne fonctionnent pas comme prévu.

MISE À JOUR :Si même après avoir ajouté/modifié le bind-address dans my.cnf n'a pas fonctionné, alors allez le changer à l'endroit où il a été initialement déclaré :

/etc/mysql/mariadb.conf.d/50-server.cnf