Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Fallo al utilizar GRANT

Estas en el tema de Fallo al utilizar GRANT en el foro de Mysql en Foros del Web. Hola a todos, de principio pedir perdón si no he colocado un buen titulo, pero es que me estoy iniciando en esto. Miren, estoy leyendo ...
  #1 (permalink)  
Antiguo 25/01/2009, 12:30
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Fallo al utilizar GRANT

Hola a todos, de principio pedir perdón si no he colocado un buen titulo, pero es que me estoy iniciando en esto.

Miren, estoy leyendo este manual de WikiLearning, concretamente estoy en la parte que dice:

Cita:
Vamos a añadir un usuario nuevo: mysql>insert into user (Host,User,Password) values("localhost","ghost",password('ghost'));

En la tabla db, tenemos los permisos que tiene cada usuario para una determinada base de datos, si puede hacer selects, inserts... deberíamos hacer una nueva insert en esta tabla... todo esto puede ser bastante "pesado" por lo que se creó una herramienta para manejar más fácilmente todo esto, el comando GRANT.
Vamos a repetir lo anterior pero con este nuevo comando. Antes borramos el usuario creado con:

mysql>DELETE FROM user WHERE User="ghost" and Host="localhost";
y lo creamos usando GRANT: GRANT privileges(columns) ON what TO user IDENTIFIED BY "password" [WITH GRANT OPTION];
El problema se origina cuando escribo esto en la terminal:

Código:
mysql>DELETE FROM user WHERE User="ghost" and Host="localhost";
y lo creamos usando GRANT: GRANT privileges(columns) ON what TO user IDENTIFIED BY "password" [WITH GRANT OPTION];
Cuando lo escribo me aparece esto:

Código:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'privileges(columns) ON what TO user IDENTIFIED BY "password" [WITH GRANT OPTION]' at line 1
Qué puede ser?

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #2 (permalink)  
Antiguo 26/01/2009, 01:50
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Fallo al utilizar GRANT

Cita:
GRANT privileges(columns) ON what TO user IDENTIFIED BY "password" [WITH GRANT OPTION];
Los corchetes de Whith Grant OPTIONS... esos corchetes indican que es opcional poner o no esa parte de la sentencia pero no hay que poner los en la sentencia real....

lo marcado en azul creo que hay que cambiarlo por valores reales....

No me he mirado mucho el manual que citas pero creo que sigue la logica de poner el promt de mysql quando da una sentencia real la equivalente a la que estamos hablando esta dos lineas mas a bajo...

Cita:
mysql>GRANT ALL ON BDghost.* TO ghost@localhost IDENTIFIED BY "ghost";
en este caso no le dan la GRANT OPTION al nuevo usuario ghost...

Quim

Última edición por quimfv; 26/01/2009 a las 07:43
  #3 (permalink)  
Antiguo 26/01/2009, 04:58
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Fallo al utilizar GRANT

A lo dicho por Quimfv, agrego: Copiaste el modelo del manual.. y copiaste los dos renglones, incluyendo la explicación.
Lo que se supone intentabas poner es:
Código sql:
Ver original
  1. DELETE FROM USER WHERE USER="ghost" AND Host="localhost";

De todos modos es un error un tanto grave, porque no se eliminan usuarios de esa forma.
Los usuarios se crean por sentencias DDL, por lo que se deben destruir con sentencias DDL, porque su existencia no está sólo en la tabla USER, sino en otras parte. En esencia, un usuario es un objeto de la base con la misma categoría de una tabla o un SP o un trigger, y no un dato.
La sentencia para eliminar un usuario es DROP, no DELETE:
Código sql:
Ver original
  1. DROP USER "ghost";
Si lo que pretendes es eliminar el permiso de loguearse en una base o en un servidor, lo que debes usar es REVOKE. De esa forma el usuario no se elimina, sino solamente se reduce su permiso a usar determinadas cosas. Primero debes eliminarle todos los privilegios:
[highligh=sql]
REVOKE ALL PRIVILEGES
TO "ghost";
[/highlight]
Y luego recién darle los que corresponde.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 26/01/2009 a las 05:21
  #4 (permalink)  
Antiguo 26/01/2009, 08:54
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Respuesta: Fallo al utilizar GRANT

Ok, muchas gracias a los dos. Borraré de bien ese usuario, y pondré lo que me dice QuimvF, pero..., no se por que tengo que cambiar esto:

Código sql:
Ver original
  1. ...privileges(COLUMNS) ON what...

Que pongo para reemplazar eso??

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #5 (permalink)  
Antiguo 26/01/2009, 08:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Fallo al utilizar GRANT

Ese nivel de privilegios solamente tiene sentido si vas a limitar a un usuario a leer sólo ciertas columnas de ciertas tablas, y además sólo tiene sentido si reemplazas "COLUMNS" por la lista de columnas de tablas para los que autorizas a leer.
¿Vas a hacer eso?
¿Has planeado un nivel de restricciones por usuarios de grano fino?
¿Has diseñado un conjunto de roles o perfiles de usuarios de cierto nivel de complejidad para administrar usuarios?

Además, lo que va en privileges(columns) es la lista de privilegios que concedes...
Cita:
ALL [PRIVILEGES]: Da todos los permisos simples excepto GRANT OPTION
ALTER: Permite el uso de ALTER TABLE
ALTER ROUTINE: Modifica o borra rutinas almacenadas
CREATE: Permite el uso de CREATE TABLE
CREATE ROUTINE: Crea rutinas almacenadas
CREATE TEMPORARY TABLES: Permite el uso de CREATE TEMPORARY TABLE
CREATE USER: Permite el uso de CREATE USER, DROP USER, RENAME USER, y REVOKE ALL PRIVILEGES.
CREATE VIEW: Permite el uso de CREATE VIEW
DELETE: Permite el uso de DELETE
DROP: Permite el uso de DROP TABLE
EXECUTE : Permite al usuario ejecutar rutinas almacenadas
FILE: Permite el uso de SELECT ... INTO OUTFILE y LOAD DATA INFILE
INDEX: Permite el uso de CREATE INDEX y DROP INDEX
INSERT: Permite el uso de INSERT
LOCK TABLES: Permite el uso de LOCK TABLES en tablas para las que tenga el permiso SELECT
PROCESS: Permite el uso de SHOW FULL PROCESSLIST
RELOAD: Permite el uso de FLUSH
REPLICATION CLIENT: Permite al usuario preguntar dónde están los servidores maestro o esclavo
REPLICATION SLAVE: Necesario para los esclavos de replicación (para leer eventos del log binario desde el maestro)
SELECT: Permite el uso de SELECT
SHOW DATABASES: SHOW DATABASES muestra todas las bases de datos
SHOW VIEW: Permite el uso de SHOW CREATE VIEW
SHUTDOWN: Permite el uso de mysqladmin shutdown
SUPER: Permite el uso de comandos CHANGE MASTER, KILL, PURGE MASTER LOGS, and SET GLOBAL , el comando mysqladmin debug le permite conectar (una vez) incluso si se llega a max_connections
UPDATE: Permite el uso de UPDATE
USAGE: Sinónimo de “no privileges”
GRANT OPTION: Permite dar permisos
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 26/01/2009, 09:02
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Respuesta: Fallo al utilizar GRANT

A ver, es que yo quiero seguir ese tutorial para aprender, la verdad es que lo veo un poco sucio (o no?), pero..., de todas maneras, por qué dices eso??

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #7 (permalink)  
Antiguo 26/01/2009, 09:25
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Fallo al utilizar GRANT

Cita:
por qué dices eso
¿Por qué digo cuál de todas las cosas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 26/01/2009, 10:24
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Respuesta: Fallo al utilizar GRANT

Creo que formule mal la pregunta, asi que perdona, ya no se ni por donde voy, a ver, se supone que siguiendo el manual no debería de tener problemas, pero..., me estais diciendo el fleje de cosas que no están :S, creo que debería de cambiar de manual, no creeis?

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #9 (permalink)  
Antiguo 26/01/2009, 10:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Fallo al utilizar GRANT

Cita:
Iniciado por Distriker Ver Mensaje
Creo que formule mal la pregunta, asi que perdona, ya no se ni por donde voy, a ver, se supone que siguiendo el manual no debería de tener problemas, pero..., me estais diciendo el fleje de cosas que no están :S, creo que debería de cambiar de manual, no creeis?

Saludos
Creo que antes de meterte a administrar usuarios deberías leer un poco sobre los conceptos más elementales de Bases de Datos, al menos en lo que se refiere a los usuarios.
Una idea es que leas el manual de referncia de MySQL:
5.6. El sistema de privilegios de acceso de MySQL
5.6.1. Qué hace el sistema de privilegios
5.6.2. Cómo funciona el sistema de privilegios
5.6.3 Privilegios de los que provee MySQL
5.6.4 Conectarse al servidor MySQL
5.6.5 Control de acceso, nivel 1: Comprobación de la conexión
5.6.6 Control de acceso, nivel 2: comprobación de solicitudes
5.6.7 Cuándo tienen efecto los camios de privilegios
5.6.8 Causas de errores Access denied
Una vez vistos algunos de estos conceptos, se volverá más claro el tema de la importancia de privilegios en los usuarios.

Para darte una idea de la importancia de todo esto y sus consecuencias:
Supongamos un área de Administración de Personal de una empresa. El Gerente del área obviamente tiene acceso a toda la información referida a cada empleado, que está en una o más tablas de la base, pero ¿realmente necesita tener acceso a los datos del sueldo, las cargas sociales y/o los descuentos que se le hacen al sueldo del empleado? Muy probablemente no.
Entonces, lo que el DBA hace es otorgarle a ese Gerente el privilegio de ver solamente algunas columnas de esas tablas, pero no ver el resto de la información.
A su vez, Cada empleado del área tiene un rango de privilegios inferior al Gerente. De esa forma, ellos pueden ver de los empleados, un grupo de datos aún más restringidos.
En este contexto aparecen varios detalles:
1. No todos los usuarios pueden ni deben acceder a toda la información.
2. Ni siquiera los usuarios de la misma jerarquía tienen acceso a los mismos datos (¿Para qué quiere el Gerente de Ventas saber los horarios de trabajo de los empleados? ¿Para qué quiere ver el de Administración la información de los balances de la empresa?)
3. Existen cierto tipo de usuarios que tienen los mismos privilegios globales, como por ejemplo, los emplea,dos del mismo departamento. En esos casos, se dice que los que cumplen el mismo rol en la empresa, tienen los mismos privilegios base (de allí el concepto de ROL vinculado a la función).
4. Ciertos miembros de la empresa requieren el mismo acceso, a pesar de estar en áreas distintas (Los de la Gerencia de Proyectos, por ejemplo). De allí el concepto de perfiles.

En el caso de las bases de datos en Web, existen al menos tres perfiles básicos:
Usuarios de consulta, usuarios de gestión y superusuarios. Los primeros usan, los segundos aportan y gestionan, pero no borran, y los terceros tienen el dominio completo.

¿Se va entendiendo la problemática?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 26/01/2009, 11:02
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Respuesta: Fallo al utilizar GRANT

Haa, ok, pues muchas gracias gnzsoloyo.

En esa web tendré un tutorial completo de MySQL?

Si, ya entiendo el problema.

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
  #11 (permalink)  
Antiguo 26/01/2009, 11:09
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Fallo al utilizar GRANT

Es el manual oficial. Todos los tutoriales que encuentres en la red están basados en él en mayor o menor medida.
De hecho, muchos de esos plagian parte del texto y hasta los ejemplos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #12 (permalink)  
Antiguo 26/01/2009, 11:13
Avatar de Distriker  
Fecha de Ingreso: marzo-2008
Ubicación: Las Palmas De Gran Canarias
Mensajes: 924
Antigüedad: 16 años, 1 mes
Puntos: 23
Respuesta: Fallo al utilizar GRANT

Ok, pues muchas gracias Gnzsoloyo. yo seguiré entonces con los manuales que me acabas de pasar .

Saludos
__________________
Si no te quejas, nunca conseguiras nada, pero si te quejas siempre lo perderás todo.
Una mala acción da fruto a un mal Karma.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:07.