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

Re: [OT] Permisos de usuarios en MySQL.



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) 

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

> 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

Saludos,

-- 
Camaleón


Reply to: