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 cualquier lugar, 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 obtengo:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
mysql
mariadb
mysql-error-1142
marioosh
fuente
fuente
FLUSH PRIVILEGES
?flush privileges
no es necesario cuando usagrant
comandos. x4FLUSH PRIVILEGES;
sólo si se modifican las tablas de permisos directamente utilizando frases comoINSERT
,UPDATE
oDELETE
Respuestas:
Así es como creo mis privilegios de "Súper Usuario" (aunque normalmente especificaría un host).
NOTA IMPORTANTE
Si bien esta respuesta puede resolver el problema del acceso,
WITH GRANT OPTION
crea un usuario MySQL que puede editar los permisos de otros usuarios .Por razones de seguridad, no debe usar este tipo de cuenta de usuario para ningún 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.
fuente
myuser
con su propio nombre de usuario personalizado.Esta es una pregunta antigua, pero no creo que la respuesta aceptada sea segura. Es bueno para crear un súper usuario, pero no es bueno si desea otorgar privilegios en una sola base de datos.
%
parece no cubrir las comunicaciones de socket, quelocalhost
es para.WITH GRANT OPTION
solo es bueno para el súper usuario, de lo contrario, generalmente es un riesgo de seguridad.Parece que la actualización para MySQL 5.7+ advierte sobre:
Por lo tanto, configurar la contraseña debe ser con comandos separados. Gracias por comentar de @ scary-wombat.
Espero que esto ayude.
fuente
WITH GRANT OPTION
y orientar una base de datos especificada en lugar de todas (*
).unix sockets
. Cuando se usa ellocalhost
cliente myslq en linux se intenta usar un socket unix en lugar de una conexión TCP al servidor.Esto será útil para algunas personas:
Desde la línea de comando de MySQL:
Lamentablemente, en este punto, newuser no tiene permisos para hacer nada con las bases de datos. De hecho, si newuser incluso intenta iniciar sesión (con la contraseña, contraseña), no podrán acceder al shell de MySQL.
Por lo tanto, lo primero que debe hacer es proporcionar al usuario acceso a la información que necesitará.
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.
Sus cambios ahora estarán vigentes.
Para más información: http://dev.mysql.com/doc/refman/5.6/en/grant.html
Si no se siente cómodo con la línea de comandos, puede usar un cliente como MySQL workbench , Navicat o SQLyog
fuente
flush privileges
no es necesario cuando usagrant
comandos. x4GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost' IDENTIFIED BY 'my_password' WITH GRANT OPTION;
(extraño ... pero cierto)1. Crear la base de datos
2. Cree el nombre de usuario para la base de datos db_name
3. Usa la base de datos
4. Finalmente está en la base de datos db_name y luego ejecuta los comandos como crear, seleccionar e insertar operaciones.
fuente
username
debería tener todos los privilegiosdb_name
pero no elDROP db_name;
privilegio?Este SQL otorga en todas las bases de datos pero solo privilegios básicos. Son suficientes para Drupal o Wordpress y, como detalle, permite una cuenta de desarrollador para proyectos locales.
fuente
Funciona por privilegios en el esquema :)
Opcional: después de
mypasswd
que pueda agregarWITH GRANT OPTION
fuente
Pude hacer que funcione solo agregando
GRANT OPTION
, sin eso siempre recibo permiso denegadofuente
Hola, usé este código para tener el superusuario en mysql
y entonces
fuente
flush privileges
no es necesario cuando usagrant
comandos. x4GRANT
varía entre las versiones de MySQL.Para acceder desde el servidor remoto a la base de datos mydb solamente
Para acceder desde el servidor remoto a todas las bases de datos.
fuente
Para otorgar todos los privilegios en la base de datos:
mydb
al usuario:myuser
simplemente ejecute:o:
La
PRIVILEGES
palabra clave no es necesaria.Además, no sé por qué las otras respuestas sugieren que
IDENTIFIED BY 'password'
se ponga al final del comando. Creo que no es obligatorio.fuente