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?
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.
Suivez les instructions (les étapes 1 à 3 ne sont pas nécessaires dans Windows):
Trouvez la configuration mysql à éditer:
/etc/mysql/my.cnf (Mysql 5.5)
/etc/mysql/conf.d/mysql.cnf (Mysql 5.6+)
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).
Redémarrez le service mysql exécuté sur la console: service restart mysql
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.
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