IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Installation MySQL Discussion :

[privilèges] user qui ne voit que la base test


Sujet :

Installation MySQL

  1. #1
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut [privilèges] user qui ne voit que la base test
    Bonjour,

    je ne comprends pas bien la gestion des users.
    J'ai plusieurs questions à ce sujets

    • lancement du démon :
      => mysqld est lancé grâce à
      ce qui me donne :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      # ps -edf | grep mysql | more
      root     31899 24580  0 11:55 pts/4    00:00:00 /bin/sh /usr/bin/mysqld_safe
      mysql    31924 31899  1 11:55 pts/4    00:00:00 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-locking --socket=/var/lib/mysql/mysql.sock
      Comment sait-il qu'il faut prendre par défaut le user mysql ??
      Bien sur, si je fait
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      mysqld_safe --user=root &
      c'est root qui devient proprio du process mysqld.
      J'ai cru comprendre qu'il prenait la valeur du user configuré dans /etc/my/cnf mais mes tests ne vont pas dans ce sens (à moins que je fasse une cagade bien sur...).

      qu'est ce que ca change si c'est mysql ou root qui lance le démon ?


    • Connexion à PhpMyAdmin
      => Lorsque je me connecte à PhpMyAdmin, suivant le user utilisé (peu importe la méthode : $cfg['Servers'][$i]['auth_type'] = 'cookie' ou = 'http' ou = 'config'), j'ai un accès différent.
      En tant que root, je vois toutes les bases (c'est à dire la base mysql et une base test).
      En tant que mysql, je ne vois que la base test.
      Pourquoi ??
      Pourtant, le user mysql a tous les droits sur la base mysql (il est propriétaire des répertoires /var/lib/mysql/mysql et /var/lib/mysql/test).

      Pour aide si besoin :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      5
      6
      7
      8
      9
      # mysql -e "select host,user,password from user" mysql
      +-----------+------+----------+
      | host      | user | password |
      +-----------+------+----------+
      | localhost | root |          |
      | linux-web | root |          |
      | linux-web |      |          |
      | localhost |      |          |
      +-----------+------+----------+


    Merci.

  2. #2
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Salut,

    Quelques indications trouvées dans la doc :

    --user={user_name|user_id}, -u {user_name|user_id}

    Run the mysqld server as the user having the name user_name or the numeric user ID user_id. (“User” in this context refers to a system login account, not a MySQL user listed in the grant tables.)

    This option is mandatory when starting mysqld as root. The server changes its user ID during its startup sequence, causing it to run as that particular user rather than as root. See Section 5.7.1, “General Security Guidelines”.

    To avoid a possible security hole where a user adds a --user=root option to a my.cnf file (thus causing the server to run as root), mysqld uses only the first --user option specified and produces a warning if there are multiple --user options. Options in /etc/my.cnf and $MYSQL_HOME/my.cnf are processed before command-line options, so it is recommended that you put a --user option in /etc/my.cnf and specify a value other than root. The option in /etc/my.cnf is found before any other --user options, which ensures that the server runs as a user other than root, and that a warning results if any other --user option is found.
    Donc user=root dans le fichier my.cnf devrait fonctionner.

    Citation Envoyé par sebhm
    qu'est ce que ca change si c'est mysql ou root qui lance le démon ?
    Utiliser le user mysql est beaucoup plus sécurisé puisqu'il a des droits limités contrairement à root. En exécutant mysql en root on s'expose beaucoup plus à un exploit qui utiliserait une faille ou une vulnérabilité de MySQL.

    Citation Envoyé par sebhm
    => Lorsque je me connecte à PhpMyAdmin, suivant le user utilisé (peu importe la méthode : $cfg['Servers'][$i]['auth_type'] = 'cookie' ou = 'http' ou = 'config'), j'ai un accès différent.
    En tant que root, je vois toutes les bases (c'est à dire la base mysql et une base test).
    En tant que mysql, je ne vois que la base test.
    Pourquoi ??
    Tu parles d'utilisateurs de ton système ou de users MySQL là ? Par défaut il y a un user MySQL "root" mais pas de "mysql"...

    Je pense que tu dois confondre le système de privilèges du serveur de bases de données MySQL (celui gère les autorisations sur telle ou telle base/table) et les utilisateurs de ton système d'exploitation (droits sur les fichiers).
    Pensez au bouton

  3. #3
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    Merci pour ta réponse.

    ben oui c'est flou pour moi car je peux me connecter sur PhPmyAdmin avec root ou avec mysql.
    "root" est le user déclaré dans la table user de la base mysql : sur la 1ere page de PhpMyAdmin, j'ai alors le choix entre mes 2 bases (mysql et test)
    "mysql" est le user system (celui qui est propriétaire de /var/lib/mysql/mysql et /var/lib/mysql/test). Je peux pourtant me connecter avec sur PhpMyAdmin et je n'ai alors accès qu'à la base test.

    voici mon fichier config.inc.php (avec une authentification "config"):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    $i=0;
    $i++;
    $cfg['Servers'][$i]['user']          = 'root';
    $cfg['Servers'][$i]['password']      = ''; // use here your password
    ?>
    je peux mettre mysql à la place de root et c'est là que je n'ai accès qu'à la base test.

  4. #4
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Question bête : le root de ton linux est-il le même que celui de ton serveur mysql ? Ils ont le même nom, mais ne correspondent pas forcément à la même chose.
    Par exemple, mon serveur mysql (sous windows) possède 2 users root (qui a tous les droits) et mysql (qui n'a accès qu'aux tables système).

  5. #5
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    j'ai réussi à forcer le user pour le lancement de mysqld.
    J'écrivais au mauvais endroit dans my.cnf.
    merci.

    (par contre, j'ai toujours mon probleme pour phpmyadmin)

  6. #6
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    réponse à guidav :
    non , les root sont différents.
    Ca, je pense que j'ai compris.
    Le user "root" de mysql est simplement un user pour la base de données. preuve simple : mon user root de mysql n'a pas de mot de passe.... (mon root systeme en a un... heureusement...)

  7. #7
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    guidav, si tu as 2 users : qu'est ce que te retourne la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql -e "select host,user,password from user" mysql
    ?

    moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # mysql -e "select host,user,password from user" mysql
    +-----------+------+----------+
    | host      | user | password |
    +-----------+------+----------+
    | localhost | root |          |
    | linux-web | root |          |
    | linux-web |      |          |
    | localhost |      |          |
    +-----------+------+----------+
    merci

  8. #8
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    je ne comprends toujours pas pourquoi MySQL me laisse utiliser le user "mysql" qui est un user system.

    J'ai fait un test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql -u UserQuiNExistePas
    et il me laisse me connecter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    [root@linux-web ~]# mysql -u UserQuiNExistePas
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 12 to server version: 4.1.12
     
    Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
     
    mysql> status
    --------------
    mysql  Ver 14.7 Distrib 4.1.12, for redhat-linux-gnu (i386) using readline 4.3
     
    Connection id:          12
    Current database:
    Current user:           UserQuiNExistePa@localhost
    SSL:                    Not in use
    Current pager:          stdout
    Using outfile:          ''
    Using delimiter:        ;
    Server version:         4.1.12
    Protocol version:       10
    Connection:             Localhost via UNIX socket
    Server characterset:    latin1
    Db     characterset:    latin1
    Client characterset:    latin1
    Conn.  characterset:    latin1
    UNIX socket:            /var/lib/mysql/mysql.sock
    Uptime:                 27 min 12 sec
     
    Threads: 2  Questions: 30  Slow queries: 0  Opens: 13  Flush tables: 1  Open tab
    les: 2  Queries per second avg: 0.018
    --------------
    comprends pas....

  9. #9
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Citation Envoyé par sebhm
    +-----------+------+----------+
    | host | user | password |
    +-----------+------+----------+
    | localhost | root | |
    | linux-web | root | |
    | linux-web | | |
    | localhost | | |
    +-----------+------+----------+
    C'est à cause de ça.

    Il peut arriver que ton installation de MySQL autorise un user anonyme à se connecter en local.
    Pour supprimer ce user : DELETE FROM mysql.user WHERE user=''

    Cf http://maximilian.developpez.com/mys...n_mysql5/#L3-2
    Pensez au bouton

  10. #10
    Membre éprouvé Avatar de sebhm
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    1 090
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 090
    Points : 1 241
    Points
    1 241
    Par défaut
    benco !

    ben oui, j'ai fait d'autres tests et il me laisse me connecter avec n'importe quel user. Je me suis juste embrouillé tout seul avec un user "mysql" qui n'en était pas un.

    Merci pour ton aide.

  11. #11
    Membre éprouvé

    Inscrit en
    Janvier 2006
    Messages
    969
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 969
    Points : 958
    Points
    958
    Par défaut
    Citation Envoyé par sebhm
    guidav, si tu as 2 users : qu'est ce que te retourne la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql -e "select host,user,password from user" mysql
    ?

    moi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # mysql -e "select host,user,password from user" mysql
    +-----------+------+----------+
    | host      | user | password |
    +-----------+------+----------+
    | localhost | root |          |
    | linux-web | root |          |
    | linux-web |      |          |
    | localhost |      |          |
    +-----------+------+----------+
    merci
    Pour moi (j'ai fait select host,user,password from user dans la base mysql dans phpmyadmin, désolé pour les |) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    localhost root *zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 
    % root *zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    localhost consultation *zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
    localhost mysql *zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

    J'ai l'impression que c'est résolu, tant mieux !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. un CEdit qui n'accepte que les décimaux
    Par Midou dans le forum MFC
    Réponses: 4
    Dernier message: 01/03/2006, 17h43
  2. [MySQL] Order by qui marche pas, Que faire ?
    Par mulbek dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 06/01/2006, 14h48
  3. Demarer un vieil IBM qui ne voit pas le cdrom
    Par jean christophe dans le forum Ordinateurs
    Réponses: 2
    Dernier message: 14/04/2005, 08h37
  4. [Eclipse 3.0.1] Image qui n'affiche que son path
    Par thehpman dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 16/03/2005, 11h28
  5. Réponses: 3
    Dernier message: 21/01/2004, 08h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo