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'
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.
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.
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
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.
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';
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
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;
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;
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';
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.