[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 20:59, Erick Ocrospoma <zipper1790@gmail.com> escribió:

> 2014-02-07 14:19 GMT-05:00 Ramses <ramses.sevilla@gmail.com>:
>> 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
> 
> Haz un
> 
> mysql> grant all privileges on encuesta_db.* to 'pepe'@'localhost'
> identified by 'pepepass';
> mysql> flush privileges;
> 
> con eso conseguirás que el usuario pepe solo tenga acceso a dicha db.

Erick, con la salida que he puesto antes, creo que sólo tiene acceso a esa base de datos.

El tema está ahora en que no tiene permiso FILE, por lo que parece que es por eso por lo que no puede exportar a un fichero .csv.

He estado leyendo y hablan de que dar permiso FILE a un usuario, puede ser un tanto peligroso...

He leído que FILE es un permiso / privilegio Global, es decir, que creo que no se puede aplicar a una única base de datos, sino que se aplicaría a todas. ¿Estoy en lo cierto?

Bueno, aunque, supuestamente, si al resto de bases de datos no tiene permisos SELECT, DROP, DELE..., tampoco podría exportarlas ni trastearlas, ¿no?.


Saludos,

Ramses

Reply to: