18.8 Comment faire tourner MySQL en tant qu'utilisateur normal

Un serveur MySQL peut être lancé par n'importe quel utilisateur. Pour modifier mysqld et le faire fonctionner avec l'utilisateur nom_utilisateur, vous devez faire ceci :

  1. Stoppez l serveur, si il fonctionnait (mysqladmin shutdown).
  2. Modifiez les dossiers et fichiers de la base pour que nom_utilisateur ait les droits de lecture et écriture sur ces fichiers. (Il vous faudra peut être un accès root):
    shell> chown -R user_name /path/to/mysql/datadir
    
    Si les dossiers ou fichiers dans le dossier de données de MySQL sont des liens symboliques, vous aurez aussi à suivre ces liens, et donner les droits d'accès sur les dossiers et fichiers pointés. . chown -R ne suivra pas les liens pour vous.
  3. Lancez le serveur en tant que nom_utilisateur, ou, si vous utilisez la version MySQL 3.22 ou plus récent, lancez mysqld en tant que root Unix et utilisez l'option --user=user_name. mysqld effectuera le changement d'utilisateur avant d'accepter les connexions.
  4. Si vous utilisez le script mysql.server pour démarrer mysqld lorsque le système redémarre, vous aurez à le modifier pour que mysqld démarrer bien en tant que nom_utilisateur, ou lancez mysqld avec l'option --user option. (Aucune modification de safe_mysqld n'est nécessaire).

A partir de ce moment, mysqld doit fonctionner sans problèmes, avec l'utilisateur nom_utilisateur . Cependant, une chose n'a pas changé, ce sont les permissions sur les tables. Par défaut, juste après avoir exécuter le script mysql_install_db), l'utilisateur root est le seul a avoir des autorisations d'accès, de création de bases. A moins que vous n'ayez modifié ces permissions, elles ont toujours cours. Cela ne va pas vous empêcher d'accéder à l'utilisateur MySQL root lorsque vous êtes connecté en tant qu'utilisateur Unix nom_utilisateur : pensez à spécifier l'option -u root dans le client.

Remarquez bien que accéder à MySQL en tant que root, avec l'option -u root de la ligne de commande n'a rien à voir avec le fait que MySQL est lancé par le root Unix, ou n'importe quel autre utilisateur Unix. Les conditions d'accès et les noms d'utilisateurs de MySQL sont complétement différents de ceux Unix. La seule liaison qu'il y a entre les deux est que si vous essayez de vous connecter à la base MySQL sans fournir de nom d'utilisateur, le client va tenter de se connecter en utilisant votre nom d'utilisateur Unix comme nom d'utilisateur MySQL.

Si votre système Unix n'est pas sécurisé, vous devrez au moins mettre un mot de passe pour l'utilisateur root MySQL. Sinon, n'importe quelle personne avec un compte sur cette machine peut utiliser la commande mysql -u root nom_base_de_donnees et faire ce qu'elle veut.