Conceder** todos * * privilegios en la base de datos


He creado una base de datos, por ejemplo '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;

Ahora puedo iniciar sesión en la base de datos desde todas partes, pero no puedo crear tablas.

Cómo otorgar todos los privilegios en esa base de datos y (en el futuro) tablas. No puedo crear tablas en la base de datos 'mydb'. Siempre consigo:

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

10 answers

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

Así es como creo mis privilegios de "Superusuario" (aunque normalmente especificaría un host).

NOTA IMPORTANTE

Mientras que esta respuesta puede resolver el problema del acceso, WITH GRANT OPTION crea un usuario MySQL que puede editar los permisos de otros usuarios.

El privilegio DE OPCIÓN DE CONCESIÓN le permite otorgar a otros usuarios o eliminar de otros usuarios los privilegios que usted mismo posee.

Por razones de seguridad, no debe usar esto tipo de cuenta de usuario para cualquier proceso al que el público tenga acceso (es decir, un sitio web). Se recomienda que cree un usuario con solo privilegios de base de datos para ese tipo de uso.

 826
Author: diagonalbatman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:27

Esta es una vieja pregunta, pero no creo que la respuesta aceptada sea segura. Es bueno para crear un superusuario, pero no es bueno si desea otorgar privilegios en una sola base de datos.

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

% parece que no cubre las comunicaciones de socket, para las que está el localhost. WITH GRANT OPTION solo es bueno para el superusuario, de lo contrario suele ser un riesgo de seguridad.

Espero que esto ayude.

 478
Author: akostadinov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-04 02:22:43

Esto será útil para algunas personas:

Desde la línea de comandos de MySQL:

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

Lamentablemente, en este punto newuser no tiene permisos para hacer nada con las bases de datos. De hecho, si newuser intenta iniciar sesión (con la contraseña, password), no podrán llegar al shell de MySQL.

Por lo tanto, lo primero que debe hacer es proporcionar al usuario acceso a la información que necesitará.

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

Los asteriscos de este comando se refieren a la base de datos y la tabla (respectivamente) que pueden acceder-este comando específico permite al usuario leer, editar, ejecutar y realizar todas las tareas en todas las bases de datos y tablas.

Una vez que haya finalizado los permisos que desea configurar para sus nuevos usuarios, asegúrese siempre de recargar todos los privilegios.

FLUSH PRIVILEGES;

Sus cambios ahora estarán en efecto.

Para más información: http://dev.mysql.com/doc/refman/5.6/en/grant.html

Si no se siente cómodo con el línea de comandos a continuación, puede utilizar un cliente como MySQL workbench, Navicat o SQLyog

 103
Author: BrenBarn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-08 06:58:40

1. Crear la base de datos

CREATE DATABASE db_name;

2. Crear el nombre de usuario para la base de datos db_name

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

3. Utilizar la base de datos

USE db_name;

4. Finalmente se encuentra en database db_name y luego ejecuta los comandos como create, select e insert operations.

 28
Author: Bhavnesh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-07 09:26:42

Este SQL otorga privilegios básicos a todas las bases de datos. Son suficientes para Drupal o Wordpress y como una sutileza, permite una cuenta de desarrollador para proyectos locales.

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, 
    INDEX, ALTER, CREATE TEMPORARY TABLES 
ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
 20
Author: celeryandsprite,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-08 14:18:08
GRANT ALL PRIVILEGES ON mydb.* TO myuser@localhost IDENTIFIED BY 'mypasswd';

Funciona para privilegios en el esquema :)

Opcional: después de mypasswd puede agregar WITH GRANT OPTION

 13
Author: Dutch Glory,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-07 09:32:26

Hola He utilizado este código para tener el superusuario en 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;

Y luego

FLUSH PRIVILEGES;
 12
Author: gastonnina,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-03 20:40:21

Podría hacer que funcione solo agregando GRANT OPTION, sin que siempre reciba el permiso de error denegado

GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'localhost' WITH GRANT OPTION;
 12
Author: GnanaPrakash,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-06 21:20:51

Para acceder desde el servidor remoto a la base de datos mydb solamente

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

Para acceder desde el servidor remoto a todas las bases de datos.

GRANT ALL PRIVILEGES ON * . * TO 'root'@'192.168.2.21';
 5
Author: Developer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-25 11:32:54

Para otorgar todas las priveleges en la base de datos: mydb al usuario: myuser, simplemente ejecute:

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

O:

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

La palabra clave PRIVILEGES no es necesaria.

Tampoco sé por qué las otras respuestas sugieren que el IDENTIFIED BY 'password' se ponga al final de la orden. Creo que no es necesario.

 0
Author: pgmank,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-29 14:16:08