Sunteți pe pagina 1din 5

UsuarioMySQL:cmocrear,borrary

asignarprivilegios
SEPTIEMBRE28,2014

EnestaentradavamosavercmogestionarusuariosMySQLdesdelalneadecomandos/shellde
MySQL.Lomsbsicoquedebemossaberalrespectoescrear,borrarymodificarlosusuariosas
comosaberelmododemanejaryasignarorevocarlosprivilegiosquecadausuariovaatenerrespecto
alasbasesdedatosinstaladasenelservidor.
Lagestindeusuariostambinsepuederealizardesdeherramientasgrficasyaplicacioneswebcomo
porejemplophpMyAdminoeladministradorgrficodeMySQL,enestecasovamosaloquesiempre
tendremosamano,lashelldeMySQL.
LoprimeroquedebemoshaceresaccederalashelldeMySQLconunusuarioquetengaprivilegiosde
administracin,enestecasolohacemoscomorootydesdeelpropiohostporlneadecomandos:
#mysqlurootp
Enterpassword:**********
WelcometotheMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis12
Serverversion:5.1.73Sourcedistribution
Copyright(c)2000,2013,Oracleand/oritsaffiliates.Allrightsreserved.
OracleisaregisteredtrademarkofOracleCorporationand/orits
affiliates.Othernamesmaybetrademarksoftheirrespective
owners.
Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.
mysql>

CrearusuarioMySQLconCREATEUSER

ElcomandoCREATEUSERdeMySQLnosvaapermitircrearusuariosyasignarlesunacontrasea
conelparmetroIDENTIFIEDBY.Msadelanteveremosqueestepasolopodemosevitarutilizando
directamenteelcomandoGRANTparalacreacindelusuarioyasignacindeprivilegiosenunnico
paso.
Lasintaxiseslasiguiente:
CREATEUSERuser[IDENTIFIEDBY[PASSWORD]'password']

Aspues,siquisieramoscrearunusuariollamadofooyconclavemipasswordejecutaramosel
siguientecomando:
mysql>CREATEUSERfooIDENTIFIEDBY'mypassword';
QueryOK,0rowsaffected(0.01sec)

Tenemoslaopcindeespecificarlacontraseaconsuvalorenhash.Estevalordebesergenerado
anteriormenteconlafuncinPASSWORD()deMySQL:
mysql>SELECTPASSWORD('mipassword');
++
|PASSWORD('mipassword')|
++
|*CEE870801502ACAD44FA46CA2CA4F58C2B721A67|
++
1rowinset(0.00sec)
mysql>CREATEUSERfooIDENTIFIEDBYPASSWORD'*CEE870801502ACAD44FA46CA2CA4F58C2B721A67';
QueryOK,0rowsaffected(0.01sec)

EliminarusuarioMySQL
EliminarunusuarioMySQLessencillo,elcomandoautilizaresDROPUSERseguidodelusuarioa
eliminar:
mysql>DROPUSERfoo;
QueryOK,0rowsaffected(0.00sec)

AsignarprivilegiosalusuarioconGRANT
CuandocreamosunusuarioutilizandoCREATEUSER,efectivamentelacreacinessatisfactoria,pero
verisqueelusuarionicamentepuedeconectarseyvisualizarciertosparmetrosdelservidor.Laverdad
esquepodemoscreardirectamentelosusuariosconelcomandoGRANTyalavezasignarlos
privilegiosquequeramosrespectoalasbasesdedatosdelsistema.BsicamenteGRANTasigna
privilegiosalusuariosindicado,ysinoexistelocrea.
Lasintaxisymododeusodelcomandoseralasiguiente:
GRANTONprivilegiosTO'usuario'@'host_de_conexion'

>IDENTIFIEDBY'password'WITHGRANTOPTION;

Enelsiguienteejemplo,asignamostodoslosprivilegiosposiblesalusuariofoo(sinoexistesecrea)
sobretodaslasbasesdedatosytablas,paraconexionesdesdelocalhostnicamenteyademsle
concedemoselpermisoGRANTparaquetengalaopcindeasignarpermisosaotrosusuarios:
mysql>GRANTALLPRIVILEGESON*.*TO'foo'@'localhost'
>IDENTIFIEDBY'mipassword'WITHGRANTOPTION;

Losprivilegiosdisponiblessonlossiguientes:
ALLPRIVILEGES,ALTER,ALTERROUTINE,CREATETABLE,CREATEROUTINE,CREATE
TEMPORARYTABLES,CREATEUSER(PermiteutilizarCREATEUSER,DROPUSER,RENAME
USER,yREVOKEALLPRIVILEGES),CREATEVIEW,DELETE,DROP,EXECUTE,FILE,
INDEX,INSERT,LOCKTABLES,PROCESS,RELOAD,REPLICATIONCLIENT,REPLICATION
SLAVE,SELECT,SHOWDATABASES,SHOWVIEW,SHUTDOWN,SUPER,UPDATE,USAGE,
GRANTOPTION.
EnladocumentacinoficialdeMySQLencontrarisinformacinydetalledecadaprivilegio.
RecordadqueelcomandoHELPdelashelldeMySQLosmostrarlaayudarelativaacadacomando.
ParaencontrarayudadeGRANTusamosHELPGRANTyvemosqueademsdelainformacinrelativa
alcomandoaparecenvariosejemplosdeuso:
mysql>HELPGRANT
[...]
CREATEUSER'jeffrey'@'localhost'IDENTIFIEDBY'mypass';
GRANTALLONdb1.*TO'jeffrey'@'localhost';
GRANTSELECTONdb2.invoiceTO'jeffrey'@'localhost';
GRANTUSAGEON*.*TO'jeffrey'@'localhost'WITHMAX_QUERIES_PER_HOUR90;
[...]

Comopodisobservar,cuandolosprivilegioshacenreferenciaabasesdedatos,tablasohostsdistintos
seejecutauncomandoporcadaunodeellos,nosepuedeenglobartodoenunanicaejecucinyaquese
almacenaenregistrosdistintosdentrodelatabladeprivilegios.
Siquisieramosasignarprivilegiosaunusuarioquevaaconectardesdedistintoshosts,loharamosde
modoindividual,esdecir:
mysql>GRANTALLONdb1.*TO'foo'@'host1';
mysql>GRANTALLONdb1.*TO'foo'@'host2';

Lomismoparadistintasbasesdedatosotablas:
mysql>GRANTALLONdb1.*TO'foo'@'localhost';
mysql>GRANTALLONdb2.*TO'foo'@'localhost';
mysql>GRANTALLONdb3.tabla1TO'foo'@'localhost';
mysql>GRANTALLONdb4.tabla1TO'foo'@'localhost';

Paraasignarunwildcarddehostsutilizamoselcarcter%.Esdecir,deestemodoelusuariopuede
conectaraMySQLdesdecualquierhost:

mysql>GRANTALLONdb1.*TO'foo'@'%';

VisualizarprivilegiosdeunusuarioconSHOW
GRANTS
ElcomandoSHOWGRANTSsirveparavisualizarenlasalidaestndardelashelldeMySQLlos
privilegiosasignadosaunusuario:
mysql>SHOWGRANTSfor'foo'@'localhost';
++
|Grantsforfoo@localhost|
++
|GRANTALLPRIVILEGESON*.*TO'foo'@'localhost'IDENTIFIEDBYPASSWORD'...'|
++
1rowinset(0.00sec)

RevocarprivilegiosalusuarioconREVOKE
ParaeliminarprivilegiosquepreviamentehemosasignadoaunusuarioMySQLconelcomando
GRANT,utilizaremoselcomandoREVOKE.Lasintaxisseralasiguiente:
REVOKEprivilegios,GRANTOPTIONFROM'usuario'@'host';

LaopcinGRANTOPTIONsloesnecesariasielusuariohasidoconfiguradoconelprivilegio
WITHGRANTOPTION.
Aligualquealahoradeasignarlosprivilegiosserealizadeformaindividualporbasededatos,host,
tabla,etc.Alahoraderevocareslomismo:
mysql>SHOWGRANTSfor'foo'@'localhost';
++
|Grantsforfoo@localhost|
++
|GRANTALLPRIVILEGESON*.*TO'foo'@'localhost'IDENTIFIEDBYPASSWORD'*CEE'|
|GRANTSELECTON`test`.*TO'foo'@'localhost'|
++
2rowsinset(0.00sec)

mysql>SHOWGRANTSfor'foo'@'host1';
++
|Grantsforfoo@host1|
++
|GRANTALLPRIVILEGESON*.*TO'foo'@'host1'IDENTIFIEDBYPASSWORD'*CEE8707'|
++
1rowinset(0.01sec)

UnavezvisualizadoslosprivilegiosconelcomandoSHOWGRANTS,eliminamoslosqueestimemos
oportuno:
mysql>REVOKESELECTONtest.*FROM'foo'@'localhost';
QueryOK,0rowsaffected(0.01sec)

Enelcasodefoo@localhostvemosquetienetodoslosprivilegiosparatodaslasbasesdedatos,en
lugardeeliminarcompletamenteesaentradadeprivilegiospodemoshacerlamsrestrictiva,porejemplo
manteniendotodoslospermisosexceptoINSERT:
mysql>REVOKEINSERTON*.*FROM'foo'@'localhost';
QueryOK,0rowsaffected(0.00sec)

YvemoscomoMySQLautomticamenteeliminaelprivilegioINSERTymantieneelresto:
mysql>SHOWGRANTSfor'foo'@'%';
ERROR1141(42000):Thereisnosuchgrantdefinedforuser'foo'onhost'%'
mysql>SHOWGRANTSfor'foo'@'localhost';
++
|Grantsforfoo@localhost|
++
|GRANTSELECT,UPDATE,DELETE,CREATE,DROP,RELOAD,SHUTDOWN,PROCESS,
FILE,REFERENCES,INDEX,ALTER,SHOWDATABASES,SUPER,
CREATETEMPORARYTABLES,LOCKTABLES,EXECUTE,REPLICATIONSLAVE,
REPLICATIONCLIENT,CREATEVIEW,SHOWVIEW,CREATEROUTINE,ALTERROUTINE,
CREATEUSER,EVENT,TRIGGERON*.*TO'foo'@'localhost'IDENTIFIEDBYPASSWORD
'*CEE870801502ACAD44FA46CA2CA4F58C2B721A67'|
++
1rowinset(0.01sec)

FLUSHPRIVILEGES
ElcomandoFLUSHPRIVILEGESsirvepararecargarlatabladeprivilegiosperosloesnecesario
cuandosemanipulandirectamentelastablasdeprivilegiosejecutandoINSERT,DELETE,etcenlugar
deusarloscomandosGRANTyREVOKE:
mysql>FLUSHPRIVILEGES;
QueryOK,0rowsaffected(0.01sec)

Esdecir,enloscasosqueheespecificadoenesteartculonoesnecesarioutilizarestemododerecargar
losprivilegios,sloseranecesariosicrearamosoeliminaramoslosusuariosamanodirectamentesin
loscomandosespecficosparaellodeMySQL:
mysql>INSERTINTOuser
>VALUES('localhost','foo',mipassword'),
>'Y','Y','Y','Y','Y','Y','N','N','N','Y','Y','Y','Y','Y');

S-ar putea să vă placă și