Pour commencer à modifier les privilèges dans MySQL, vous devez d'abord vous connecter à votre serveur, puis vous connecter au mysql
client. En règle générale, vous souhaiterez vous connecter avec root
ou quel que soit le compte qui est votre compte « super utilisateur » principal et initial qui dispose d'un accès complet à toute l'installation de MySQL.
Typiquement la root
l'utilisateur aura reçu un mot de passe d'authentification lors de l'installation de MySQL, mais si ce n'est pas le cas, vous devez prendre des mesures pour renforcer votre sécurité en ajoutant root
mots de passe comme illustré dans la documentation officielle.
Connexion à l'outil de ligne de commande MySQL
Pour cet exemple, nous supposerons root
est le compte MySQL principal. Pour commencer à utiliser l'outil de ligne de commande MySQL (mysqlcli
), connectez-vous à votre serveur en tant que root
utilisateur, puis émettez le mysql
commande :
$ mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 112813
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)
[...]
mysql>
En cas de succès, vous verrez une sortie sur votre connexion MySQL et serez face au mysql
invite.
Remarque :Si vous ne parvenez pas à vous connecter directement au serveur en tant que root
user avant de se connecter à mysql
, vous pouvez spécifier l'utilisateur avec lequel vous souhaitez vous connecter en tant que en ajoutant le --user=
drapeau :
$ mysql --user=username
Accorder des privilèges
Maintenant que vous êtes sur mysqlcli
invite, il vous suffit d'émettre le GRANT
commande avec les options nécessaires pour appliquer les autorisations appropriées.
Types de privilèges
La GRANT
La commande est capable d'appliquer une grande variété de privilèges, allant de la capacité à CREATE
tables et bases de données, lire ou écrire FILES
, et même SHUTDOWN
le serveur. Il existe un large éventail d'indicateurs et d'options disponibles pour la commande, vous pouvez donc vous familiariser avec ce que GRANT
peut réellement faire en parcourant la documentation officielle.
Privilèges spécifiques à la base de données
Dans la plupart des cas, vous accorderez des privilèges aux utilisateurs MySQL en fonction de la database
particulière ce compte devrait avoir accès. C'est une pratique courante, par exemple, pour chaque database
MySQL unique sur un serveur pour avoir son propre user
unique qui lui est associé, de sorte qu'un seul user
dispose d'un accès d'authentification à une seule database
et vice-versa.
Pour GRANT ALL
privilèges à un user
, permettant à cet utilisateur un contrôle total sur une database
spécifique , utilisez la syntaxe suivante :
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';
Avec cette commande, nous avons demandé à MySQL :
GRANT
lesPRIVILEGES
de typeALL
(donc tout bien sûr). Remarque :la plupart des installations MySQL modernes ne nécessitent pas lesPRIVILEGES
facultatifs mot-clé.- Ces privilèges sont pour
database_name
et cela s'applique à tous tables de cette base de données, qui est indiquée par le.*
qui suit. - Ces privilèges sont attribués à
username
quand ceusername
est connecté localement, comme spécifié par@'localhost'
. Pour spécifier un hôte valide, remplacez'localhost'
avec'%'
.
Plutôt que de fournir tous les privilèges à l'ensemble de la base de données, vous voudrez peut-être donner au tolkien
utilisateur uniquement la possibilité de lire les données (SELECT
) des authors
tableau des books
base de données. Cela serait facilement accompli comme ceci :
mysql> GRANT ALL PRIVILEGES ON books.authors TO 'tolkien'@'localhost';
Créer un autre super utilisateur
Bien que cela ne soit pas particulièrement sécurisé, dans certains cas, vous souhaiterez peut-être créer un autre "super utilisateur", qui dispose de TOUS les privilèges sur TOUTES les bases de données du serveur. Cela peut être effectué de la même manière que ci-dessus, mais en remplaçant le database_name
avec l'astérisque générique :
mysql> GRANT ALL PRIVILEGES ON *.* TO 'tolkien'@'%';
Maintenant tolkien
a les mêmes privilèges que le root
par défaut compte, méfiez-vous !
Enregistrer vos modifications
Comme dernière étape après toute mise à jour des privilèges de l'utilisateur, assurez-vous d'enregistrer les modifications en émettant le FLUSH PRIVILEGES
commande de mysql
invite :
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)