web-dev-qa-db-fra.com

Octroi de privilèges sans succès

J'essaie actuellement de définir un nouvel utilisateur à l'aide des éléments suivants:

mysql> GRANT ALL PRIVILEGES ON simple_cms_development.* TO 'br'@'localhost' IDENTIFIED BY 'password';

Cependant, il échoue et génère:

ERREUR 1064 (42000): vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à la version de votre serveur MySQL pour la bonne syntaxe à utiliser près de 'IDENTIFIED BY' password '' à la ligne 1

J'utilise MySQL 8.0.11.

6
Brennan

Selon la documentation MySQL, cette fonctionnalité est déconseillée: https://dev.mysql.com/doc/refman/5.7/en/mysql-nutshell.html#mysql-nutshell-deprecations

Les modifications apportées aux relevés de gestion de compte rendent les fonctionnalités suivantes obsolètes. Ils sont désormais obsolètes:

  • Utilisation de GRANT pour créer des utilisateurs. Utilisez plutôt CREATE USER. En suivant cette pratique, le mode SQL NO_AUTO_CREATE_USER est sans importance pour les instructions GRANT, il est donc également obsolète.

  • Utilisation de GRANT pour modifier les propriétés de compte autres que les attributions de privilèges. Cela inclut les propriétés d'authentification, SSL et de limite de ressources. Au lieu de cela, établissez ces propriétés au moment de la création du compte avec CREATE USER ou modifiez-les ensuite avec ALTER USER.

La solution consiste à utiliser deux instructions distinctes. Quelqu'un qui ALTER USER, puis une seconde à GRANT privs.

ALTER USER 'br' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON simple_cms_development.* TO 'br'@'localhost';
8
Jacob H