elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  crear usuario mysql desde .bat
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: crear usuario mysql desde .bat  (Leído 10,742 veces)
Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
crear usuario mysql desde .bat
« en: 7 Junio 2008, 16:47 pm »

saludos,
estoy intentando crear un usuario de mysql desde .bat y ando un poco confundido en el proceso que sigue .bat para pasar a la siguiente orden

lanzo la orden de logeo
Código:
mysql -h localhost -u root -p
ahora la consola le pide la contraseña, a mi me gustaría que inmediatamente cuando el usuario meta la contraseña de root
la siguiente instrucción se lance sin esperar a que cierre la sesión
Código:
mysql GRANT ALL PRIVILEGES ON tabla.* TO 'userl'@'localhost' IDENTIFIED BY 'pasl' WITH GRANT OPTION;

¿es posible hacerlo?


En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: crear usuario mysql desde .bat
« Respuesta #1 en: 7 Junio 2008, 17:38 pm »

Pues no se si BAT soporte 'here documents' como bash pero supongo que si o al menos debe tener una contraparte.

porque no le pasas la clave de root junto al comando del login? o sea :

mysql -h localhost -u root -pcontrasena

Y ya logeado debes crear un usuario porque esto :

GRANT ALL PRIVILEGES ON tabla.* TO 'userl'@'localhost' IDENTIFIED BY 'pasl' WITH GRANT OPTION;

No crea un usuario, eso otorga todos los privilegios de una tabla a un usuario ya existente. Y tu dices que quieres crear un usuario... no otorgar permisos, o a lo mejor quieres crear un usuario y luego otorgarle permisos. O sea si fuera en bash con un here document :

mysql -h localhost -u root -pcontrasena << EOF
create user 'fulano';
set password for 'fulano'@'%' = password('contrasena');
grant all privileges on tabla.* to 'fulano'@'%';
EOF

Estas seguro que quieres otorgarle 'Grant Option' a dicho usuario??? Grant Option lo usamos en Mysql y Oracle para que ese usuario tenga potesta para otorgarle cualquier permiso de su tabla a otro usuario existente, y en estos casos es mejor que solo root pueda otorgar o quitar permisos y no otro usuario pero ya sabras tu.


En línea

Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: crear usuario mysql desde .bat
« Respuesta #2 en: 7 Junio 2008, 19:37 pm »

antes que nada gracias por la ayuda, andaba algo perdido

el tema estaba en que el password del root la metiese él, pero pidiéndola y luego enviándola en el login supongo que también sirve.

la sentencia que he puesto crea un usuario con todos los privilegios en mysql sobre una tabla (para evitarme el tener que hacer los tres pasos que has puesto)

el usuario tiene que poder dar privilegios a otros para posteriormente si es necesario agregar más usuarios hacerlo desde el creado :X

En línea

Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: crear usuario mysql desde .bat
« Respuesta #3 en: 7 Junio 2008, 20:24 pm »

bueno, he probado con el  << EOF y se cierra la consola dando un error que no puedo ver

la variable p tiene el valor de la contraseña

Código:
mysql -h localhost -u root -p%p% << EOF
GRANT ALL PRIVILEGES ON tabla.* TO 'userl'@'localhost' IDENTIFIED BY 'pasl' WITH GRANT OPTION;
EOF

¿alguna otra sugerencia?


En línea

^Tifa^


Desconectado Desconectado

Mensajes: 2.804


Ver Perfil
Re: crear usuario mysql desde .bat
« Respuesta #4 en: 8 Junio 2008, 00:37 am »

Ok ya si te entendi.

Me habia perdido jeje, quisiera poder ayudarte mas, pero no se BATCH aunque aun asi imagino, que en BATCH se debe poder recibir entradas del teclado, por ende si creas un script podrias poner que la primera opcion que se imprima sea 'contrasena :' y recoger lo que el usuario introduzca y guardarlo en una variable, y usar dicha variable como contrasena en el login de Mysql. O sea por ejemplo.

print STDOUT "contrasena : "
$respuesta = <STDIN>  //Tomamos la entrada del usuario y la guardamos

if (defined $respuesta) { //Aqui se valida si $respuesta esta o no vacia igual puedes comparar con if ($respuesta != "")
$respuesta1 = mysql -h localhost -root -p$respuesta;
if ($respuesta1) {
grant all privileges on basedatos.* to 'fulano'@'%' identified by 'contrasena' with grant option;
}
} else {
print STDOUT "Error No se puede conectar\n"; }


Se que se puede hacer mejor de ahi lol, pero mas o menos vas captando la idea que te expongo verdad :) Ahora traducir eso a BATCH ya no sabria. Espero que alguien te de mejor ejemplo.
En línea

Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: crear usuario mysql desde .bat
« Respuesta #5 en: 8 Junio 2008, 14:58 pm »

si el capturar datos en la entrada no me resulta ningun problema!!


el problema que tengo es que cuando genero la conexión mysql toma el foco y la siguiente instrucción del .bat no se ejecuta hasta que termina la sesion de mysql!!

estoy mirando todos los parámetros que tiene mysql (buff) y creo que he encontrado uno que lo hace -e

pero he optado por meter la consulta en el script que crea la base de datos  (tonto de mi no darme cuenta antes xD)

y como se puede iniciar una entrada de archivo al iniciar sesión wualá

Código:
rem %u% indica una variable con el nombre del user y %p% su contraseña ;D
mysql -hlocalhost -u%u% -p%p% < sql_datos.sql


gracias por intentar ayudarme
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines