Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment accorder tous les privilèges sur une base de données dans MySQL

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 les PRIVILEGES de type ALL (donc tout bien sûr). Remarque :la plupart des installations MySQL modernes ne nécessitent pas les PRIVILEGES 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 ce username 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)