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 :
- Stoppez l serveur, si il fonctionnait (
mysqladmin shutdown
).
- 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.
- 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.
- 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.