usuarios y privilegios mysql

Upload: pepe-lopez

Post on 27-Feb-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 Usuarios y Privilegios MYSQL

    1/10

    Us uari os y pr i v il e g i o s

    El ac ceso a l serv idor MySQ L est con t ro lado p or usua r ios y p r ivileg io s. Lo s

    u suar ios del ser vidor MyS Q L no t ienen ni ng una co rr espondenci a con los

    u su arios del sistema oper a t ivo. Au nqu e en la prc tic a es com n que al g n ad -

    m inist rad o r de MyS Q L asi gne los m ism os nom b r es qu e los usu arios t ienen en el siste m a , son m eca nism os totalm ente ind epend ientes y suele ser acons e jabl e

    en genera l.

    El us uar io ad m ini str ado r d e l sist em a MyS Q L se llam a root . Igual que el supe -

    r u su ari o d e los sistem a s t ipo UNI X.

    Adems del usu ario root , las ins talaci ones nuev as de MySQL in cluyen el usua -

    rio a nni m o, qu e t iene permi sos sob r e la ba se de da tos test . Si qu er emos, t am -

    b in podemo s r estr ing ir lo asi gnnd ol e u n a contr asea . El usua r io anni m o de

    MySQ L se r ep r esen ta p or u n a caden a vaca. Vem os o t ra f orm a de as ign a r co n -

    tr ase as a un usu a rio , desd e el cliente d e m ysq l y com o us uar io root :

    mysql> set password for ''@'localhost' = password( nuevapasswd );

    La adm inis t ra ci n de priv ilegi os y usu a r ios en MySQ L se real iza a t r av s de las se ntenci as:

    GRA NT. O torg a pri vilegios a u n u su a rio, en ca so de no exist ir , se cr ea r el

    us u ari o .

    RE VOK E. Elimi n a los p r ivileg ios de u n u sua rio existen t e.

    SET PA SSW O RD . Asi gna una cont r asea.

    DROP USER . Elim ina un u suar io .

    La sen t encia GRANT

    La sin taxis sim p lificad a d e gr a n t consta de tres sec ciones. No pu ede omit ir se

    ni ngu n a, y es im por tant e el or den de las mi sm as:

    gr a n t li st a d e pr iv il egi os on ba se de da tos . t ab l a to usua r i o

    Ej e m p l o

    Cr eacin de un nuevo usua r io al qu e se otor ga algunos pr ivilegios

    mysql> grant update, insert, select -> on demo.precios -> to visitante@localhost ;

    En la p r im er a lne a se especif ican los p r iv ileg ios que ser n o tor gados, en este caso se permite actu aliz ar (up dat e), in sert ar (in sert ) y con su lt ar (sel ect ). La segund a lne a especif ica qu e losp r iv ileg ios se ap lican a la tabla p r ecios de la base de dato s dem o. En la lt ima lne a se enc uen - t r a el n om br e del usuar io y el equ ipo desd e el qu e se va a per m it ir la con exin .

  • 7/25/2019 Usuarios y Privilegios MYSQL

    2/10

    El co ma n do gr ant cr ea la cu en t a si n o existe y, si existe, agr ega los p r iv ilegios

    es peci ficad os. Es po sible as ignar una co ntr asea a la cu enta al m ism o t iem po

    qu e se cr ea y se le o t or ga n p r ivileg ios:

    mysql> grant update, insert, select -> on demo.precios -> to visitante@localhost identified by nuevapasswd ;

    En la m ism a sentenc ia es po sible tam bi n ot org a r perm isos a m s de u n u su a - r io y asignar les, o no, contr asea:

    mysql> grant update, insert, select -> on demo.precios

    -> to visitante@localhost, -> yo@localhost identified by nuevapasswd , -> [email protected];

    Es pecificacin d e lu gar e s o r ig en de l a conexin

    MySQL pr opor ciona mec ani smos para perm it ir qu e e l u su ario r ea lice su co -

    nex in des de dif erent es equ ipos dentro de u n a r ed espe cfica , s lo des de u neq ui p o, o n icam en te desd e el p r op io serv id or.

    mysql> grant update, insert, select -> on demo.precios -> to visitante@ %.empresa.co m;

    El car cter % se ut il iza de la mi sm a f orm a qu e en el co m a n d o lik e : su st itu ye a

    cu a lqu ie r ca d en a de ca ra ct er es . En es te caso , se perm it ir a e l acc eso d el usu a rio 'vi sitante ' (con contr asea , si la tu vi ese def ini da) desde cua lqu ier equ ipo del

    domini o 'empre sa. com'. Ob sr vese que es n ece sa rio en t r ec omi lla r e l n omb re

    del equipo ori gen con el f in de qu e sea acept ado po r MyS Q L. Al igua l qu e enli k e , puede uti lizar se el ca r cter _.

    En tonces, par a per m it ir la ent r ada desd e cu al qui er equipo en In terne t , esc r ib i-

    ram os :

    -> to visitante@ %

  • 7/25/2019 Usuarios y Privilegios MYSQL

    3/10

    Ob tendr am os el mismo resu lt ado omit iend o el nombr e del eq ui p o or igen y

    es cri b iendo simple m ente el nombr e del usua rio:

    -> to visitante

    Los a n fitri ones vl id os tam b in se pued en espec if ica r con su s d irecc ione s IP.

    to [email protected] to visitante@ 192.168.128.%

    Los ca r acter es % y _ no se pe rm it en en los nomb r es de los u su a rios .

    Es peci fi caci n d e base s d e datos y tabl as

    De spus de anal iza r las opc iones r efe rent es a los lu ga res de conexi n per m it i- d os, veam os a h ora cm o pod em os lim itar los p r iv ilegi os a bases d e d a tos, ta -

    b las y co lum n as.

    En el sigu ient e ejem plo otorg am os pri vilegi os sobr e tod as la s tab las de la ba se

    de da tos dem o.

    mysql> grant all -> on demo.* -> to visitante @l ocalhost ;

    Podem o s obtener el m ism o r esul tad o de es ta form a :

    mysql> use demo; mysql> grant all

    -> on * -> to visitante @l ocalhost ;

    De igu a l m odo, a l especif ica r s lo e l n om b r e d e u n a t ab la se in t er p r eta r qu e per t enec e a la base de dato s en u so:

    mysql> use demo; mysql> grant all -> on precios -> to visitante @l ocalhost ;

  • 7/25/2019 Usuarios y Privilegios MYSQL

    4/10

    FUOC P06/ M210 9/0 2151 42 Base s d e dato s en MySQ L

    Opciones para la clausula on d el com ando grant Op cin Sig n if icad o

    *.* Tod as las b ases de d atos y tod as las tab las base.* Todas las tablas de la ba se de da tos espec ificada tabla Tabla especificada de la ba se de da tos en u so

    * Todas las tablas de la ba se de da tos en u so

    Es pecificacin d e colu m n as

    A continu acin pre sentamos u n ejempl o d ond e se especi fican las co lu m n as

    sob r e la s que se otorg an pri vilegi o s con el com and o grant :

    mysql> grant update (precio,empresa) -> on demo.precios -> to visitante@localhost;

    Podemos especi fica r pr ivi leg ios d ife rent es par a cada co lumna o grupos de co - lu mn as:

    mysql> grant update (precio), select (precio, empresa) -> on demo.precios -> to visitante@localhost;

    T i p o s d e pr i v il eg i o s

    MyS Q L pr op or cion a una gr an var ied ad de tipo s d e pri vilegi os.

    Pr ivi leg ios r elaciona d os con t ab las: alter , create , delete , drop , in d ex , in - sert , sel ec t , update

    Algun os p r iv ilegios ad min ist ra t ivos: file, p r oc cess , sup er r eload , r eplica t ion

    client, gr ant op tio n , shutd own

    Algun os p r iv ilegios p ara f in es div er sos : lo ck ta b l e s, sh ow datab a se s, cr ea - te

    temporary tab l es .

    El p r iv ilegio al l ot org a todos los p r ivileg ios excep tua n do el p r ivilegio gran t

    op t i on . Y el p r iv ilegio u sag e n o o t or ga n in gu n o, lo cua l es t il cuan do se desea ,

    por ejemplo, simpleme nt e camb ia r la cont ra se a :

    grant usage

    on *.* to visitante@localhost identified by secreto ;

  • 7/25/2019 Usuarios y Privilegios MYSQL

    5/10

    FUOC P06/ M210 9/0 2151 43 Base s d e dato s en MySQ L

    Tipos de p r ivilegios en MySQL Tipo de pr ivile g io Op e r ac in qu e pe rmi t e

    all [p rivilege s] Otorg a tod os los priv ileg ios excepto gra n t optio n

    usa g e No otorg a ningn priv ileg io

    alte r Pr ivilegio para alte ra r la estructura de un a tab la

    cre a te Per mi te el u so de cre a te tab le

    de le t e Per mi te el u so de de le te

    dro p Per mi te el u so de dro p tabl e

    ind ex Per mi te el u so de ind ex y dr op ind ex

    ins e rt Per mi te el u so de ins e rt

    se lect Per mi te el u so de se lect

    up da te Per mi te el u so de up da t e

    f ile Perm ite le u so de se lect . . . into outf ile y load d a ta inf ile

    pro ce ss Per mi te el u so de show fu ll pr oc ce s list su pe r Perm ite la eje cucin de co mand os de supe r visin

    re lo ad Per mi te el u so de flu sh

    re p licat ion clie nt Pe rm ite p r eguntar la localizac in de m aestro y esclav o

    re p licat ion slave Pe rm ite leer los bin l og del m aestro

    gra n t op t ion Per mi te el u so de gra n t y re vo ke

    sh u tdo wn Pe rm ite da r d e baja al se rvidor

    lock tab le s Per mi te el u so de lock tab le s

    sh o w t able s Per mi te el u so de sh ow tab le s cre a te t e mpo r a r y tab le s Per mi te el u so de cre a te te mp ora r y tab le

    En ent ornos gr andes, es f r ecu ente enc ont rar se en la neces idad de delegar el

    tr ab ajo de ad m ini str a r u n ser vid or de bases d e d a tos par a que o t ros u suar ios,

    ad em s de l adm inis t rad o r , pu ed an r espo n sab ili zarse de o t or ga r pr ivi leg ios so -

    b r e una base de dato s pa rti cul ar . Esto se pu ede ha cer en MyS Q L con el pr ivi le-

    gio grant option :

    mysql> grant all, grant option -> on demo.* -> to operador@localhost;

    El m ism o res u lt ad o se pu ed e obtener con la sigui ente sintax is al ter n ativ a:

    mysql> grant all -> on demo.* -> to operador@localhost -> with grant option ;

  • 7/25/2019 Usuarios y Privilegios MYSQL

    6/10

    De est e modo el usu a rio op e r ad or pod r d isponer de tod os los pr ivi leg ios sobr e la base de da tos demo, in clui do el de con t ro la r el acceso a o t r os u sua rios .

    O p ciones de en cr i p taci n

    MyS Q L pue de esta blecer conex iones seg u ra s enc r iptndola s media n te e l pr o - to co lo SSL*; d e es ta m anera, los da to s que se tr ansm it en (ta n to la co nsul ta , en

    u n sentido, como el resu lta do, en el otr o) ent r e el cliente y el se rvi dor es tar n

    pr o tegi d os co ntr a int r us os. Para especi fica r que u n usu ario debe conec tar se

    ob liga t ori am en te con este p r o t ocolo, se ut il iza la clu su la re q u i r e :

    * Secur e Soc ket s Layer

    mysql> grant all -> on *.* -> to visitante@localhost

    -> require

    ssl;

    Las con exion es encr ip tada s ofr ecen pr ot ecci n con tr a el r obo de in f or m acin , per o su pon en u n a car ga adi cion al par a el ser vicio, qu e deb e de senc r ipt ar la pet icin del clien te y en cr ip tar la r espu esta (adem s de un pr oce so m s lar go de n egociacin al con ectar ), por ello, m er m anel r end imi ent o del SGBD.

    L m i tes de uso

    Los r ecur sos f sicos d el ser vid or sie m pr e son lim it ados: si se conectan m u chosu su arios a l m ismo t iempo a l se r vid or y rea liza n cons u lt as o ma ni pu la ciones de

    dato s compleja s, es prob abl e qu e pued a decaer el rendi m iento nota blemente.

    Un a posi ble solu cin a este probl ema es limi tar a los u suar ios el tr aba j o qu e

    pu ed en pe d ir al ser vidor con tr es pa r metr os:

    Mxim o nmer o de conex iones por hor a .

    Mxim o nmer o de consu lta s po r ho r a .

    Mxim o nm er o d e ac tual izaci ones po r ho r a .

    La sint axi s de es tas limit aciones es como se mue stra a continu acin:

    mysql> grant all -> on *.* -> to -> with MAX_CONECTIONS_PER_HOUR 3 -> MAX_QUERIES_PER_HOUR 300 -> MAX_UPDATES_PER_HOUR 30;

  • 7/25/2019 Usuarios y Privilegios MYSQL

    7/10

    FUOC P06/ M210 9/0 2151 45 Base s d e dato s en MySQ L

    Elim in a r p r ivi l egios

    El coma n d o re v oke perm ite el im in ar p r iv ilegios o to r ga do s co n g r ant a lo s

    u suar ios. Veamos un ejemplo repr esent a ti vo:

    revoke all

    on *.* from visitante@localhost;

    Al ejecu tar este comando se le ret ir an al u sua rio vi sit a n t e t odo s su s pri vilegi os sob r e tod as la s bas es de d a tos, cu ando se conecta desd e lo ca lho st .

    El coma n do an t er ior n o re t ir a to dos los p r ivileg ios del u sua r io visi ta

    nte , s lo selos r e ti ra cu ando se conec ta desde lo c a l h ost . Si e l usua rio se conec ta desd e o t r a

    loc a lida d (y te n a p ermi so p a ra h acerlo) sus pr ivi leg ios per m a n ecen in tac tos.

    El i m i nar usuar i o s

    Ant es de proce der a la el imi n aci n de un u sua rio, es nec esar io aseg ur arse de

    qu e se le han qu ita do pri m er o tod os su s pr ivi leg ios. Un a vez as egu r ad o es te

    deta lle, se pr ocede a eli m in ar lo m ed ian t e el com an d o dr o p user:

    mysql> drop user visitante;

    La bas e de datos de pr i v il eg i o s: m y sq l

    MySQ L al m acen a la inf o rm ac i n so b r e los us uar ios y sus p r iv ilegi o s en u n a

    base de da tos com o cual qui er otr a , cu yo nom b re es mysq l . Si ex plor am os su

    es tru ctu ra, ent enderemos la mane ra como MySQ L al m acen a la inf orm ac in

    de su s us u arios y p r iv ilegios:

    mysql -u root -pmysql> use mysql;mysql> show tables; +-----------------+ | Tables_in_mysql | +-----------------+| columns_priv | | db | | func | | host | | tables_priv | | user | +-----------------+

  • 7/25/2019 Usuarios y Privilegios MYSQL

    8/10

    mysql> show columns from user; +-----------------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+------------------+------+-----+---------+-------+ | Host | char(60) binary | PRI | | | | | User | char(16) binary | PRI | | | | | Password | char(16) binary | | | | | | Select_priv | enum('N','Y') | N | | | | | Insert_priv

    | enum('N','Y')

    |

    | N

    |

    |

    |

    | Update_priv | enum('N','Y') | N | | | | | Delete_priv | enum('N','Y') | | N | | | | Create_priv | enum('N','Y') | N | | | | | Drop_priv | enum('N','Y') | N | | | | | Reload_priv | enum('N','Y') | | N | | | | Shutdown_priv | enum('N','Y') | N | | | | | Process_priv | enum('N','Y') | N | | | | | File_priv | enum('N','Y') | | N | | | | Grant priv | enum('N','Y') | | N | | | | References_priv | enum('N','Y') | | N | | | | Index_priv | enum('N','Y') | | N | | | | Alter_priv | enum('N','Y') | |N | | | +-----------------+------------------+------+-----+---------+-------+ 17 rows in set (0.04 sec)

    mysql> show columns from db; +-----------------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------------+------------------+------+-----+---------+-------+ | Host | char(60) binary | PRI | | | | | Db | char(64) binary | PRI | | | | | User | char(16) binary | PRI | | | | | Select_priv | enum('N','Y') | | N | | | | Insert_priv | enum('N','Y') | | N | | | | Update_priv | enum('N','Y') | | N | | | | Delete_priv | enum('N','Y') | | N | | | | Create_priv | enum('N','Y') | | N | | | | Drop_priv | enum('N','Y') | | N | | | | Grant priv | enum('N','Y') | | N | | | | References_priv | enum('N','Y') | | N | N | | | Index_priv | enum('N','Y') | | N | | | | Alter_priv | enum('N','Y') | | N | | | +-----------------+------------------+------+-----+---------+-------+ 13 rows in set (0.00 sec)

    mysql> show columns from tables_priv; +--------------+----------------------------------------------------------------------------------------------+----+---+-------+-----+ | Field | Type |Null|Key|Default|Extra| +--------------+----------------------------------------------------------------------------------------------+----+---+-------+-----+ | Host | char(60) binary |PRI | | | || Db | char(64) binary |PRI | | | || User | char(16) binary |PRI | | | | | Table_name | char(60) binary | | N | | || Grantor | char(77) | | N | | || Timestamp | timestamp(14) | | N | | || Table_priv | set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter')| | N | | | | Column_priv | set('Select','Insert','Update','References') |N | | | | +--------------+----------------------------------------------------------------------------------------------+----+---+-------+-----+ 8 rows in set (0.00 sec)

    Es posi ble real izar mo di ficac iones dir ecta m ente sobr e es tas tab las y obtener los m ism os r esul tad os que si ut il iz r am os los com and os g r an t , re voke , se t pas -

    swo r d o drop user:

    mysql> update user -> set Password = password( nuevapasswd ) -> where User = visitante and Host = localhost ; mysql> flush privileges ;

  • 7/25/2019 Usuarios y Privilegios MYSQL

    9/10

    El coma n d o flus h pr i v il eg es so licita a MySQL qu e vu elv a a lee r las tab las de

    pr ivi leg ios. En el moment o de ejecu tar se , el servi dor lee la in formac in de es -

    ta s ta blas sob r e pr ivi legios . Per o si se han alt era do las t ablas m anual m ente, no se ent erar de los cam bios hast a que ut il ice m os el com and o f l us h privileg es.

    Ta blas de la ba se de da tos mysql Ta bl a Co n t en ido

    user Cuentas d e usuario y sus priv ilegios glob ales

    db Pr ivilegios sobr es bases de da tos

    tables _ p r iv Pr ivilegios sobr e tablas

    co lum ns_priv Priv ilegios sob r e column as

    host Priv ilegios de otros equipo s anfitriones sob r e bases d e da tos

    El acceso directo a las ta blas de p r iv ilegio s es t il en varios cas os; por ejem plo , para

    borrar un us uario del siste m a en las versione s de MySQL an te rior es a la 4.1.1:

    mysql> delete from user -> where User = visitante and Host = localhost ; mysql> flush privileges ;

    No es posib le elim in a r m ed ian te u n so lo com a n d o revo ke t odos los p r iv ilegios

    de un usu ario .

    Ej e m p l o

    Se ot or gan de r ech os a un usua r io con dos co m an dos grant .

    Obser van do el con ten ido de la bas e de dato s de pr ivilegios, podemo s ente nd er el com por ta- mi ent o de los comand os grant y re vok e . Pr im er o asigna m os p r iv ileg ios pa ra usar el com an- do sel ect al usu ar io visitan te con dos com an dos grant : el pr im er o de el los le permite elin gr eso de sde el ser vidor nuestra -on g.org y el segun do le otor ga el m ism o tip o de pr iv ileg io,pero desde cua lqu ier equip o en In te rn et.

    mysql> grant select -> on *.* -> to [email protected];Query OK, 0 rows affected (0.01 sec)mysql> grant select -> on *.* -> to visitante@%; Query OK, 0 rows affected (0.00 sec)

    Cons u lta nd o la tabla user de la bas e de da tos de pr ivilegios , pod em os obs er var los valo r es Y en la co lu mn a del pr iv il e g i o se lect .

    mysql> select user,host,select_priv from user -> where user = visitante;

  • 7/25/2019 Usuarios y Privilegios MYSQL

    10/10

    +-----------+-----------------+-------------+ | user | host | select_priv | +-----------+-----------------+-------------+ | visitante | nuestra-ong.org | Y | | visitante | % | Y | +-----------+-----------------+-------------+ 2 rows in set (0.00 sec)

    Aho r a so licitam os elimin ar el pr iv ileg i o se l e ct de toda s las bases de dato s y de todos los equ ipos en In ter n et .

    mysql> revoke all -> on *.* -> from visitante@%; Query OK, 0 rows affected (0.00 sec) mysql> select user,host,select_priv from user -> where user = visitante;

    +-----------+-----------------+-------------+ | user | host | select_priv | +-----------+-----------------+-------------+ | visitante | nuestra-ong.org | Y | | visitante | % | N | +-----------+-----------------+-------------+ 2 rows in set (0.01 sec)

    En la tab la user ob servamo s qu e, efec t ivament e, se ha elim inado el p r ivilegi o p ara visi-

    t an te@% p ero n o p ara 'vis itan te@n u est r a-on g.or g '. MySQL cons ider a qu e son d ir ecc io - n es d ifer en tes y r espet a lo s p r ivileg io s o tor gad os a u n o cu an do se m odi fica otr o .