Cómo otorgar privilegios de creación de bases de datos a un usuario en MySQL


11

El siguiente comando proporciona todos los privilegios en todas las bases de datos para el usuario 'admin'. Pero no permite que 'admin' cree una base de datos.

GRANT ALL ON * . * TO 'admin'@'localhost'; 

¿Cómo puedo proporcionar el acceso a 'admin' para crear una base de datos?

Cuando intento crear una base de datos, recibo el siguiente error:

ERROR 1044 (42000): acceso denegado para el usuario 'admin' @ 'localhost' a la base de datos 'newdb'


¿Usaste GRANT ALL ON *.* TO 'admin'@'localhost';? En su ejemplo, dice que ejecutó:, GRANT ALL ON * . * TO 'admin'@'hostname';pero hostnamees un host distinto de localhost.
oNare

hostname es 'localhost'.
Abhishek

¿Estaba conectado como "root" cuando ejecutó eso GRANT?
Rick James

Si. Estaba conectado como "root" cuando ejecuté ese GRANT.
Abhishek

¿Intentaste flush privileges;como root?
dwjv

Respuestas:


5

TODOS los privilegios incluyen "TODOS", excepto "CON LA OPCIÓN DE OTORGAMIENTO" ... Por lo tanto, el comando anterior también permitirá al usuario administrador crear la base de datos.

Es posible que desee mostrar el error que está recibiendo. Tenga en cuenta que en GRANT anterior no ha especificado la contraseña para el usuario administrador también.

Actualizar:

Debería poder hacer lo siguiente:

Inicie sesión como root y cree un usuario:

$] mysql -uroot -p
mysql> grant all privileges on *.* to 'admin'@'localhost';

iniciar sesión como administrador (sin contraseña):

$] mysql -uadmin -p
mysql> create database admin;

Cuando inicia sesión, puede verificar sus privilegios de la siguiente manera:

mysql> show grants;

o

mysql> show grants for current_user();

mysql> select current_user() le mostrará el usuario con el que inició sesión.


He agregado el error en mi pregunta.
Abhishek

@abhishek update answer .... por cierto, ¿qué comando está causando el error anterior? ¿Verifique qué concesiones tiene su usuario? ¿Estás seguro de que te estás conectando como usuario administrador?
mysql_user

Sí, estoy 100% seguro de que me estoy conectando como usuario administrador.
Abhishek

mysql> mostrar subvenciones; + ------------------------------------------------- ---------------------------- + | Subvenciones para admin @ localhost | + ------------------------------------------------- ---------------------------- + | OTORGAR USO . TO 'admin' @ 'localhost' IDENTIFICADO POR CONTRASEÑA <secret> | El | OTORGUE TODOS LOS PRIVILEGIOS EN newdb. * A 'admin' @ 'localhost' | + ------------------------------------------------- ---------------------------- + 2 filas en conjunto (0.00 seg)
Abhishek

Tenga en cuenta que tiene todos los privilegios solo en mbdb ... por lo que no podrá trabajar con ningún otro db.
mysql_user

0

Un nuevo usuario no tiene permisos para hacer nada con las bases de datos. De hecho, si un nuevo usuario incluso intenta iniciar sesión (con la contraseña, contraseña), no podrá acceder al shell de MySQL.

Por lo tanto, debe proporcionar al usuario el acceso

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

Los asteriscos en este comando se refieren a la base de datos y la tabla (respectivamente) a las 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 volver a cargar todos los privilegios.

FLUSH PRIVILEGES;

Ahora, todos los cambios estarían en vigor.


No se requieren privilegios de vaciado para los comandos GRANT.
mysql_user

Sí ... estoy de acuerdo ... pero se requiere PRIVILAGES FLUSH cuando modificamos la subvención en las tablas directamente usando declaraciones como INSERT, UPDATE o DELETE ... Gracias @mysql_user
Mathew
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.