Question 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 de partout, mais je ne peux pas créer de 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 de 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'

543
2018-02-16 12:38


origine


Réponses:


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

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

NOTE IMPORTANTE

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

Le privilège GRANT OPTION vous permet de donner à d'autres utilisateurs ou de retirer à d'autres utilisateurs les privilèges que vous possédez vous-même.

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


816
2018-02-16 12:45



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

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 c'est habituellement un risque de sécurité.

J'espère que cela t'aides.


477
2018-03-29 16:56



Cela sera utile pour certaines personnes:

De la ligne de commande MySQL:

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

Malheureusement, à ce stade, newuser n'a aucune autorisation pour 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), il ne pourra pas atteindre le shell MySQL.

Par conséquent, la première chose à faire est de fournir à l'utilisateur l'accès aux informations dont il aura besoin.

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

Les astérisques de cette commande font référence à la base de données et à la table (respectivement) auxquelles ils peuvent accéder: cette commande spécifique permet à l'utilisateur de lire, modifier, exécuter et exécuter toutes les tâches dans toutes les bases de données et tables.

Une fois que vous avez finalisé les autorisations que vous souhaitez configurer pour vos nouveaux utilisateurs, veillez toujours à recharger tous les privilèges.

FLUSH PRIVILEGES;

Vos modifications seront maintenant en vigueur.

Pour plus d'informations: http://dev.mysql.com/doc/refman/5.6/fr/grant.html

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


101
2017-11-19 11:26



1. Créez la base de données

CREATE DATABASE db_name;

2. Créez le nom d'utilisateur pour la base de données nom_bd

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

3. Utilisez la base de données

USE db_name;

4. Enfin, vous êtes dans la base de données db_name et ensuite exécutez les commandes comme créer, sélectionner et insérer des opérations.


28
2018-03-20 05:13



Ce SQL accorde sur toutes les bases de données, mais seulement les privilèges de base. Ils sont suffisants pour Drupal ou Wordpress et permettent, en toute simplicité, 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';

19
2017-12-09 00:37



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 alors

FLUSH PRIVILEGES;

12
2017-10-07 19:53



Je pourrais le faire fonctionner uniquement en ajoutant GRANT OPTION, sans que toujours recevoir une erreur d'autorisation refusée

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

12
2017-10-25 14:49



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

Fonctionne pour les privilèges sur le schéma :)

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


12
2018-06-07 08:21