3 votes

Comment ai-je pu me connecter avec succès sous un compte d'utilisateur inexistant ?

J'essaie de mettre en place ownCloud dans un laboratoire d'essai. J'ai réussi à créer un utilisateur 'owncloud' (ce qui est très bien). Le compte a un mot de passe vide (je ne sais pas trop comment cela s'est produit), j'essaie donc d'en définir un :

MySQL and 'No Current User' after logging in as a user

Pour des raisons que je ne comprends pas (je ne suis pas un gourou des bases de données), la base de données me dit qu'il n'y a pas d'utilisateur actuel bien que je me sois connecté en utilisant le compte de test 'owncloud'.

Comment faire pour que MySQL se comporte comme prévu ?

EDIT : Je me suis trompé à propos de l'utilisateur "owncloud". Il n'a pas été créé lors de l'installation de ownCloud (je pense que j'ai confondu le nom du serveur ('owncloud') avec l'utilisateur ('owncloud') parce que je m'attendais à ce qu'il soit là).

Nouvelle question : comment ai-je pu me connecter avec succès sous un compte d'utilisateur inexistant ?

3voto

Aaron Orr Points 11

Le résultat suivant de la CURRENT_USER()

mysql> SELECT CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
| @localhost     |
+----------------+
1 row in set (0.00 sec)

dit que vous êtes qui utilise actuellement la base de données en tant que utilisateur anonyme . Une base de données MySQL fraîchement installée contient les entrées utilisateur suivantes dans sa table mysql.user :

mysql> SELECT user,host,password from mysql.user;
+------------------+-----------------+-------------------------------------------+
| user             | host            | password                                  |
+------------------+-----------------+-------------------------------------------+
| root             | localhost       | *........................................ |
| root             | xxxx            | *........................................ |
| root             | 127.0.0.1       | *........................................ |
| root             | ::1             | *........................................ |
|                  | localhost       |                                           |
|                  | xxxxx           |                                           |
| debian-sys-maint | localhost       | *........................................ |
+------------------+-----------------+-------------------------------------------+
7 rows in set (0.00 sec)

Il existe des comptes root (sécurisés par un mot de passe) et deux comptes anonymes permettant une connexion à partir de localhost (l'entrée xxxxx est le nom d'hôte de la machine).

S'il y a une entrée dans la table des utilisateurs sans nom d'utilisateur ni mot de passe, la règle suivante s'applique :

Si la valeur Utilisateur est vide, elle correspond à n'importe quel nom d'utilisateur. Si l'utilisateur qui correspond à une connexion entrante a un nom d'utilisateur vide, l'utilisateur est considéré comme un utilisateur anonyme sans nom, et non comme un avec le nom spécifié par le client. Cela signifie que un nom d'utilisateur vierge est utilisé pour tous les contrôles d'accès ultérieurs pendant la durée de la connexion (c'est-à-dire pendant la phase 2). pendant la durée de la connexion (c'est-à-dire pendant la phase 2).

(voir le MySQL docs, "6.2.4. Contrôle d'accès, étape 1 : vérification de la connexion" )

En général, après avoir installé MySQL, vous devriez prendre connaissance de la partie suivante de la documentation : " 2.11.2. Sécurisation des comptes MySQL initiaux ".

0voto

Maythux Points 77506

Vous avez une erreur dans la commande set password. Vous devez spécifier set password pour qui La syntaxe correcte est la suivante

SET PASSWORD FOR 'user-name-here'@'hostname-name-here' = PASSWORD('new-password-here');

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X