crear usuario mysql desde .bat

Iniciado por Hans el Topo, 7 Junio 2008, 16:47 PM

0 Miembros y 1 Visitante están viendo este tema.

Hans el Topo

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
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

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


¿es posible hacerlo?
 

^Tifa^

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.

Hans el Topo

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

 

Hans el Topo

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

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?


 

^Tifa^

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.

Hans el Topo

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á

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