Gestion de usuarios de mysql

12 05 2008

haber explico lo que he conseguido hasta ahora, que es saber como se crea un superusuario que tiene acceso a todo:

mysql> GRANT ALL PRIVILEGES ON *.* TO GOD IDENTIFIED BY ‘462493’ WITH GRANT OPTI
ON
-> ;
Query OK, 0 rows affected (0.38 sec)

Bien para hacer un usuario restringido, hay que decir que acciones quieres que pueda hacer (alter,update,create.. etc) y que tablas puede ver, eso se explica aqui abajo:

Para añadir más usuarios usaremos el comando GRANT:

GRANT priv_type [(column list)] [, priv_tipe[(column_lis)] …]
ON {table_name | * | *.* | db_name.*}
TO user_name [IDENTIFIED BY ‘password’]
[, user_name [IDENTIFIED BY ‘password’] …]
[WITH GRANT OPTION]

Por hacer un resumen un poco mejor se quedaría en esto:

En MySQL existen cinco niveles distintos de privilegios:

  • Globales: se aplican al conjunto de todas las bases de datos en un servidor. Es el nivel más alto de privilegio, en el sentido de que su ámbito es el más general.
  • De base de datos: se refieren a bases de datos individuales, y por extensión, a todos los objetos que contiene cada base de datos.
  • De tabla: se aplican a tablas individuales, y por lo tanto, a todas las columnas de esas tabla.
  • De columna: se aplican a una columna en una tabla concreta.
  • De rutina: se aplican a los procedimientos almacenados. Aún no hemos visto nada sobre este tema, pero en MySQL se pueden almacenar procedimietos consistentes en varias consultas SQL

Para hacer esto se usa una opcion que se llama grant. Mediante unos ejemplos os explicare cada cosa.

  • GRANT SELECT, INSERT, UPDATE, DELETE ON nombrebd.* to usu1 identified by ‘laclave’ (Se dara al usuario los privilegios puestos detras del gant, para la BD nombre, al usuario usu1 con su respectiva clave )
  • GRANT ALL PRIVILEGES ON *.* to superusuario@localhost identified by ‘suclave’ (Se dara todos los privilegios a todas las BD de localhost)
  • GRANT SELECT ON *.* to superusuario@’%’ identified by ‘suclave’
  • GRANT USAGE ON *.* to nada@localhost (No tiene privilegios para nada, sin opciones a ver la BD)

Para poder ver los privilegios dado a usuarios y demas existe esta funcion:

SHOW GRANTS FOR user (mostrara los privilegios que tiene cierto usuario)

Para borrar privilegios se usa esta:

REVOKE privilegios ON base_datos FROM usuario

Para borrar un user:

DROP USER user

Bueno hasta ahora las pruebas que hemos echos con dos BD diferentes, una la del PBL actual y la otra Scott, bien en mi portatil y en el PC de la gela, han sido en ambas no satisfactorias del todo.

Para facilitar el problema que tengo os lo pondre de forma visual:

Base de datos que se va usar MYDB

Objetivo que se quiere lograr, crear un usuario con objetivos de Admin, para poder hacer de todo en esa BD.

Empezamos, nos metemos en mysql como root y dentro de esta cargamos esta orden.

grant all privileges on mydb.* to admin identified by ‘clave’ (Se creara un usuario llamado admin con su pass que sera clave, este tendra todos los privilegios en la base de datos mydb)

Una vez creado y ver que todo esta Ok, se saldra de mysql.

Una vez fuera volveremos a logearnos, para ello pondremos mysql -u admin -p (admin sera el usuario que queremos usar, y la p sera por que tiene password), nos pedira el pass le meteremos clave y automáticamente se entrar a mysql.

Una vez dentro si utilizamos la orden show databases, veremos las que nos aparecen, para mi sorpresa aparecen todas cosa que no se por que es, y es aqui uno de los errores que nos da.

Como no sabemos por que pasa eso utilizaremos la orden show grants for admin (orden que nos mostrara los privilegios dados a admin), una nueva sorpresa nos aparecerá al hacer esto.

GRANT USAGE ON *.* TO ‘admin’@’%’ IDENTIFIED BY PASSWORD ‘4aa1274174603de6’

GRANT ALL PRIVILEGES ON `mydb`.* TO ‘admin’@’%’

SI os fijais en la segunda linea es el privilegio que se crea arriba, pero por el contrario no se por que mysql nos crea el primer privilegio, que justamente quiere decir tener privilegios para todas las bases que esten en localhost, he aqui mi duda.

Bueno en resumen eso es todo paso a paso, y como se deberia hacer y comprar, como habeis podido observar hay algunos errores que tenemos que solucionar.

Yo sigo haciendo pruebas desde el momento que publico esto, en el caso de haber algun cambio modificare el post.

Link de una pagina interesante que explica todo esto

Todo arreglado las tablas que se ven son de mysql a secas, y para crearlo en windows se tiene que poner @ algo por ejm, localhost.

Un saludo a todos.


Acciones

Information

4 responses

12 05 2008
Igor Ordoñez

SI luego te pones hacer pruebas veras como fallan cosas que hemos estado mirando yo y montejo.

Bueno pues eso he encontrado este PDF resumen.

http://www.uv.es/~jgutierr/MySQL_Java/CursoMysql_ses1.pdf

Aparte de la pagina mysql con clase.

12 05 2008
Daniel García

Creo que esta mal lo de
# GRANT ALL PRIVILEGES ON *.* to superusuario@localhost identified by ‘suclave’ (Se dara todos los privilegios a todas las BD de localhost)

Creo que no hace eso, sino que le da todos los privilegios en todas las bases de datos y todas las tablas a un usuario llamado superusuario que exista en localhost. Así, si desde mi pc también tengo un user llamado superusuario e intento conectarme a una base de datos remota, como no resido en localhost, no me dejará conectarme. Vamos estoy segurisimo xD

13 05 2008
endikamg

CCS FORO:
http://www.ccsinfo.com

el buscador tiene bastantes cosas interesante pa mirar

14 06 2010
Soy un Semidios

Gestión de usuarios en mysql…

referencia web nº1…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: