Grant** all * * privilèges sur la base de données

j'ai créé la 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 de partout, mais je ne peux pas créer des tables.

comment accorder tous les privilèges sur cette base de données et (dans le futur) les tables. Je ne peux pas créer des tables dans la base de données' mydb'. Je reçois 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'
554
demandé sur codeforester 2011-02-16 15:38:23

10 réponses

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;

C'est ainsi que je crée mes privilèges de" Super-Utilisateur " (bien que je spécifie normalement un hôte).

NOTE IMPORTANTE

alors que cette réponse peut résoudre le problème d'accès, WITH GRANT OPTION crée un utilisateur MySQL qui peut modifier les permissions des autres utilisateurs .

L'OPTION GRANT permet de donner à d'autres utilisateurs ou de supprimer ces privilèges que vous vous posséder.

pour des raisons de sécurité, vous ne devez pas utiliser ce type de Compte d'utilisateur pour tout processus auquel le public aura accès (c.-à-d. un site web). Il est recommandé que vous créer un utilisateur avec seulement les privilèges de base de données pour ce genre d'utilisation.

826
répondu diagonalbatman 2017-05-23 12:18:27

C'est une vieille question mais je ne pense pas que la réponse acceptée est sûre. C'est bon pour créer un super utilisateur mais pas bon si vous voulez accorder des privilèges sur une base de données unique.

grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';

% semble ne pas couvrir les communications socket, que le localhost est pour. WITH GRANT OPTION est seulement bon pour le super utilisateur, sinon il est généralement un risque de sécurité.

Espérons que cette aide.

478
répondu akostadinov 2013-10-04 02:22:43

cela sera utile pour certaines personnes:

De MySQL en ligne de commande:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

malheureusement, à ce point newuser n'a pas les permissions de faire quoi que ce soit avec les bases de données. En fait, si newuser essaie même de se connecter (avec le mot de passe, le mot de passe), ils ne pourront pas atteindre le shell MySQL.

Donc, la première chose à faire est de fournir à l'utilisateur l'accès aux informations dont ils auront besoin.

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

les astérisques dans cette commande se réfèrent à la base de données et à la table (respectivement) auxquelles ils peuvent accéder-Cette commande spécifique permet à l'utilisateur de lire, éditer, exécuter et exécuter toutes les tâches à travers toutes les bases de données et les tables.

une Fois que vous avez finalisé les autorisations que vous souhaitez configurer pour vos nouveaux utilisateurs, assurez-vous de toujours recharger tous les privilèges.

FLUSH PRIVILEGES;

vos modifications seront maintenant en vigueur.

pour plus d'information: http://dev.mysql.com/doc/refman/5.6/en/grant.html

si vous n'êtes pas à l'aise avec la ligne de commande alors vous pouvez utiliser un client comme MySQL workbench , Navicat ou SQLyog

103
répondu BrenBarn 2014-04-08 06:58:40

1. Créer la base de données

CREATE DATABASE db_name;

2. Créer le nom d'utilisateur pour la base de données db_name

GRANT ALL PRIVILEGES ON db_name.* TO 'username'@'localhost' IDENTIFIED BY 'password';

3. Utiliser la base de données

USE db_name;

4. Enfin, vous êtes dans la base de données db_name, puis exécutez les commandes comme create, select et insert operations.

28
répondu Bhavnesh 2017-11-07 09:26:42

ce SQL accorde sur toutes les bases de données mais seulement des privilèges de base. Ils sont assez pour Drupal ou Wordpress et comme une gentillesse, permet un compte de développeur pour les projets locaux.

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, 
    INDEX, ALTER, CREATE TEMPORARY TABLES 
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
20
répondu celeryandsprite 2015-10-08 14:18:08
GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY 'mypasswd';

Travaille pour des privilèges sur le schéma :)

facultatif: après mypasswd vous pouvez ajouter WITH GRANT OPTION

13
répondu Dutch Glory 2017-11-07 09:32:26

Bonjour, j'ai utilisé ce code pour avoir le super-utilisateur dans mysql

GRANT EXECUTE, PROCESS, SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE,
    CREATE, CREATE ROUTINE, CREATE TEMPORARY TABLES, CREATE VIEW, DELETE, DROP,
    EVENT, INDEX, INSERT, REFERENCES, TRIGGER, UPDATE, CREATE USER, FILE,
    LOCK TABLES, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SHUTDOWN,
    SUPER
        ON *.* TO mysql@'%'
    WITH GRANT OPTION;

et ensuite

FLUSH PRIVILEGES;
12
répondu gastonnina 2015-11-03 20:40:21

Je ne pouvais le faire fonctionner qu'en ajoutant GRANT OPTION , sans que toujours recevoir la permission refusé erreur

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' WITH GRANT OPTION;
12
répondu GnanaPrakash 2016-02-06 21:20:51

pour accéder à partir du serveur distant à la base de données mydb seulement

GRANT ALL PRIVILEGES ON mydb.* TO 'root'@'192.168.2.21';

pour accéder depuis un serveur distant à toutes les bases de données.

GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.2.21';
5
répondu Developer 2015-06-25 11:32:54

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

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

ou:

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

le mot-clé PRIVILEGES n'est pas nécessaire.

aussi je ne sais pas pourquoi les autres réponses suggèrent que le IDENTIFIED BY 'password' soit mis à la fin de la commande. Je crois qu'il n'est pas nécessaire.

0
répondu pgmank 2018-03-29 14:16:08