711 votes

MySQL : Accorder **tous** les privilèges sur la base de données

J'ai créé une base de données, par exemple 'mydb'.

CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;

Maintenant je peux me connecter à la base de données depuis n'importe où, mais je ne peux pas créer de tables.

Comment accorder tous les privilèges sur cette base de données et (à l'avenir) sur les tables. Je ne peux pas créer de tables dans la base de données 'mydb'. J'obtiens toujours :

CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'

11 votes

Qu'est-ce que vous obtenez lorsque vous affichez les subventions pour l'utilisateur actuel ;

6 votes

Avez-vous essayé d'exécuter FLUSH PRIVILEGES ?

2 votes

@Andy Merci pour "SHOW GRANTS FOR CURRENT_USER ;" - cela m'aide à voir ma faute de frappe.

8voto

pgmank Points 634

Pour accorder tous les privilèges sur la base de données : mydb à l'utilisateur : myuser il suffit de l'exécuter :

GRANT ALL ON mydb.* TO 'myuser'@'localhost';

ou :

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost';

El PRIVILEGES n'est pas nécessaire.

Je ne sais pas non plus pourquoi les autres réponses suggèrent que la IDENTIFIED BY 'password' être mis à la fin de la commande. Je crois que ce n'est pas nécessaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X