Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Installation
Installation Forum d'entraide sur les problèmes liés à l'installation de MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/09/2006, 12h29   #1
Modérateur
 
Avatar de sebhm
 
Homme Seb
Développeur Web
Inscription : avril 2004
Messages : 1 063
Détails du profil
Informations personnelles :
Nom : Homme Seb
Âge : 31
Localisation : France, Landes (Aquitaine)

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

Informations forums :
Inscription : avril 2004
Messages : 1 063
Points : 1 181
Points : 1 181
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 :
    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 :
    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 :
    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.
sebhm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 13h35   #2
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
Salut,

Quelques indications trouvées dans la doc :

Citation:
--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
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 14h13   #3
Modérateur
 
Avatar de sebhm
 
Homme Seb
Développeur Web
Inscription : avril 2004
Messages : 1 063
Détails du profil
Informations personnelles :
Nom : Homme Seb
Âge : 31
Localisation : France, Landes (Aquitaine)

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

Informations forums :
Inscription : avril 2004
Messages : 1 063
Points : 1 181
Points : 1 181
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 :
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.
sebhm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 14h27   #4
Membre chevronné
 
Inscription : janvier 2006
Messages : 916
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 916
Points : 733
Points : 733
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).
guidav est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 14h28   #5
Modérateur
 
Avatar de sebhm
 
Homme Seb
Développeur Web
Inscription : avril 2004
Messages : 1 063
Détails du profil
Informations personnelles :
Nom : Homme Seb
Âge : 31
Localisation : France, Landes (Aquitaine)

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

Informations forums :
Inscription : avril 2004
Messages : 1 063
Points : 1 181
Points : 1 181
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)
sebhm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 14h31   #6
Modérateur
 
Avatar de sebhm
 
Homme Seb
Développeur Web
Inscription : avril 2004
Messages : 1 063
Détails du profil
Informations personnelles :
Nom : Homme Seb
Âge : 31
Localisation : France, Landes (Aquitaine)

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

Informations forums :
Inscription : avril 2004
Messages : 1 063
Points : 1 181
Points : 1 181
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...)
sebhm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 14h36   #7
Modérateur
 
Avatar de sebhm
 
Homme Seb
Développeur Web
Inscription : avril 2004
Messages : 1 063
Détails du profil
Informations personnelles :
Nom : Homme Seb
Âge : 31
Localisation : France, Landes (Aquitaine)

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

Informations forums :
Inscription : avril 2004
Messages : 1 063
Points : 1 181
Points : 1 181
guidav, si tu as 2 users : qu'est ce que te retourne la commande
Code :
mysql -e "select host,user,password from user" mysql
?

moi :
Code :
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
sebhm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 14h55   #8
Modérateur
 
Avatar de sebhm
 
Homme Seb
Développeur Web
Inscription : avril 2004
Messages : 1 063
Détails du profil
Informations personnelles :
Nom : Homme Seb
Âge : 31
Localisation : France, Landes (Aquitaine)

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

Informations forums :
Inscription : avril 2004
Messages : 1 063
Points : 1 181
Points : 1 181
je ne comprends toujours pas pourquoi MySQL me laisse utiliser le user "mysql" qui est un user system.

J'ai fait un test :
Code :
mysql -u UserQuiNExistePas
et il me laisse me connecter :
Code :
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....
sebhm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 14h59   #9
Provisoirement toléré
 
Avatar de Maximilian
 
Inscription : juin 2003
Messages : 2 622
Détails du profil
Informations forums :
Inscription : juin 2003
Messages : 2 622
Points : 2 505
Points : 2 505
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
Maximilian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 15h04   #10
Modérateur
 
Avatar de sebhm
 
Homme Seb
Développeur Web
Inscription : avril 2004
Messages : 1 063
Détails du profil
Informations personnelles :
Nom : Homme Seb
Âge : 31
Localisation : France, Landes (Aquitaine)

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

Informations forums :
Inscription : avril 2004
Messages : 1 063
Points : 1 181
Points : 1 181
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.
sebhm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 17h21   #11
Membre chevronné
 
Inscription : janvier 2006
Messages : 916
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 916
Points : 733
Points : 733
Citation:
Envoyé par sebhm
guidav, si tu as 2 users : qu'est ce que te retourne la commande
Code :
mysql -e "select host,user,password from user" mysql
?

moi :
Code :
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 :
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 !
guidav est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h14.


 
 
 
 
Partenaires

Hébergement Web