179 votes

Mysql ajoutant un utilisateur pour l'accès à distance

J'ai créé un utilisateur user@'%' avec password 'password . Mais je ne peux pas me connecter avec :

mysql_connect('localhost:3306', 'user', 'password');

Lorsque j'ai créé l'utilisateur user@'localhost' j'ai pu me connecter. Pourquoi ? Est-ce que '%' ne signifie pas de n'importe quel hôte ?

459voto

apesa Points 3725

Pour vous connecter à distance, vous devez faire en sorte que MySQL lie le port 3306 à l'adresse IP de votre machine dans my.cnf. Ensuite, vous devez avoir créé l'utilisateur à la fois dans localhost et dans le wildcard '%' et accorder des permissions sur toutes les bases de données comme suit . Voir ci-dessous :

my.cnf (my.ini sous Windows)

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

Ensuite :

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

Ensuite :

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

Selon votre système d'exploitation, vous devrez peut-être ouvrir le port 3306 pour autoriser les connexions à distance.

26voto

MSS Points 1767

Suivez les instructions (les étapes 1 à 3 ne sont pas nécessaires sous Windows) :

  1. Trouvez la configuration mysql à modifier :

/etc/mysql/my.cnf (Mysql 5.5)

/etc/mysql/conf.d/mysql.cnf (Mysql 5.6+)

  1. Trouvez bind-address=127.0.0.1 dans le fichier de configuration changer bind-address=0.0.0.0 (vous pouvez définir l'adresse de liaison à l'une des IP de votre interface ou comme moi utiliser 0.0.0.0)

  2. Redémarrez le service mysql exécuté sur la console : service mysql restart

  3. Créez un utilisateur avec un mot de passe sûr pour la connexion à distance. Pour ce faire, exécutez la commande suivante dans mysql (si vous êtes un utilisateur linux, pour accéder à la console mysql, exécutez la commande suivante mysql et si vous définissez un mot de passe pour l'exécution de Root mysql -p ) :

    GRANT ALL PRIVILEGES ON . TO 'remote'@'%' IDENTIFIED BY 'safe_password' WITH GRANT OPTION;

Maintenant vous devriez avoir un utilisateur avec le nom de user et le mot de passe d safe_password avec possibilité de connexion à distance.

14voto

caramba Points 2349

Pour quelle BD est l'utilisateur ? regardez cet exemple

mysql> create database databasename;
Query OK, 1 row affected (0.00 sec)
mysql> grant all on databasename.* to cmsuser@localhost identified by 'password';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

Pour revenir à votre question, l'opérateur "%" signifie tous les ordinateurs de votre réseau.

comme l'indique aspesa, je suis également certain que vous devez créer ou mettre à jour un utilisateur. recherchez tous vos utilisateurs mysql :

SELECT user,password,host FROM user;

dès que vous aurez configuré votre utilisateur, vous devriez pouvoir vous connecter comme ceci :

mysql -h localhost -u cmsuser -p

J'espère que cela vous aidera

2voto

mechbaral Points 95

J'ai utilisé un utilisateur existant qui avait un mot de passe utilisant mysql_navtive_password.

CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED WITH mysql_native_password BY 'password';

Plutôt que de

CREATE USER 'sammy'@'remote_server_ip' IDENTIFIED BY 'password';

n'a donc pas pu se connecter. La suppression de l'ancien et la création d'un nouveau sans mysql_native_password ont fait l'affaire.

0voto

Ven Points 24

Une autre solution consiste à utiliser MySql Workbench. Allez dans Administration -> Utilisateurs et privilèges -> et remplacez 'localhost' par '%' dans l'attribut 'Limit to Host Matching' (From host) pour les utilisateurs auxquels vous voulez donner un accès à distance ou créez un nouvel utilisateur (bouton Add account) avec '%' dans cet attribut au lieu de localhost.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X