MySQL : changer le propriétaire d'une base

La question :

Bonjour,

J'ai une base 'toto' qui appartient à l'utilisateur 'eric'. Pour
diverses raisons, je souhaite changer le propriétaire de cette base, ou
ajouter un utilisateur autorisé à y accéder.

L'objectif est que le nouvel utilisateur ne voit que sa base.

Je sais créer un nouvel utilisateur sous root, en lui donnant les
privilèges qui vont bien, mais je ne parviens pas à l'associer à une ou
plusieurs bases existantes.

Ça doit être bête comme chou à réaliser, et je m'en voudrai de ne pas
avoir trouvé tout seul quand j'aurai la réponse, mais là, je tourne en
rond depuis des heures.

J'utilise phpMyAdmin, je saurais faire aussi en ligne de commande.

Merci par avance pour vos lumières.

--
Eric

Poser votre question sur le forum Programmation

Les 12 réponses :

Eric Demeester <d> écrivait :


J'ai une base 'toto' qui appartient à l'utilisateur 'eric'.


AMHA, on ne peut pas dire qu'une base « appartient » à un utilisateur,
mais plutôt qu'un utilisateur détient les droits nécessaires
(privilèges) pour utiliser et/ou modifier une base de données.
En son temps, j'avais commis un petit topo sur les utilisateurs MySQL
http://fluxbb.fr/aide/doku.php?id=mysql_gestion_utilisateurs


Pour diverses raisons, je souhaite changer le propriétaire de cette base, ou
ajouter un utilisateur autorisé à y accéder.


On va donc créer un nouvel utilisateur qui n'aura le droit d'accéder
qu'à une base de données (On pourrait même limiter à une ou plusieurs
tables).
Pour ce faire, j'utilise PhpMyAdmin (Chez moi en version 4.0.4) en étant
connecté en tant que root.
- Onglet Utilisateur, Ajouter un utilisateur
Nom : tartempion
Client : localhost
Mot de passe : deux fois

et ne rien cocher d'autre : AUCUN privilège global

- Bouton Exécuter
- Recharger les privilèges (Par acquit de conscience)

Utilisateur tartempion -> Changer les privilèges
- AUCUN privilège global
- Privilèges spécifiques à une base de données
-- Choisir le base dans le menu déroulant
-- Il y a rafraîchissement automatique de la fenêtre qui devient :
Changer les privilèges: Utilisateur 'tartempion'@'localhost' - Base de
données xxxx
--- À ce moment choisir les privilèges spécifiques pour cet utilisateur
selon qu'il doit accéder (SELECT) et/ou modifier (INSERT, UPDATE,
DELETE) les données.
--- Choisir, si nécessaire, les privilèges de modification de la
structure.
--- Bouton Exécuter

Quitter PhpMyAdmin.

Se connecter à PhpMyAdmin en tant que utilisateur tartempion
nouvellement créé pour vérifier qu'il a bien accès uniquement à la base
définie.

--
Ce n'est pas parce que l'erreur se propage qu'elle devient vérité. Gandhi
Technologie aéronautique : http://aviatechno.net
Concorde dans la presse de 1965 à 2003 : http://le.pointu.free.fr

Otomatic (Sun, 23 Jun 2013 16:58:39 +0200 - fr.comp.applications.sgbd) :

Bonsoir,


AMHA, on ne peut pas dire qu'une base « appartient » à un utilisateur,
mais plutôt qu'un utilisateur détient les droits nécessaires
(privilèges) pour utiliser et/ou modifier une base de données.


Toutafé, je m'étais mal exprimé.


On va donc créer un nouvel utilisateur qui n'aura le droit d'accéder
qu'à une base de données (On pourrait même limiter à une ou plusieurs
tables).


Jusque là, j'y étais arrivé.


Utilisateur tartempion -> Changer les privilèges


C'est ici que je n'avais pas les yeux en face des trous :


- AUCUN privilège global


Certes.


- Privilèges spécifiques à une base de données
-- Choisir le base dans le menu déroulant


Je n'avais pas vu le menu déroulant


--- À ce moment choisir les privilèges spécifiques pour cet utilisateur
selon qu'il doit accéder (SELECT) et/ou modifier (INSERT, UPDATE,
DELETE) les données.


Après, je suis revenu en terrain connu. C'était la maudite liste
déroulante permettant de sélectionner les bases de données que j'avais
zappée.


Se connecter à PhpMyAdmin en tant que utilisateur tartempion
nouvellement créé pour vérifier qu'il a bien accès uniquement à la base
définie.


En fait, Tartempion a accès à 4 bases, et quand il se connecte sur le
phpMyAdmin avec son identifiant et son mot de passe, il ne voit bien que
ses bases à lui qu'il a.

Donc tout baigne, et je te dois une bière

Question subsidiaire, est-il possible que les utilisateurs non autorisés
ne voient pas les bases test et information_schema ?

Pourtant, quand je regarde les utilisateurs autorisés à les manipuler,
en gros il n'y a que root et moi.

(je sens que j'abuse.)

--
Eric

Eric Demeester <d> écrivait :


Question subsidiaire, est-il possible que les utilisateurs non autorisés
ne voient pas les bases test et information_schema ?

Pourtant, quand je regarde les utilisateurs autorisés à les manipuler,
en gros il n'y a que root et moi.


Je n'ai pas trouvé comment le faire.
Il existe bien une option - vide par défaut - à mettre dans le fichier
config.inc.php :
$cfg['Servers'][$i]['hide_db'] = '';
Pour les informations, voir les commentaires pour cette option dans le
fichier phpmyadmin4.0.4\libraries\config.default.php

J'ai beau mettre :
$cfg['Servers'][$i]['hide_db'] = 'information_schema';

je vois toujours cette base, que je sois connecté "tartempion" ou
"root".
--
Aujourd'hui, l'idéal du progrès est remplacé par l'idéal de l'innovation :
il ne s'agit pas que ce soit mieux, il s'agit seulement que ce soit nouveau,
même si c'est pire qu'avant et cela de toute évidence. Montherlant
Technologie aéronautique - http://aviatechno.net - Les anciens de Vilgénis

Otomatic (Tue, 25 Jun 2013 19:32:41 +0200 - fr.comp.applications.sgbd) :

Bonsoir,


Eric Demeester <d> écrivait :


Question subsidiaire, est-il possible que les utilisateurs non autorisés
ne voient pas les bases test et information_schema ?



Je n'ai pas trouvé comment le faire.


Je me sens moins seul.


J'ai beau mettre :
$cfg['Servers'][$i]['hide_db'] = 'information_schema';
je vois toujours cette base, que je sois connecté "tartempion" ou
"root".


Je suppose que l'accès à ces deux bases est un truc en dur dans
phpMyAdmin, et/ou dans MySQL.

Autant pour la base 'test', je m'en fiche un peu, autant pour la base
'information_schema', c'est a priori plus gênant, parce qu'elle est
quand même critique, puisque définissant le comportementglobal de MySQL
sur le serveur, si j'ai bien tout compris.

En même temps, il y a un truc que je n'ai pas testé par manque de temps,
c'est d'en faire un backup et de tenter de la modifier en tant
qu'utilisateur « Tartempion ».

Si ça se trouve, que ce soit en ligne de commande ou via phpMyAdmin, si
ce n'est pas root qui demande, MySQL va couiner qu'on a pas le droit de
toucher à cette base.

PS : pour la bière, ça tient toujours et mon Reply-To: est valide.
juste prévoir un délai éventuel, j'ai des antispam féroces, mais
peu de de choses partent directement à la poubelle (et dans ce
cas, je ne la vide que toutes les 48h, donc rien n'est perdu)

PPS : ecrire directement à eric_at_demeester_point_org évite bien des
déconvenues.

--
Eric

Eric Demeester <d> écrivait :


Je n'ai pas trouvé comment le faire.


Je me sens moins seul.


J'ai beau mettre :
$cfg['Servers'][$i]['hide_db'] = 'information_schema';
je vois toujours cette base, que je sois connecté "tartempion" ou
"root".


J'ai toujours dit que pour résoudre des « problèmes » informatiques, il
fallait être très curieux, voire inquisiteur ou fouineur !

J'ai donc cherché comment PhpMyAdmin traitait cet élément du tableau
$cfg par une recherche multifichiers dans mon éditeur de texte préféré
depuis des lustres UltraEdit et je suis tombé dans le fichier
phpmyadmin4.0.4\libraries\List_Database.class.php
sur :
foreach ($this->getArrayCopy() as $key => $db) {
if (preg_match('/' . $GLOBALS['cfg']['Server']['hide_db'] . '/', $db))
{
$this->offsetUnset($key);

Ah! preg_match entraîne regex, donc éventuellement syntaxe
particulière...
Qu'à cela ne tienne, j'ai essayé différentes syntaxes et je suis tombé
sur un truc qui semble fonctionner à mettre dans le fichier
config.inc.php :

$cfg['Servers'][$i]['hide_db'] = '^information_schema|test$';

et voilou ! tartempion ne voit plus information_schema

CQFD
--
Les gens que l'on considère comme des fous de travail sont, peut-être,
tout simplement entrain de s'amuser. Einstein

Poser votre question sur le forum Programmation

Questions similaires :

Quelqu'un at-il suggérer une des fonctions de base de données mySQL de répa

Le mercredi 10 Juin 2015 à 14:33 par colindeloffre : Pour résoudre le problème, passez par le lien ou lisez les instructions au bas de la - Recovery Toolbox for MySQL Apportez votre base de données en mode de récupération Vous devez apporter votre base de données. Arrêt dans le cas où c'est encore...

[MYSQL] Quel est le fichier my.ini effectivement chargé ?

Eric Demeester écrivait : C'est vrai. J'ai fait des essais en mettant des fichiers my.ini dans les différentes localisations, avec pour chacun quelques petites différences.(*) L'utilitaire mysql "my_print_defaults.exe" montre bien l'ordre successif des chargements mais...

MySQL passer en UTF-8 ?

J'ai suivi les conseils de : et j'ai donc édité mon fichier " /etc/mysql/my.cnf". en y ajoutant : character_set_database=utf8 character_set_server=utf8 skip-character-set-client-handshake une première fois, et...

Requête MySQL trop lente : comment trouverd'où ça vient ?

Bonjour J'ai une requête SQL très lente sur une machine et j'aimerais savoir pourquoi. Cette requête s'exécute beaucoup plus rapidement (7-8 secondes au lieu d'1-2 minutes) sur une autre machine qui devrait être sensiblement équivalente. La requête est un peu compliquée, je ne la jette pas comme...

fichiers mysql

Bonjour, j'ai quelques questions pour mySQL v5: Lors de la création d'une table "table" dans une base "base", on constate la création de 3 fichiers: base/table.frm base/table.MYD base/table.MYI savez vous si ces fichiers sont toujours créés? (pas de dépendance au format utilisé comme myISAM ou...