web-dev-qa-db-fra.com

Mysql ajout d'un utilisateur pour l'accès à distance

J'ai créé l'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? "%" Ne signifie-t-il d'aucun hôte?

123
user2333586

Pour vous connecter à distance, vous devez avoir le port de liaison MySQL 3306 avec l'adresse IP de votre ordinateur dans my.cnf. Ensuite, vous devez avoir créé l'utilisateur dans les caractères génériques localhost et '%' et accorder des autorisations sur toutes les bases de données en tant que telles . 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.

327
apesa

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

  1. Trouvez la configuration mysql à éditer:

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

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

  2. Trouvez bind-address=127.0.0.1 dans la modification du fichier de configuration bind-address=0.0.0.0 (vous pouvez définir l'adresse de liaison sur l'un de vos interfaces ips ou, comme moi, utiliser 0.0.0.0).

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

  4. Créez un utilisateur avec un mot de passe sécurisé pour la connexion à distance. Pour ce faire, exécutez la commande suivante dans mysql (si vous êtes un utilisateur linux pour atteindre la console mysql, exécutez mysql et si vous définissez un mot de passe pour root, exécutez mysql -p):

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

Vous devriez maintenant avoir un utilisateur avec le nom user et le mot de passe safe_password avec la capacité de connexion à distance.

15
MSS

pour quelle base de données est l'utilisateur? regarde 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 à la question, l'opérateur "%" désigne tous les ordinateurs de votre réseau.

comme aspesa montre que je suis aussi sûr 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 avez configuré votre utilisateur, vous devriez pouvoir vous connecter comme ceci:

mysql -h localhost -u gmeier -p

j'espère que ça aide

11
caramba