[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: [OT] Permisos de usuarios en MySQL.



El 07/02/2014, a las 19:58, Camaleón <noelamac@gmail.com> escribió:

> El Fri, 07 Feb 2014 18:30:22 +0100, Ramses II escribió:
> 
> (...)
> 
>>>> mysql -u pepe --password=pepepass mibasededatos -e "SELECT * FROM
>>>> tabla where ...." -B > fichero_salida.csv
>>>> 
>>>> Me da un error diciendo que no tiene permisos.
>>> 
>>> ¿Qué error, exactamente? Aunque me lo imagino, pero nunca está de más
>>> confirmar :-) Por otra parte, ¿te permite ejecutar el "SELECT...
>>> FROM..." sin el volcado? En cualquier caso, esta página te puede dar
>>> alguna idea:
>> Esta es la salida del comando:
>> 
>> # mysql -u pepe --password=pepepass encuesta_db -e "SELECT * FROM
>> encuesta where MONTH(fecha)=MONTH(CURDATE()) INTO OUTFILE
>> '/consultas/pruebas.csv' FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED BY
>> '\"' LINES TERMINATED BY '\r\n'"
>> ERROR 1045 (28000) at line 1: Access denied for user 'pepe'@'localhost'
>> (using password: YES)
>> #
> 
> Gracias :-)
> 
>> El SELECT... FROM... lo permite sin problemas en MySQL entrando con el
>> user "pepe".
> 
> Okay.
> 
> (...)
> 
>>> Comprueba los permisos del usuario (show grants...) y compáralos con los
>>> que tiene el administrador.
>> 
>> Los permisos que tiene "root" son:
> 
> (...)
> 
>> | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY
>> PASSWORD 'xxxxxxx' WITH GRANT OPTION  |
> 
>> Los permisos que tiene "pepe" son:
> 
> (...)
> 
>> | GRANT USAGE ON *.* TO 'pepe'@'localhost' IDENTIFIED BY PASSWORD
>> 'xxxxxxxxxxxxxx'   |
>> | GRANT ALL PRIVILEGES ON `encuesta`.* TO 'pepe'@'localhost' WITH GRANT
>> OPTION            |
> 
> (...)
> 
> Hum... dos apuntes:
> 
> 1/ Tengo mis dudas en la sintaxis que usas para seleccionar la base de 
> datos (`encuesta`.*), comprueba que sea la correcta. Estoy leyendo el 
> manual pero no me queda claro el uso de esas comillas simples invertidas 
> ni si la base de datos se llama así, exactamente.
> 
> (supongo que la sintaxis estará bien porque si no te daría un error al 
> ejecutar el comando pero el nombre de la base de datos sobre la que 
> quieres aplicar los privilegios sí tiene que coincidir) 

Camaleón, esas son las salidas del comando "show grants;" habiendo entrado en mysql con cada usuario. Realmente la base de datos es "encuesta_db", sólo que al pegar los datos aquí, se ha perdido el _db.

> 2/ No has especificado contraseña para el usuario pepe (no hay 
> "IDENTIFIED BY PASSWORD") ¿es correcto?

Eso es lo que aparece al entrar en MySQL con el usuario "pepe", con su contraseña, y ejecutar el comando "show grants;".

>> Puede que el tema esté en lo que han comentado varios de ustedes, en la
>> asignación del permiso FILE, pero como he estado leyendo, parece que es
>> un permiso que se tiene que asignar sobre todo, y no sólo sobre una base
>> de datos en concreto.
>> 
>> Yo quiero que ese usuario "pepe" solo tenga acceso a "encuesta_db", y
>> nada más.
> 
> Acceso y permisos para volcar los datos a un archivo, que creo que ahí es 
> donde tienes el problema:
> 
> http://dev.mysql.com/doc/refman/5.1/en/select-into.html
> 
> El comando que quieres ejecutar necesita de permisos concretos, según 
> parece.
> 
>> Ahora, si estoy en lo cierto del permiso FILE, parece que lo más viable,
>> en cuanto a seguridad se refiere, es ejecutar ese comando con el usuario
>> "root". ¿Estoy en lo cierto?.
> 
> Según entiendo, FILE es un "privilegio" que tendrías que activar/
> habilitar sobre tu usuario para que pueda realizar la acción que pides. 
> No es un comando.
> 
> http://dev.mysql.com/doc/refman/5.1/en/privileges-provided.html#priv_file

No he dicho que sea un comando, digo que es un permiso. A lo que me refería con lo de ejecutar el comando con el usuario "root", es a ejecutar el "mysql -u root --pass.........".


Saludos,

Ramses

Reply to: