Está en la página 1de 6

AadirnuevascuentasdeusuarioaMySQL PuedecrearcuentasMySQLdedosformas: UsandocomandosGRANT ManipulandolastablasdepermisosMySQLdirectamente ElmtodopreferidoesusarcomandosGRANT,yaquesonms concisosymenospropensoaerrores..GRANTestdisponibledesde MySQL3.22.11;susintaxissedescribeenSeccin13.5.1.3. SintaxisdeGRANTyREVOKE. Otraopcinparacrearcuentasesusarunodelosdiversos programasproporcionadosporterceras partesqueofrecencapacidadesparaadministradoresdeMySQL. phpMyAdminesunadeellos. Lossiguientesejemplosmuestrancmousarelprogramacliente mysqlparaaadirnuevosusua rios.

Estosejemplosasumenquelospermisosseinicializansegn laspautasdescritasenSec cin2.9.3,HacerseguraslascuentasinicialesdeMySQL.Esto significaquepararealizarcam bios,debeconectaralservidorMySQLcomoelusuarioroot,yla cuentarootdebetenerelpri vilegioINSERTparalabasededatosmysqlyelpermiso administrativoRELOAD. Enprimerlugar,useelprogramamysqlparaconectaralservidor comoelusuarioroot:shell>mysqluser=rootmysql Sihaasignadounacontraseaalacuentaroot,necesitarla opcinpasswordopparaeste comandomysqlytambinparalosmostradosacontinuacinenesta seccin. Traslaconexinalservidorcomoroot,puedeaadirnuevas cuentas.Elsiguientecomandousa GRANTparainicializarnuevascuentas: mysql>GRANTALLPRIVILEGESON*.*TO'monty'@'localhost' >IDENTIFIEDBY'some_pass'WITHGRANTOPTION;

mysql>GRANTALLPRIVILEGESON*.*TO'monty'@'%' >IDENTIFIEDBY'some_pass'WITHGRANTOPTION; mysql>GRANTRELOAD,PROCESSON*.*TO'admin'@'localhost'; mysql>GRANTUSAGEON*.*TO'dummy'@'localhost'; LascuentascreadasconestoscomandosGRANTtienenlassiguientes propiedades: Dosdelascuentastienenunnombredeusuariodemontyyuna contraseadesome_pass. Ambascuentassoncuentasdesuperusuarioconplenospermisos parahacercualquiercosa.Una cuenta('monty'@'localhost')puedeusarseslocuandose conectedesdeelequipolocal. Laotra('monty'@'%')puedeusarseparaconectarsedesde cualquierotroequipo.Notequees necesariotenerambascuentasparaquemontyseacapazde conectarsedesdecualquiersitioco momonty.Sinlacuentalocalhost,lacuentaannimapara localhostcreadapor mysql_install_dbtendraprecedenciacuandomontyconectedesde elequipolocal.Co moresultado,montysetrataracomounusuarioannimo.La raznparaelloesqueelusuario annimotieneunvalormsespecficoenlacolumnaHostquela cuenta'monty'@'%'ypor lotantotomaprecedenciaenlaordenacindelatablauser. (Laordenacindelatablauser sediscuteenSeccin5.6.5,Controldeacceso,nivel1: Comprobacindelaconexin.) Unacuentatieneunnombredeusuariodeadminynotiene contrasea.Estacuentapuedeusar seslodesdeelequipolocal.Tienelosprivilegios administrativosRELOADyPROCESS.stos permitenalusuarioadminejecutarloscomandosmysqladmin reload,mysqladmin refresh,ymysqladminflushxxx,ascomomysqladmin processlist.Nose danpermisosparaaccederaningunabasededatos.Puedeaadir talprivilegioposteriormente

medianteuncomandoGRANTadicional. Unacuentatieneunnombredeusuariodedummysincontrasea. Estacuentapuedeusarseslo desdeelequipolocal.Notieneningnprivilegio.Elpermiso USAGEenelcomandoGRANTper mitecrearunacuentasindarleningnprivilegio.Tieneel efectodeinicializartodoslosprivile giosglobalesa'N'.Seasumequeseotorgarnprivilegios especficosposteriormente. ComoalternativaaGRANT,puedecrearlamismacuentadirectamente mediantecomandosINSERT ydespusdiciendoalservidorquerecarguelastablasdepermisos usandoFLUSHPRIVILEGES: shell>mysqluser=rootmysql mysql>INSERTINTOuser >VALUES('localhost','monty',PASSWORD('some_pass'), > 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); mysql>INSERTINTOuser >VALUES('%','monty',PASSWORD('some_pass'), > 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y'); mysql>INSERTINTOuserSETHost='localhost',User='admin', >Reload_priv='Y',Process_priv='Y'; mysql>INSERTINTOuser(Host,User,Password) >VALUES('localhost','dummy',''); mysql>FLUSHPRIVILEGES; LarazndeusarFLUSHPRIVILEGESalcrearcuantasconINSERTes deciralservidorque vuelvaaleerlastablasdepermisos.Deotromodo,loscambiosno setienenencuentahastaquese reinicieelservidor.ConGRANT,FLUSHPRIVILEGESnoesnecesario. LaraznparausarlafuncinPASSWORD()conINSERTesencriptar lascontraseas.Elcomando GRANTencriptalacontrasea,asquePASSWORD()noesnecesario. Elvalor'Y'activapermisosparalascuentas.Paralacuentaadmin ,puedeemplearlasintaxismsclaraextendidaINSERTusandoSET.

EnelcomandoINSERTparalacuentadummyaccount,slolas columnasHost,User,yPass wordenelregistrodelatablausertienenvaloresasignados. Ningunadelascolumnasdepermi sosseasignanexplcitamente,asqueMySQLlesasignaatodasel valorpordefectode'N'.Esto esequivalentealfuncionamientodeGRANTUSAGE. Parainicializarunacuentadesuperusuario,sloesnecesario crearunaentradaenlatablauser conlascolumnasdepermisosinicializadasa'Y'.Losprivilegios delatablausersonglobales,as quenosenecesitanregistrosenningunadelasotrastablasde permisos. Lossiguientesejemploscreantrescuentasylesdanaccesoabases dedatosespecficas.Cadauna deellastieneunnombredeusuariocustomycontraseaobscure. ParacrearlascuentasconGRANT,uselossiguientescomandos: shell>mysqluser=rootmysql mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP >ONbankaccount.* >TO'custom'@'localhost' >IDENTIFIEDBY'obscure'; mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP >ONexpenses.* >TO'custom'@'whitehouse.gov' >IDENTIFIEDBY'obscure'; mysql>GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP >ONcustomer.* >TO'custom'@'server.domain' >IDENTIFIEDBY'obscure'; Lastrescuentaspuedenusarsedelasiguientemanera: Laprimeracuentapuedeaccederalabasededatosbankaccount, peroslodesdeelequipo local. Lasegundacuentapuedeaccederlabasededatosexpenses,pero slodesdeelequipowhi

tehouse.gov. Laterceracuentapuedeaccederlabasededatoscustomer,pero slodesdeelequiposer ver.domain. ParainicializarlascuentascustomsinusarGRANT,uselos comandosINSERTcomoseexplica paramodificarlastablasdepermisosdirectamente: shell>mysqluser=rootmysql mysql>INSERTINTOuser(Host,User,Password) >VALUES('localhost','custom',PASSWORD('obscure')); mysql>INSERTINTOuser(Host,User,Password) > VALUES('whitehouse.gov','custom',PASSWORD('obscure')); mysql>INSERTINTOuser(Host,User,Password) >VALUES('server.domain','custom',PASSWORD('obscure')); mysql>INSERTINTOdb >(Host,Db,User,Select_priv,Insert_priv, >Update_priv,Delete_priv,Create_priv,Drop_priv) >VALUES('localhost','bankaccount','custom', >'Y','Y','Y','Y','Y','Y'); mysql>INSERTINTOdb >(Host,Db,User,Select_priv,Insert_priv, >Update_priv,Delete_priv,Create_priv,Drop_priv) >VALUES('whitehouse.gov','expenses','custom', >'Y','Y','Y','Y','Y','Y'); mysql>INSERTINTOdb >(Host,Db,User,Select_priv,Insert_priv, >Update_priv,Delete_priv,Create_priv,Drop_priv) >VALUES('server.domain','customer','custom', >'Y','Y','Y','Y','Y','Y'); mysql>FLUSHPRIVILEGES; LosprimerostrescomandosINSERTaadenregistrosenlatablauser quepermitenalusuario customconectardesdelosequiposconlacontraseadada,perono

otorgaprivilegiosblobales (todoslosprivilegiosseinicializanalvalorpordefecto'N'). LossiguientestrescomandosINSERTaadenregistrosenla tabladbqueotorganprivilegiosacustomparalasbasesdedatos bankaccount,expenses,ycustomer,peroslocuandose accededesdelosequiposapropia dos.Comosiempre,cuandomodifiquelastablasdepermisos directamente,debedecirlealservidor quelasrecargueconFLUSHPRIVILEGESparaqueloscambios enlospermisostenganefecto. Siquieredaraunusuarioespecficoaccesodesdetodaslas mquinasdentrodeundominiodado (porejemplo,mydomain.com),puederealizaruncomandoGRANT queuseelcarctercomodn '%'enlapartedelequipodelnombredecuenta: mysql>GRANT... >ON*.* >TO'myname'@'%.mydomain.com' >IDENTIFIEDBY'mypass'; Parahacerlomismomodificandolastablasdepermisos directamente,hagalosiguiente: mysql>INSERTINTOuser(Host,User,Password,...) > VALUES('%.mydomain.com','myname',PASSWORD('mypass'),...); mysql>FLUSHPRIVILEGES; EliminarcuentasdeusuariodeMySQL Paraeliminarunacuenta,useelcomandoDROPUSER, descritoenSeccin13.5.1.2,Sintaxisde DROPUSER.

También podría gustarte