Taller de MySQL http://desarrolloweb.com/manuales/taller-mysql.html Página 1 de 117
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 2 de 117
Introducción:TallerdeMySQL
DiversosartículosprácticossobreeltrabajoconlabasededatosMySQL,quecubrenaspectosdesdesuinstalaciónaltrabajohabitual.
Encuentrasestemanualonlineen:http://desarrolloweb.com/manuales/taller-mysql.html
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 3 de 117
Autoresdelmanual
Lassiguientespersonashanparticipadocomoautoresescribiendoartículosdeestemanual.
MiguelAngelAlvarez
MiguelesfundadordeDesarrolloWeb.comylaplataformadeformaciónonlineEscuelaIT.Comenzóenelmundodeldesarrollowebenelaño1997,transformandosuhobbyensutrabajo.
CarlosLuisCuenca
HeislerPalma
Programadorautodidacta,músicoeinvestigadordelamente.
RubénAlvarez
RubénesdoctorenquímicayprogramadoraficionadoconexperienciaenPHP.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 4 de 117
RussvellOblitasValenzuela
Bch.SistemaseInformática
ManuGutierrez
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 5 de 117
InstalacióndeMySQLenWindows
PasosaseguirparalainstalacióndelabasededatosMySQLyalgunasayudasbásicasparacomenzarconbuenpie.
UnodelospuntosfuertesdelaspáginasenPHPeslaposibilidaddeexplotarbasesdedatosmediantefuncionesdeunasimplicidadypotenciamuyagradecidas.Estasbasesdedatospuedenserviranuestrositioparaalmacenarcontenidosdeunaformasistemáticaquenospermitaclasificarlos,buscarlosyeditarlosrápidayfácilmente.
Unabasededatosessencillamenteunconjuntodetablasenlasquealmacenamosdistintosregistros(artículosdeunatiendavirtual,proveedoresoclientesdeunaempresa,películasencarteleraenelcine...).Estosregistrossoncatalogadosenfuncióndedistintosparámetrosqueloscaracterizanyquepresentanunautilidadalahoradeclasificarlos.Así,porejemplo,losartículosdeunatiendavirtualpodríancatalogarseapartirdedistintoscamposcomopuedeserunnúmerodereferencia,nombredelartículo,descripción,precio,proveedor...
LabasededatosmásdifundidaconeltandemUNIX-ApacheessindudaMySQL.ComoparaelcasodeApache,unaversiónparaWindowsestádisponibleypuedeserdescargadagratis.
Supuestaapuntonoentrañamuchadificultad.UnavezinstaladoelprogramapodemosejecutarnuestrasordenesenmodoMS-DOS.ParaelloabrimosunaventanaMS-DOSynoscolocamoseneldirectoriobindemysql.Enestedirectorioseencuentranlosarchivosejecutables.Aquíhabráqueencontrarunarchivollamadomysqld.Enelcasodelaversiónmásactualdurantelaredaccióndeestearticuloestearchivoesllamadomysqld-shareware.Unavezejecutadoestearchivopodemosejecutarelsiguiente:mysql.
Llegadosaestepuntoveremoscómounmensajedebienvenidaapareceennuestrapantalla.Enestosmomentosnosencontramosdentrodelabasededatos.ApartirdeahípodemosrealizartodotipodeoperacionesporsentenciasSQL.
Novamosaentrarenunaexplicaciónpormenorizadadelfuncionamientodeestabasededatosyaqueestonosdaríaparaunmanualentero.DaremoscomoreferencianuestrotutorialdeSQLapartirdelcualsepuedetenerunaideamuyprácticadelassentenciasnecesariasparalacreaciónyedicióndelastablas.TambiénexisteunadocumentaciónextensaeningléseneldirectorioDocsdeMySQL.Amododeresumen,aquíosproponemosademáslasoperacionesmásbásicasque,combinadasnuestrotutorialdeSQLpuedendarsoluciónagranpartedeloscasosqueseospresenten:
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 6 de 117
Paraevitarnoseltenerqueeditarnuestrastablasdirectamentesobrearchivosdetexto,puederesultarmuyprácticousarcualquierotrabasededatosconuneditoryexportaracontinuaciónlatablaenunarchivodetextoconfiguradoparadejartabulacionesentrecadacampo.EstoesposibleenAccessporejemplopinchandoconelbotónderechosobrelatablaquequeremosconvertiryeligiendolaopciónexportar.Unaventanadedialogoapareceráenlaqueelegiremosguardarelarchivoentipotexto.Elpasosiguienteseráelegirunformatodelimitadoportabulacionessincualificadordetexto.
OtraposibilidadquepuederesultarmuyprácticayquenosevitatrabajarcontinuamentetecleandoórdenesalestilodeantañoesservirsedeprogramasenPHPoPerlyaexistentesydescargablesenlared.ElmáspopularsindudaesphpMyAdmin.Estetipodescriptssonejecutadosdesdeunnavegadorypuedenserportantoalbergadosennuestroservidoroempleadosenlocalpara,apartirdeellos,administrarMySQLdeunaformamenossufrida.
Asimismo,dentrodeldirectoriobindeMySQL,podemosencontrarunapequeñaaplicaciónllamadaMySqlManager.Setratadeunainterfacewindows,másagradablealavistayalusoquelaqueobtenemosejecutandoelarchivomysql.Enestecaso,lassentenciasSQLdeben
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 7 de 117
realizarsesinelpuntoycomafinal.
EsteartículoesobradeRubénAlvarezFuepublicadoporprimeravezen01/01/2001Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 8 de 117
AccederaMySQLdesdeterminalenLinux
AccesoyoperacionesmásbásicasparaadministrarMySQLenunsistemaLinuxcuandoaccedemosporelterminalenlíneadecomandos.
EnDesarrolloWeb.compublicamoshacealgúntiempounasnotasmuyinteresantesparatodoaquelquetrabajaconMySQLydeseaaccederporlíneadecomandosalsistemagestordebasededatos.EseartículoestabaorientadohacialaspersonasquetrabajanconWindows,aunqueesverdadquelamayoríadesentenciasdeadministraciónfuncionanigualenLinux,porqueendefinitivaloqueseestáhaciendoescomunicarconMySQLatravésdellenguajeSQL,quenodifiereennadadeunsistemaaotro.
Sinembargo,paralaspersonasquetrabajanconMySQLporGNU/Linux,yaseaporquetenganinstaladoLinuxcomoordenadordeescritoriooporqueaccedanporSSHaservidoresdedicados,algunosasuntosrelacionadosconelaccesoalainterfazdeMySQLcambianunpoco.Enesteartículovamosacomentaralgunosaspectosquepodráninteresaraesosusuariosnovelesqueestándeseandounasorientacionesbásicas.
ComenzaremosdandoalgunosdetallessobrecómoaccederalalíneadecomandosdelsistemaLinux,yaseaentusistemalocal,yaseaenunsistemaLinuxremotoquepuedastenerenunservidordedicado.
AccesoaunservidorporSSH
ComoprimerpasovamosacomentarcómohacerunaconexiónporSSHaunservidordedicado,ounservidorvirtualohosting,quepermitalaconexiónporSSH.EstonotienequeverespecíficamenteconlaadministracióndeMySQL,peropuedeservirdeguíaparalaspersonasqueestándeseandoconectarseconunservidorremotoparaluegoaccederadichosistemagestordebasededatos.
EnestecasopuedequetengasvariossistemasoperativosdistintosyquedeseesaccederalservidorLinuxporcualquieradeellos.
Windows:
ParaaccederporSSHaunservidorremotodesdetuordenadordeescritorioconWindowsyosueloutilizarelprogramaPutty,queessuperligeroygratuito.PuedesverinformaciónsobreestesoftwareenelartículoPutty:ProgramaparaTelnetySSH
Linux:
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 9 de 117
ElprogramaPuttytambiénestádisponibleparaLinux,peroestotalmenteinnecesario,yaqueatravésdelterminaldelpropiosistemaLinuxtienesaccesoalcomandoSSHparaconectarteconcualquierservidor.
Porsupuesto,tendrásqueeditartuusuarioylaIPdelservidoralquetequieresconectar.Porejemplo,paraconectarseporrootenelservidorconIP280.230.2.67escribirías:
Mac:
LosordenadoresconsistemaMacOSXtienenelterminaldelíneadecomandostambiénintegradaentrelasaplicacionesdisponibles.ParaaccederporSSHaotroservidorseutilizaelmismocomandoqueenLinux.
AccesoaunabasededatosMySQLenlocalensistemasLinux
SientucasotienesLinuxinstaladoentuordenadordeescritorioydeseasaccederaMySQLporlíneadecomandos,conqueabrasunTerminalessuficiente.Esdecir,queaquínonecesitaríasconectarporSSHconningúnservidor.
Nota:EnmisistemaUbuntuabrounterminalconlacombinacióndeteclasCTRL+ALT+T.SupongoqueenotrasdistribucionesdeLinuxesteatajopuedecambiar,peronodebesermuydifícilabrirunterminal.Buscaelprogramaentrelosinstalados.
AccesoalainterfazdeMySQLdelíneadecomandos
UnavezenelservidordondetengaselMySQLalquequieresacceder,simplementeteconectasconelcomando:
mysql -h localhost -u root -p
TendrásqueindicarelusuarioMySQLconelquequierasautenticarte.ProbablementesearootentuinstalacióndeMySQLenlocal,perosiestásenunservidorenproducciónquizásseamásinteligenteconectarconelusuarioycontraseñadeaccesoalabasededatosMySQLquequieresadministrar,quesonlosmismosqueutilizasen,porejemplo,lafunciónmysql_connect()dePHP.
Nota:ElservidorMySQLalquenosconectamoseslocalhost,puessesuponequeestás
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 10 de 117
accediendoalsistemagestorquetienesenelservidorconelquetehasconectado.PerotambiénpodríasaccederaotrosservidoresremotoscambiandolocalhostporelnombreolaIPdeeseservidoralquequierasacceder.
EnLinuxdaigualeneldirectoriodondeestéscuandoejecutesesecomandoparaconectarconMySQL,pueselcomandoestáinstaladoenelservidoryactivodesdecualquierlocalización.
Unavezejecutadoesecomando,senossolicitarálaclavedelusuarioquehemosutilizadoparaconectar.Silaponemosbien,estaremosdentrodelainterfazdeMySQLporlíneadecomandos.
SialgunavezqueremossalirdenuevoalterminaldeLinux,utilizamoselcomando
exit
ComandostípicosdeMySQL
UnavezdentrodeMySQLpuedesrealizarcomandosparatrabajarconelsistemagestordebasededatosenellenguajeSQL.Lomástípicoesquerealicesaccionescomoestas:
Verlasbasesdedatosquetenemoscreadasenelsistema:
show databases;
Nota:observaqueloscomandosquelanzasaMySQLdebenllevarunpuntoycoma";"alfinal,sinolocolocaselcomandonoseejecutaráhastaqueescribasel";"ypulseslateclaEnterdenuevo.
Cambiaraunabasededatos:
use base_de_datos;
Siendobase_de_datoselnombredelabasededatosausar.
Apartirdeaquípuedesrealizarcualquiertipodeconsultasdeselección,actualización,inserción,etc.sobrelabasededatos.ParaelloutilizasellenguajedeconsultaestándardelcualtenemosuninteresanteTutorialdeSQL.
ParacomplementarestainformaciónpuedesleerelanteriorartículosobreLíneadecomandosMySQL,dondeexplicamosotraseriedeaccionesdisponiblescuandoatacamosaMySQLdesdeelterminal.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 11 de 117
EsteartículoesobradeMiguelAngelAlvarezFuepublicadoporprimeravezen09/05/2012Disponibleonlineenhttp://desarrolloweb.com/articulos/mysql-terminal-linux.html
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 12 de 117
TiposdeDatosdeMysql
ListadoydescripcióndelosdistintostiposdedatosdeMySQL.
Despuésdelafasedediseñodeunabasededatos,yunavezseharealizadoelpasoatablasdelmismo,ennecesariocrearlastablascorrespondientesdentrodelabasededatos.Paracadacampodecadaunadelastablas,esnecesariodeterminareltipodedatosquecontiene,paradeesaformaajustareldiseñodelabasededatos,yconseguirunalmacenamientoóptimoconlamenorutilizacióndeespacio.ElpresenteartículodescribecadaunodelostiposdedatosquepuedeteneruncampoenMysql,paralaversión4.xx.xx.
Lostiposdedatosquepuedehaberenuncampo,sepuedenagruparentresgrandesgrupos:
1. Tiposnuméricos2. TiposdeFecha3. TiposdeCadena
1Tiposnuméricos:
Existentiposdedatosnuméricos,quesepuedendividirendosgrandesgrupos,losqueestánencomaflotante(condecimales)ylosqueno.
TinyInt:
Esunnúmeroenteroconosinsigno.Consignoelrangodevaloresválidosvadesde-128a127.Sinsigno,elrangodevaloresesde0a255
BitóBool:
Unnúmeroenteroquepuedeser0ó1
SmallInt:
Númeroenteroconosinsigno.Consignoelrangodevaloresvadesde-32768a32767.Sinsigno,elrangodevaloresesde0a65535.
MediumInt:
Númeroenteroconosinsigno.Consignoelrangodevaloresvadesde-8.388.608a8.388.607.Sinsignoelrangovadesde0a16777215.
Integer,Int:
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 13 de 117
Númeroenteroconosinsigno.Consignoelrangodevaloresvadesde-2147483648a2147483647.Sinsignoelrangovadesde0a429.4967.295
BigInt:
Númeroenteroconosinsigno.Consignoelrangodevaloresvadesde-9.223.372.036.854.775.808a9.223.372.036.854.775.807.Sinsignoelrangovadesde0a18.446.744.073.709.551.615.
Float:
Númeropequeñoencomaflotantedeprecisiónsimple.Losvaloresválidosvandesde-3.402823466E+38a-1.175494351E-38,0ydesde1.175494351E-38a3.402823466E+38.
xReal,Double:
Númeroencomaflotantedeprecisióndoble.Losvalorespermitidosvandesde-1.7976931348623157E+308a-2.2250738585072014E-308,0ydesde2.2250738585072014E-308a1.7976931348623157E+308
Decimal,Dec,Numeric:
Númeroencomaflotantedesempaquetado.Elnúmerosealmacenacomounacadena
|
TipodeCampo
|
TamañodeAlmacenamiento
||
TINYINT
|
1byte
||
SMALLINT
|
2bytes
||
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 14 de 117
MEDIUMINT
|
3bytes
||
INT
|
4bytes
||
INTEGER
|
4bytes
||
BIGINT
|
8bytes
||
FLOAT(X)
|
4ú8bytes
||
FLOAT
|
4bytes
||
DOUBLE
|
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 15 de 117
8bytes
||
DOUBLEPRECISION
|
8bytes
||
REAL
|
8bytes
||
DECIMAL(M,D
|
M+2bytessíD>0,M+1bytessíD=0
||
NUMERIC(M,D)
|
M+2bytesifD>0,M+1bytesifD=0
|
2Tiposfecha:
Alahoradealmacenarfechas,hayquetenerencuentaqueMysqlnocompruebadeunamaneraestrictasiunafechaesválidaono.Simplementecompruebaqueelmesestacomprendidoentre0y12yqueeldíaestacomprendidoentre0y31.
Date:
Tipofecha,almacenaunafecha.Elrangodevaloresvadesdeel1deenerodel1001al31dediciembrede9999.Elformatodealmacenamientoesdeaño-mes-dia
DateTime:
Combinacióndefechayhora.Elrangodevaloresvadesdeel1deenerodel1001alas0horas,
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 16 de 117
0minutosy0segundosal31dediciembredel9999alas23horas,59minutosy59segundos.Elformatodealmacenamientoesdeaño-mes-diahoras:minutos:segundos
TimeStamp:
Combinacióndefechayhora.Elrangovadesdeel1deenerode1970alaño2037.Elformatodealmacenamientodependedeltamañodelcampo:
|
Tamaño
|
Formato
||
14
|
AñoMesDiaHoraMinutoSegundoaaaammddhhmmss
||
12
|
AñoMesDiaHoraMinutoSegundoaammddhhmmss
||
8
|
ñoMesDiaaaaammdd
||
6
|
AñoMesDiaaammdd
||
4
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 17 de 117
|
AñoMesaamm
||
2
|
Añoaa
|
Time:
Almacenaunahora.Elrangodehorasvadesde-838horas,59minutosy59segundosa838,59minutosy59segundos.Elformatodealmacenamientoesde'HH:MM:SS'
Year:
Almacenaunaño.Elrangodevalorespermitidosvadesdeelaño1901alaño2155.Elcampopuedetenertamañodosotamaño4dependiendodesiqueremosalmacenarelañocondosocuatrodígitos.
|
TipodeCampo
|
TamañodeAlmacenamiento
||
DATE
|
3bytes
||
DATETIME
|
8bytes
||
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 18 de 117
TIMESTAMP
|
4bytes
||
TIME
|
3bytes
||
YEAR
|
1byte
|
3Tiposdecadena:
Char(n):
Almacenaunacadenadelongitudfija.Lacadenapodrácontenerdesde0a255caracteres.
VarChar(n):
Almacenaunacadenadelongitudvariable.Lacadenapodrácontenerdesde0a255caracteres.
Dentrodelostiposdecadenasepuedendistinguirotrosdossubtipos,lostipoTestylostipoBLOB(BinarylargeObject)
Ladiferenciaentreuntipoyotroeseltratamientoquerecibenalahoraderealizarordenamientosycomparaciones.MientrasqueeltipotestseordenasintenerencuentalasMayúsculasylasminúsculas,eltipoBLOBseordenateniéndolasencuenta.
LostiposBLOBseutilizanparaalmacenardatosbinarioscomopuedenserficheros.
TinyTextyTinyBlob:
Columnaconunalongitudmáximade255caracteres.
BlobyText:
Untextoconunmáximode65535caracteres.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 19 de 117
MediumBlobyMediumText:
Untextoconunmáximode16.777.215caracteres.
LongBlobyLongText:
Untextoconunmáximodecaracteres4.294.967.295.Hayquetenerencuentaquedebidoalosprotocolosdecomunicaciónlospaquetespuedentenerunmáximode16Mb.
Enum:
Campoquepuedetenerunúnicovalordeunalistaqueseespecifica.EltipoEnumaceptahasta65535valoresdistintos
Set:
Uncampoquepuedecontenerninguno,unoóvariosvaloresdeunalista.Lalistapuedetenerunmáximode64valores.
|
Tipodecampo
|
TamañodeAlmacenamiento
||
CHAR(n)
|
nbytes
||
VARCHAR(n)
|
n+1bytes
||
TINYBLOB,TINYTEXT
|
Longitud+1bytes
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 20 de 117
||
BLOB,TEXT
|
Longitud+2bytes
||
MEDIUMBLOB,MEDIUMTEXT
|
Longitud+3bytes
||
LONGBLOB,LONGTEXT
|
Longitud+4bytes
||
ENUM('value1','value2',...)
|
1ódosbytesdependiendodelnúmerodevalores
||
SET('value1','value2',...)
|
1,2,3,4ó8bytes,dependiendodelnúmerodevalores
|
DiferenciadealmacenamientoentrelostiposCharyVarChar
|
Valor
|
CHAR(4)
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 21 de 117
|
Almacenamiento
|
VARCHAR(4)
|
Almacenamiento
||
''
|
''
|
4bytes
|
"
|
1byte
||
'ab'
|
'ab'
|
4bytes
|
'ab'
|
3bytes
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 22 de 117
||
'abcd'
|
'abcd'
|
4bytes
|
'abcd'
|||
'abcdefgh'
|
'abcd'
|
4bytes
|
'abcd'
|5bytes|
EsteartículoesobradeCarlosLuisCuencaFuepublicadoporprimeravezen05/02/2003Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 23 de 117
MysqlControlCenter
UnaconsoladeAdministracióndeMysqlcreadaporMysqlABdesdelaquesepuedenadministrarlasbasesdedatos,losusuariosyelservidordebasesdedatos
MyCCesunapotenteconsoladeAdministracíonparaMysql,quepermiterealizartodaslastareasdeadministraciónytrabajodeMysqlmedianteuninterfacegráfico,yquevieneacubrirunadelasmayoresobjecionesquelosusuariosteníandeMysql.
ParaUtilizarlo,primerolotendrásquedescargardeMysql.com.ExistenactualmenteversionesdisponiblesparaLinuxyparaWindows.
ParapodertrabajarconunservidordeMysql,primerolotendrásquedardealtamedianteeliconodeResgitrarservidor.
Apareceuncuadrodediálogoenelcúalsepuedenconfigurartodoslosparámetrosdeacessoal
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 24 de 117
servidor,comosonnombredelservidor,nombredeusuario,contraseña,puertoetc.
UnavezconectadoaunservidorsepodráaccederalastareasdeadministracióndelosusuariosdeMysql,administradordelgestor,yadministracióndelastablas.
AdministradordeUsuarios
Desdeelsepuedenañadir,borrarymodifcarlaspropiedadesdelosusariosdeMysql.Alhacerclicksobreunusuarioaparecelaventanadeconfiguracióndelusuario.
Enellasepuedenconfigurarelnombredeusuario,lacontraseña.Respectoalospermisos,permiteestablecerunsistemadepermisosgeneraloindividualizadoparacadaunadelastablas.Ademáspermitedarlepermisoalusuarioparaqueselocedaaotros(GRANTOPTIONS).
Unodelospuntosfuertesrespectoalaseguridadesquealdefinirunusuario,hayqueespecificarelservidordesdealcualaccederá,limitandodeestaforma,losriesgosdeaccesoindebido.
Administracióndelservidor
LaventanadeAdministracióndelservidorconstadetrespestañasdesdelacualsepuedenaccederalalistadeprocesos,lasvariablesdeestadodelservidorylasvariablesdeconfiguración.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 25 de 117
DesdeestaventanaademássepuedehacerunPingalservidor,detenerlo,oguardarelcontenidodelasvariablesdeestado.
Desdelapestañadeprocesossepuedeverelestadodecadaunodelosprocesosactivos,viendosuspropiedadesyconlaopcióndedetenerlosmedianteunKill.
Desdelapestañadeestado,sepuedeverelcontenidodecadaunadelasvariablesdeestado,ysepuedepersonalizarparamostrarsimplementelasqueteinteresn.
DesdelapestañadevariablessepuedeaccederalvalordecadaunadelasvariablesdeconfiguracióndelservidordeMysql.
VentanadeBasedeDatos
Alseleccionarunabasededatosdentrodelaseccióndebasesdedatos,aparecelaventanadebasededatos,enellasepuedeverinformaciónrelacionadaconlabasededatos,comopuedesernúmerodetablas,elnúmerodeconsultasporsegundo,eltiempoquellevaen
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 26 de 117
funcionamientoetc.
Alseleccionarunabasededatos,sepuedenverlosnombresdelastablasquecontiene,elnúmeroderegistrosquecontiene.Lastablassepuedeneliminar,vaciaryrenombrar.
Cuandoseseleccionaunatabla,sepuedenverelnombredeloscampos,lostiposdedatosylosparámetrosopcionalesdecadaunodeellos.
Estaventanapermitecrearnuevoscampos,eliminarlosomodificarsuspropiedades.Ademásmedianteeliconodeherramientas,sepuedeanalizarlatabla,optimizarlayrepararla.
Alhacerdobleclicsobreunatablasemuestranenlaventanalosdatosquecontiene.
Haciendoclicsobrecualquieradeloscampos,seaccedealaestructuradelamisma.Paracadacamposepuedeelegireltipodedatos,eltamaño,siesclaveono,elvalorpredeterminadodelmismo.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 27 de 117
Dentrodelatabla,existeuncuadroparaconfigurarlosíndicesquetiene.
Desdeellasepuedenseleccionarloscamposquelocontienen,asícomoeltipodeíndicequesedeseacrear.
Desdelapestañadepropiedadesdelatablaseaccedenalosatributosdelamisma,comopuedensereltipodetabla,elmododeescritura,eltamañomáximodecadafilaetc.
EnfincomopuedesverestaeslaconsoladeaccesoalservidordeMysqlquellevabamostiempoesperando.Elproductosedistribuyecomosoftwarelibre,asíquetantoladescargacomolautilizaciónilimitadaesgratuita.DisponedeversionesLinuxyWindowsysepuedeencontrarmuchamásinformación,asícomolaúltimaversiónenladirecciónwww.mysql.com/products/mysqlcc/.
EsteartículoesobradeCarlosLuisCuencaFuepublicadoporprimeravezen20/09/2002Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 28 de 117
MySQLAdministrator
Unprogramamuyútilparaadministrar,visualmenteydemanerasencilla,servidoresdebasesdedatosMySQL.
MySQLAdministradoreselnuevosoftwaredeadministracióndeservidoresdeBasesdeDatosdeMySQLquehacreadoMySQLAB.Setratadeunsoftwaremultiplataforma,queporelmomentoseencuentradisponibleparaLinuxyMicrosoftWindowsyquecuentaconunentornográficodeusuariomuyintuitivo.
EstenuevoproductosuplelascarenciasquetieneMySQLControlCentereneláreadeAdministracióndeservidores.MySQLControlCenterenestosmomentosestádeprecado,haquedadoobsoletoynosiguedesarrollándose.SehasustituidoporelconjuntodeprogramasMySQLAdministratoryMySQLQueryBrowser.
MySQLAdministradoresunaherramientaquepermiterealizartareasadministrativassobreservidoresdeMySQLincluyendo:
laconfiguracióndelasopcionesdeiniciodelosservidoresinicioydetencióndeservidoresmonitorizacióndeconexionesalservidoradministracióndeusuariosmonitorizacióndelestadodelservidor,incluyendoestadísticasdeusovisualizacióndeloslogsdeservidorgestióndecopiasdeseguridadyrecuperacionesvisualizacióndecatálogosdedatos
Instalaciónyconfiguración:
LadescargadelprogramasehacedesdelapáginawebdeMySQL,enhttp://dev.mysql.com/downloads/administrator,TambiénenlapáginadeMySQLexistenunaseriedeFAQsqueayudanenlainstalaciónencasodedudas,aunquelamismaesbastantesimple,enhttp://www.mysql.com/products/administrator/.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 29 de 117
UnavezinstaladoesnecesarioconfigurarunaprimeraconexióncontraunservidordeMySQLparapoderaccederalaadministracióndelmismo.
Enlapantalladeconfiguraciónsedeberánespecificarlosdatosdelservidor,nombredeusuario,contraseñaypuerto,delabasededatosalacualsedeseaconectar.
Unavezintroducidosdeformacorrecta,aparecelapantallaprincipaldelprograma:
Desdelapantallaprincipalsepuedeverlainformaciónrelativaalservidordebasedatosalquesehaconectado,asícomolascaracterísticasdelamáquinaenlaqueseestáejecutandoelprograma.
EnlabarrademenúatravésdeTools,setieneaccesoaunaconsoladesistema(Windowso
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 30 de 117
Linuxdependiendodelcaso),unclientedeconexiónaMySQLbajolíneadecomandosyaMySQLQueryBrowser.Desdeestemismomenú,seaccedealasopcionesdeconfiguracióndeladministradorydelasconexionesquehayconfiguradas:
Enlaseccióndeconexionesseencuentranalmacenadastodaslasconexionesaservidoresquehayconfiguradas.
Algunasutilidadesaccesiblesdesdelaventanaprincipaldelprogramason:
Servicecontrol:Inicioydetencióndeservidores(sóloaccesiblesisehaconectadoconunservidorMySQLenlamáquinalocal).Startupvariables:Configuracióndelservidorylasvariablesdeinicio(sóloaccesiblesisehaconectadoconunservidorMySQLenlamáquinalocal).UserAdministration:Paralagestióndeusuariosypermisos.Serverconections:Visualizaygestionalasconexionesabiertasconelservidordebasesdedatos.Health:Informaciónsobrelacargadelservidor.ServerLogs:Elhistorialdelogsdelservidor.ReplicationStatus:Coninformacióndelossistemasreplicados.Backup:Parahacerunacopiadeseguridaddelasbasesdedatos.Restore:Pararestaurarlascopiasdeseguridad.Catalogs:Paramostrarlasbasesdedatos,visualizar,crearyeditarlastablas.
Nota:EnelTallerdeMySQLtenemosotrosartículosparaexplicartareasbásicasdeadministracióndeMySQL.TenemosunartículoquepuedeserinteresanteparaleerahoraqueexplicacómorealizarlaadministracióndeusuariosconMySQLAdministrator.
Conclusión
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 31 de 117
AlabasededatosMySQLlefaltabaunaherramientacomoMySQLAdministrator.NocabedudaquesetratadeunprogramaextremadamenteútileimprescindibleparaadministrarvisualmenteservidoresMySQL.
Muchasdelasopcionesdeconfiguracióndelabasededatossonmuysencillasdeentenderydeutilizar,porlomenostodaslasopcionesmásbásicas.EnconjuntoconMySQLQueryBrowse,nospermitegestionarcualquieraspectodeunabasededatosMySQL.
EsteartículoesobradeCarlosLuisCuencaFuepublicadoporprimeravezen26/01/2005Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 32 de 117
phpMyAdmin
UnproyectodecódigoabiertoenPHPparaadministrarlabasededatosMySQLatravésdeunainterfazweb.Descripciónfuncionalidadesyayudasparalainstalación.
phpMyAdminesunprogramadelibredistribuciónenPHP,creadoporunacomunidadsinánimodelucro,quesólotrabajaenelproyectoporamoralarte.EsunaherramientamuycompletaquepermiteaccederatodaslasfuncionestípicasdelabasededatosMySQLatravésdeunainterfazwebmuyintuitiva.
LaaplicaciónensinoesmásqueunconjuntodearchivosescritosenPHPquepodemoscopiarenundirectoriodenuestroservidorweb,demodoque,cuandoaccedemosaesosarchivos,nosmuestranunaspáginasdondepodemosencontrarlasbasesdedatosalasquetenemosaccesoennuestroservidordebasesdedatosytodassustablas.Laherramientanospermitecreartablas,insertardatosenlastablasexistentes,navegarporlosregistrosdelastablas,editarlosyborrarlos,borrartablasyunlargoetcétera,inclusoejecutarsentenciasSQLyhacerunbackupdelabasededatos.
PáginadephpMyAdmin
Lapáginadeiniciodelproyectoeshttp://www.phpmyadmin.net/.Desdeallípodemos
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 33 de 117
descargarlosficherosdelaúltimaversióndelaaplicación,queposteriormentedebemoscolocarennuestroservidorweb.TambiénpodemosencontraraphpMyAdmindentrodelaredSourceforge.net,queesunsitioquerecogemultituddeproyectos"OpenSource"(códigoabierto).
Hayvariasversionesdisponibles,peroesrecomendableescogerlaquenosaconsejencomolaúltimaversiónestable(Thelaststableversión).Enelmomentodeescribiresteartículoerala2.2.6.Demodoque,sinuestrosistemaesWindows,descargaremoselarchivophpMyAdmin-2.2.6-php.zip
Losarchivosquehemosdescargadosondelaversión4dePHP,aunquetambiénofrecenlaposibilidaddebajarselosarchivosqueguardancompatibilidadconlaversión3dePHP,paraqueaquellosquenodispongandelmotordePHPmásactual.
Lapaginadeiniciodelprogramatambiénnosofrecelaposibilidaddeverundemoonline,aunquenosavisandequeelservidordondesealojapuedeestarcaído.http://www.phpmyadmin.net/phpMyAdmin/
InstalandophpMyAdmin
Unavezdescargadalaúltimaversiónlatenemosquedescomprimir,conloqueobtendremoslosficherosPHPqueconformanlaherramientaycolocarlosdentrodeldirectoriodepublicacióndenuestroservidorweb.
Nota:RecordamosquephpMyAdminesunproyectoescritoenPHP,porloque
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 34 de 117
necesitaremoscolocarlosarchivosenunservidorwebquepermitaprogramacióndepáginasPHP.
Además,deberemosaccederalaherramientaatravésdeladireccióndelservidorweb,seguidadeldirectorioenelquetenemoslosarchivosquehemosdescomprimido.Porejemplo,sinuestroservidoreselPWSyhemoscolocadolosarchivosdentrodeldirectoriodepublicación(GeneralmenteC:\Inetpub\wwwroot),enelsubdirectoriophpMyAdmin,debemosescribiralgocomohttp://localhost/phpMyAdmin
SituviéramosinstaladounservidorApacheloscolocaríamosenlacarpetaquehayamosindicadocomo"documentRoot",quesueleserhtdocs.
Loprimeroquepodemosleereselarchivodeladocumentación,queencontramosjuntoconlosarchivosdephpMyAdmin.Explicadatosgeneralesdelprograma,comosusrequerimientos,instruccionesdeinstalación,configuración,preguntasfrecuentes,etc.
Posteriormente,talcomoexplicaladocumentación,hayqueeditarelarchivoconfig.inc.phpparacambiarlosvaloresdehostdelabasededatos(ordenadorquetieneinstaladoelMySQL)yelusuarioypasswordconelquenosconectamos.Sepuedenconfigurarmuchosaspectosenlaherramienta,aunqueahorasolocomentarélosqueheencontradoesencialesparahacerlafuncionar,enladocumentacióntenemosunapartadodedicadoporcompletoaespecificarelsentidodecadavariable.
$cfgPmaAbsoluteUri
DebemosasignarloalarutacompletanecesariaparaaccederaphpMyAdmin.Podríaseralgocomohttp://localhost/phpMyAdminohttp://www.midominio.com/phpMyAdmin
$cfgServers[$i]['host']string
Elnombredelhostdelabasededatos.Porejemplolocalhost,siesqueeselmismoordenadordondeestamosinstalandosphpMyAdminylabasededatos.TambiénpodríaserladirecciónIPdelordenadoralquenosconectamos.
$cfgServers[$i]['user']string
$cfgServers[$i]['password']string
Elparusuario/contraseñaquedebeutilizarphpMyAdminparaconectarseconelservidorMySQL.
ConestassencillasconfiguracionesyapodemosaccederaphpMyAdminytrabajarconnuestrabasededatosagolpederatón,queresultamuydeagradecerteniendoencuentaque,encasodenotenerestaherramientauotraparecida,laotraopciónconsistiríaenutilizarellenguajeSQL,y,encasodequelabasededatosestéalojadaremotamenteenInternet,nopodríamoshacerlosinoesconaccesoporTELNETalservidordelabasededatos.
Nota:EnDesarrolloWebpuedesconocermáscosasdePHPyMySQL.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 35 de 117
EnlaseccióndePHP,podrasaprendermuchodePHP,algosobreMySQLeinclusosobreellenguajeSQL.EneldirectoriodedicadoaMySQLhayalgunasreferenciasaartículosyenlacesexternos.
EsteartículoesobradeMiguelAngelAlvarezFuepublicadoporprimeravezen19/07/2002Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 36 de 117
InstalareldriverODBCparaconectarconunabasededatosMySQL
InstruccionesparainstalareldriverODBCnecesarioparaconectarconunabasededatosMySQLdesdeunsistemaMicrosoftWindows.
InstalarestedriversirveparaquedesdeunsistemaMicrosoftWindowssepuedaaccederaunabasededatosMySQL.Lasaplicacionessonvariadas,porejemplopodemosutilizarloparacrearunDSNasociadoaunabasededatosMySQL,demodoquenuestraspáginasASPpodríanaccederadichabasededatos.OtraaplicaciónesaccederdesdeAccessalabasededatosMySQLyexportaroimportardatos(migrarlosdatosdesdeAccessaMySQLydesdeMySQLaAccess),inclusoparacrearunback-enddenuestrabaseMySQLeninterfazAccess.
PrimerohayquedescargarlaúltimaversióndeMyodbcdelapáginadeMysql:http://www.mysql.com/products/connector/odbc/
Nota:Puedequenuestrosistematengaqueactualizarse.EnelordenadorquetieneelsistemaWindowsXXyAccess2000habríaqueactualizaralaversión6deMicrosoftJet:
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q239114&
Cuandoyatenemostodo,instalamoslaactualizacióndeMicrosoftJet,ydescomprimimoseinstalamoseldriverOBDCdeMysql.Cuandopreguntaenlapantallade“DataSources”hazclicen“Close”paraterminar.
UnavezsehainstaladoeldriverODBC,accedealpaneldecontroldeOBDCde32Bits(BotónInicio->Configuración->Paneldecontrol->FuentesdedatosODBC32bits).
Enestepunto,tendrásqueelegirsiquieresutilizareldriverparaunsolousuario(DSNdeusuario),oparacualquierusuariodelordenador(DSNdeSistema).Unavezhayaselegidouno,hazclicenelbotónde“Agregar”paraañadirunanuevafuentededatosyacontinuación,seleccionaeldriverdeMysql.Aparecerálasiguientepantalla:
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 37 de 117
Enellatendrásquerellenarlossiguientescampos:
WindowsDSNname:
NombredelafuentededatosqueestarádisponibledesdeWindows.
Mysqlhost(nameorIP):
###
NombreodirecciónIPdelordenadordondeseencuentrainstaladoelservidorMysql.
MysqlDatabaseName:
Nombredelabasededatosconlaquesetrabajarádesdelafuentededatos
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 38 de 117
User:
Nombredeusuarioconelqueseaccederáalservidordebasesdedatos.
Password:
Contraseñadelusuario.
Port:
SirveparaespecificarelpuertoenelqueseencuentraelservidorMysql,hayqueponerunvalorencasodequenoseestéutilizandoelpredeterminado,queesel3306.
Unavezestánestasopcionesconfiguradas,sepuedehacerclicen"OK"paracerrarlasventanas.
EsteartículoesobradeCarlosLuisCuencaFuepublicadoporprimeravezen20/09/2002Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 39 de 117
ExportardatosdeMySQLaMicrosoftAccess2000
OsexplicamoscómorecuperarinformaciónalmacenadaenunservidordedatosMySQLhaciaunabaseAccess2000.
Migrardatosdeunabasededatosaotraesalgoaloquemuchosdenosotroshemostenidoqueconfrontarnosenalgúnmomento.AcontinuaciónosexplicamoscómorecuperarinformaciónalmacenadaenunservidordedatosMysqlhaciaunabaseAccess2000.
Nota:PararealizarestatareaesnecesarioquehayamosdescargadoeldriverODBCylohayamosinstaladoennuestrosistemaWindows.EstalaborsepuedeconocerenunartículodeDesarrolloWeb.com:InstalareldriverODBCparaMySQL.
ParaimportarunatabladeMysqlaMicrosoftAccess,desdeAccess,yconlabasededatosenlaquesequierenimportarlosdatosabierta,seleccionarelmenuArchivo->ObtenerdatosExternos->Importar.EnlapantalladeImportardatos,enlaopcionTipodearchivoseleccionarODBCdatabases().
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 40 de 117
Seleccionarorigendedatosdeequipo,ydentrodeesta,elnombredelafuentededatosquehemoscreadoanteriormente.Unavezlahasseleccionado,yhashechoclicsobre"Aceptar",aparecerálapantalladeconfiguracióndeldriverporsideseasmarcarparaestaacciónenconcreto,algunasdelasopcionesdeconfiguraciónqueapareceneneldriverODBC,sinodeseasmarcarninguna,clicsobre"OK".
Nota:PudieraserenalgúncasoquelostiposdelosdatosdelabaseenlossistemasMySQLyAccessnoseantotalmentecompatiblesyseproduzcaalgunaanomaliaalexportarlos.Realmenteesunaposibilidadquepensamos,aunqueenlaspruebasquehemosrealizadonohemosvistoningúntipodeproblema,bienesciertoqueloscamposquehemostrabajadonoeranmuyraros.
ApareceráunaventanadondepreguntaquétabladeMysqlsedeseaexportaraAccess:
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 41 de 117
Seleccionalatabla,yhazclicsobre"Aceptar"
Nota:SiestamosexportandolosdatoshaciaodesdeunservidordebasesdedatosalojadoenalgúnproveedordeHosting,tenemosquetenerencuentaqueestosnosiempreincluyenensupaquetebásicoelaccesoremotoalservidordebasededatos,orequieredeunavisoexplicitoporpartedelclienteparasuconfiguración.
Referencia:Sideseamosrealizarunamigracióndedatosenelotrosentido,esdecir,desdeAccesshaciaMySQL,serámuyindicadoleerotroartículoenDesarrolloWebqueexplicaelprocesodetalladamente.ExportardatosdeAccess2000aMySQL.
EsteartículoesobradeCarlosLuisCuencaFuepublicadoporprimeravezen24/08/2002Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 42 de 117
ExportardatosdeAccess2000aMySQL
ExplicamosunamaneraprácticademigrardatosdeunabasededatosAccessaunservidordedatosMySQL.
NoesdeextrañarquehayamoscomenzadoahacernuestrospinitosenlawebsirviéndonosdeunabasededatossencillacomoAccess.Tampocoesdeextrañarque,llegadoelmomento,pasemosacosasmásseriasynospasemosaunservidordedatoscomoMySQL.Aquíosmostramosunamanerabastanteprácticademigrarlosdatosdelaunaalaotra.
Nota:PararealizarestatareaesnecesarioquehayamosdescargadoeldriverODBCylohayamosinstaladoennuestrosistemaWindows.EstalaborsepuedeconocerenunartículodeDesarrolloWeb.com:InstalareldriverODBCparaMySQL.
ParaexportarunatablaaMysql,hayqueabrirlabasededatosyseleccionarlatabla.Después,hacerclicsobreArchivo->Exportar.Enlapantalladeexportar,enlaopciónGuardarcomotipo,seleccionarODBCdatabases().
Unavezsehahechoesto,apareceunaventanaquenospreguntaelnombrequelequeremosdaralatablaenMysql,pordefectoapareceelmismo.
Hazclicsobre"Aceptar",yaparecerálapantallaenlaquesepidequeseleccioneselorigendedatosODBC:
Nota:PudieraserenalgúncasoquelostiposdelosdatosdelabaseenlossistemasMySQLyAccessnoseantotalmentecompatiblesyseproduzcaalgunaanomaliaalexportarlos.Realmenteesunaposibilidadquepensamos,aunqueenlaspruebasquehemosrealizadonohemosvistoningúntipodeproblema,bienesciertoqueloscamposquehemostrabajadonoeranmuyraros.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 43 de 117
Seleccionarorigendedatosdeequipo,ydentrodeestaelnombredelafuentededatosquehemoscreadoanteriormente.Unavezlahasseleccionadoyhashechoclicsobre"Aceptar",aparecerálapantalladeconfiguracióndeldriverporsideseasmarcarparaestaacciónenconcretoalgunasdelasopcionesdeconfiguraciónqueapareceneneldriverODBC.Sinodeseasmarcarninguna,hazclicsobre"OK"ylosdatoscomenzaránaexportarse.
Nota:SiestamosexportandolosdatoshaciaodesdeunservidordebasesdedatosalojadoenalgúnproveedordeHosting,tenemosquetenerencuentaqueestosnosiempreincluyenensupaquetebásicoelaccesoremotoalservidordebasededatos,orequieredeunavisoexplicitoporpartedelclienteparasuconfiguración.
Referencia:Sideseamosrealizarunamigracióndedatosenelotrosentido,esdecir,desdeMySQLhaciaAccess,serámuyindicadoleerotroartículoenDesarrolloWebqueexplicaelprocesodetalladamente.ExportardatosdeMySQLaMicrosoftAccess2000.
EsteartículoesobradeCarlosLuisCuencaFuepublicadoporprimeravezen28/08/2002Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 44 de 117
AdministraryactualizarunabasededatosMySQLdesdeAccess
Sinuestraspáginasutilizanunabasededatosdebemoscontarconunaherramientadeadministraciónyactualizacióndelabasededatos,oprogramarlanosotros.IlustramoscomoAccesspuedeayudarnosahacerlofácil.
UnodelosmayoresproblemasdelosqueadoleceactualmenteMysqleselnoposeerunentornográficoquesatisfagaalamayorpartedelosusuarios.ExistenmagníficosproyectosatravésdepáginaWeb,comoPHPmysqlAdmin,peromuchasvecesteencuentrascongentequelegustaríateneralgoparecidoaunAccess,posibilidaddeincluirformulariosparalaentradadedatos,odeinformessobrelosdatosalmacenadosdentrodeunatabla.
DadoquenoexistehoyendíaningunaherramientaparecidaalAccessparatrabajarconMysql,elpresenteartículoexpondrálaformadetrabajarconlasbasesdedatosdeMysqlutilizandoelentornográficodeAccess.Alterminarlo,podrásutilizarlosformularios,consultaseinformesdeAccessconlosdatosdelosficherosdeMysql.
Deestaforma,elencargadodeactualizarlosdatosdeunapágina,podrátrabajardesdeAccess,conlacomodidaddelosformularios,losmenúsdesplegablesetc.,ylosdatosseránenviadosautomáticamenteaMysql.
| ImagendelaconsoladeMySQL
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 45 de 117
|| FormulariodeAccessqueaccedeaunabasededatosMySQL
|
Nota:Dosimágenesquesediferencianunmundo.ConlasdossepuedeadministrarunabasededatosMySQL,unacorrespondealaconsolaMySQL(laherramientamásbásica)ylaotraaunformularioconAccess,quesindudaofreceunainterfazmuchomásagradable.
Además,paralageneracióndeformularioseinformessepuedenutilizarlosasistentes...todounahorrodetiempo!!
Referencia:PararealizarestatareaesnecesarioquehayamosdescargadoeldriverODBCylohayamosinstaladoennuestrosistemaWindows.EstalaborsepuedeconocerenunartículodeDesarrolloWeb.com:InstalareldriverODBCparaMySQL.
UnaveztenemoseldriverMyODBCinstalado,loprimeroquehayquehacerescrearunabasededatosenblancodesdelacualsevincularánlastablas.Unavezcreada,sehaceclicsobrelaopcióndecrearnuevatabla.Aparecerálasiguienteventanaenlaqueseseleccionarácrearnuevatablavinculada:
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 46 de 117
Aparecelaventanadevincularunatabladeunabasededatos,enlaparteinferiorseseleccionaentipodearchivo:fuentededatosODBC()
AlhacerclicsobreVincular,aparecelaventanaparaseleccionarunOrigendedatos,seseleccionadentrodelapestañadefuentesdedatosdelEquipo,lafuentededatosquecreamosenlaprimerapartedelartículo:
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 47 de 117
Unavezseselecciona,sehaceclicsobreAceptar,yaparecelaventanadeconfiguracióndelafuentededatosODBCdeMysql.Comoyaestaconfigurada,hacemosclicsobreOK,yaparecerálaventanaenlaquesepuedenelegirentrelastablasquecontienelabasededatosparalacualhemosconfiguradolafuentededatosODBC.
Seseleccionaunatabla,yacontinuaciónapareceráunaventanadondedeberemosespecificar,hastaunmáximodediez,loscamposqueformanpartedelaclave.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 48 de 117
Seseleccionanloscampos,ysehaceclicsobreaceptar.
ApareceráunanuevatabladentrodelabasededatosdeAccess.Adiferenciadelrestodetablas,estanoexistefísicamentedentrodelficherodeAccess,sinoquetodaslasmodificacionesqueserealizansobrelamisma,seenvíanatravésdeODBCalficheroMYSQL.
Apartirdeahora,sepodráncrearformularios,consultaseinformessobreestatablatalycomosehacenormalmentedesdeAccess.
Nota:AlgunosproveedoresdeHostingnoincluyenensupaquetebásicoelaccesoremotoalservidordebasededatos,orequieredeunavisoexplicitoporpartedelclienteparasuconfiguración.
EsteartículoesobradeCarlosLuisCuencaFuepublicadoporprimeravezen20/10/2002Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 49 de 117
Connector/J
EldriverConnector/JpermitetrabajardesdeJavaconbasesdedatosMySQL.
MysqlConnectoresundrivercreadoporMysqlABquetepermitirátrabajarconMysqldesdeprogramasescritosenJava.Adiferenciadeotrosdrivers,esteesdelibredistribución,ytieneunbuenrendimiento.
MySQLConnector/JesundrivernativodeJavaqueconviertelasllamadasgeneradasporJDBCenelprotocoloderedqueutilizalabasededatosdeMysql.PermitealdesarrolladortrabajarconellenguajedeprogramaciónJavaydeestaformaconstruirprogramasqueinteractuanconMysql.
ElMySQLConnector/JesundriverJDBCtipoIVycontienetodaslascaracteristicasdeJDBCparamanejarMysql.
Eneldesarrollodelasúltimasversionessehaincrementadobastantelavelocidaddeldriver,ganandoenrapidezasicomoeneficiencia.Eldriversoportaresultadosdedatos"streaming"loquepermitealusuariorecogerungrannúmerodefilassinlanecesidaddeutilizarunbufferdememoria.EldriverimplementaunprotocolodepaquetesgrandequepermiteenviarfilasycamposBLOBsdehasta2GigaBytes.EnlaversióndedesarrollodelmismoseimplementanlasnuevascaracterísticasañadidasenelAPI3.0deJDBC.
Eldriverhasidoprobadoparatrabajarconlassiguientesherramientasdebasesdedatosyservidordeaplicaciones:
ApacheJbossBEAWeblogicIBMVisualAgeforJavaIBMWebSphereApplicationServer4.0ForteforJavaOracleSQL/JTableGen
Descarga
ParainstalareldriverhayquedescargarlodelapáginadeMysqlConnector/J
EsteartículoesobradeCarlosLuisCuencaFuepublicadoporprimeravezen20/09/2002Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 51 de 117
CopiasdeseguridadenMySQL
Conceptosatenerencuentaalahoradehacerunacopiadeseguridadymétodosdisponiblesparaello.
ElgestordeBasesdedatosMySQLincluyevariasherramientasparalarealizacióndecopiasdeseguridaddelabasededatos.Medianteellaspodremosponerasalvonuestrosdatos,paraque,eneleventualcasodequesepierdan,poderlosrecuperar.
Alahoradehacerunacopiadeseguridad,loprimeroquesehayquetenerencuentaeslaintegridaddelosdatosqueseesténguardando.Entodosloscasosesnecesarioquehayaintegridadenlosdatosdeunatabla,conestoquierodecirquetodoslosdatosdelatabladeberánestarescritosenlamisma,estopuedesonarunpocoraro,perotalycomopasacontodoslosgestoresdebasesdedatos,Mysqldisponedediversas"caches"enlasquesealmacenandatostemporalmenteconelobjetivodemejorarenrendimiento,deformaqueporejemplo,unavezhechaunamodificaciónenunatabla,puedeserquelosdatosnoseguardeninmediatamenteendisco,hastaquetermine,porejemplo,unaconsultaqueseestabaejecutando.Poresto,esnecesario"forzar"aMysqlaescribirtodoslosdatoseneldisco,mediantelasentencia"FlushTables".
Ademásesnecesarioquenoseescribaenlastablasmientrasseestahaciendolacopiadeseguridaddelabasededatos,queseconsigueconelcomando"locktables",seguidodelnombredelatabla.Puedehaberbasesdedatosenlasqueseanecesariobloqueartodaslastablasalmismotiempoantesdehacerlacopiadeseguridad.
ExistenvariasopcionespararealizarlacopiadeseguridaddeunabasededatosdeMysql,
Enprimerlugar,sepodríautilizaralgunaherramientacomercialquegestionetodoelproceso,estotienecomoventajalasimplicidaddelmétodo,ycomoinconveniente,quenosuelensergratis,sinoquehayquepagarlicenciaporlautilizacióndelosmismos.Estasherramientasnosecubriránenestereportaje.Ensegundolugar,yapartirdelaversión3.23.25yposteriores,existelaposibilidadderealizarunacopiadeseguridadatravésdelasentenciasql"backuptable".Comoterceraopción,esposiblerealizarcopiasdeseguridadatravésdelasherramientasquenosproporcionaelpropiogestordebasededatos,comopuedensermysqldumpómysqlhotcopy.
Nota:Llegadoaestepuntonecesitarásaccederalossiguientesartículos,enlosquesedetallaelprocesodecreacióndelascopiasdeseguridadMySQLpordosmétodos:
BackupMySQLmedianteSentenciasSqlBackupMySQLconmysqldump
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 52 de 117
EsteartículoesobradeCarlosLuisCuencaFuepublicadoporprimeravezen06/06/2003Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 53 de 117
BackupMySQLmedianteSentenciasSql
CómorealizarunbackupdelastablasdeunabasededatosysurecuperaciónapartirdesentenciasSQL.
VeremoscómorealizarunacopiadeseguridaddelatablaysurecuperaciónapartirdesentenciasSQL.
Backupdelosdatos
Estecomandonospermitehacerunacopiadelosficherosdelastablasdelascualesqueremoshacerunbackup,actualmentesolofuncionacontablasdetipoMyIsam,ycopiatantolosficheros.frmquecontienenladefinicióndelatabla,comolosficheros.myd,quecontienenlosdatos.
Antesdeejecutarse,guardatodosloscambiosquepudierahaberenmemoriadelatabla,deformaquequededeunamaneraconsistente.Asimismo,durantelaejecucióndelcomando,bloquealatablasobrelaqueseestáhaciendolacopiadeseguridadparaquelosdatosseanconsistentesenlatabla.Hayquetenerencuentaqueestecomandovabloqueandounaaunalastablas,segúnvahaciendolacopiadeseguridad.Estopodríaprovocarinconsistenciadedatosaniveldebasededatos,siesnecesariohacerunbackupdetodaslastablasenuninstante,encuyocasohabríaqueutilizarelcomando"locktables"parabloqueartodaslastablasantesdecomenzarlacopiadeseguridad.
Alfinalizarelcomandodevuelveunatabla,quecontieneloscampos:
|Columna|Valores||Table|Nombredelatabla||Op|Siemprepone"backup"||Msg_type|Puedecontenerstatus,error,infoowarning.||Msg_text|Mensajedescriptivodelresultadodelaoperación|
Yenlaquehayunregistroporcadatablaquesobrelaquesehahechobackup.
Pararealizarunacopiadeunatablallamadapedidos,alacarpetaBackups:
BACKUP TABLE pedidos TO `/backups/`
Recuperacióndedatos
Paracomplementarlasentencia"Backuptable",Mysqldisponedelasentencia"Restoretable",quepermiterestaurarunatablaapartirdeunacopiadeseguridadqueseharealizadoconelcomando"BackupTable".
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 54 de 117
Estaopciónsolosepuedeutilizarsilatablaquesepretenderestaurarnoseencuentraenlabasededatos,yaqueencasoafirmativomostraráunmensajedeerror.AligualqueelcomandodeBackup,estaopciónsóloestadisponibleparalastablasdetipoMyIsam,yapartirdelaversión3.23.25.
Comoelcomandodebackup,nocopialosficherosdeíndices,elcomandopararecuperarlosdatos,vuelveareindexartodosloscamposquecontieneníndices,creandolosficheroscorrespondientes.Aligualqueelcomandoparahacercopiasdeseguridad,invocaralcomando"Restoretable"devuelveunatabla,conunregistroporcadatablasobrelaquesehahecholabasededatos,yquecontienelasiguienteinformación:
|Columna|Valores||Table|Nombredelatabla||Op|Siemprepone"restore"||Msg_type|Puedecontenerstatus,error,infoowarning.||Msg_text|Mensajedescriptivodelresultadodelaoperación|
PararestaurarunatablallamadapedidosdelacarpetaBackupsalabasededatos:
RESTORE TABLE pedidos FROM `/backups/`
Nota:ParacontinuaraprendiendométodospararealizarunbackupdeunabasededatosMySQLtenemoselartículoBackupMySQLconmysqldump,queenseñaamanejarelcomandomysqldumpparahacerunacopiadeseguridaddelabasededatosentera.
EsteartículoesobradeCarlosLuisCuencaFuepublicadoporprimeravezen06/06/2003Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 55 de 117
BackupMySQLconmysqldump
ElcomandomysqldumpdelsistemagestordebasededatosMySQLsirveparahacercopiasdeseguridad.Loexplicamoscondetenimientoyvemossusopcionesmásimportantes.
EnesteartículovamosaconocerunaherramientaesencialdeMySQL,pararealizarcopiasdebasesdedatos,obackups,enellenguajeSQL.Setratademysqldump,uncomandoquefuncionaenelterminal,compatibleconcualquiersistemaoperativodondecorraMySQL.Comenzaremosanalizandolasopcionesdisponiblesyalfinaldaremosunaseriedeejemplosdeusoqueresultaránútilesparasituacionesvariadas.
Estecomandopermitehacerlacopiadeseguridaddeunaomúltiplesbasesdedatos.Ademáspermitequeestascopiasdeseguridadsepuedanrestaurarendistintostiposdegestoresdebasesdedatos,sinlanecesidaddequesetratedeungestordeMySQL.Estoloconsiguecreandounosficheros,quecontienentodaslassentenciasSQLnecesariasparapoderrestaurarlatabla,queincluyendesdelasentenciadecreacióndelatabla,hastaunasentenciainsertporcadaunodelosregistrosqueformanpartedelamisma.
Parapoderrestaurarlacopiadeseguridad,bastaráconejecutartodaslassentenciasSQLqueseencuentrandentrodelfichero,biendesdelalíneadecomandosdemysql,odesdelapantalladecreacióndesentenciassqldecualquierentornográficocomopuedeserelMysqlControlCenter.
Laslimitacionesdelarestauracióndependerándelasopcionesquesehanespecificadoalahoradehacerlacopiadeseguridad,porejemplo,siseincluyelaopción--add-drop-tablealhacerlacopiadeseguridad,sepodránrestaurantablasqueexistenactualmenteenelservidor(borrándolasprimero).Porloqueesnecesarioestudiarprimerolosprocedimientosqueseutilizarántantoenlacopiacomoenlarestauración,paraquetodosalgacorrecto!
Opcionesdisponiblesenelcomando
Elcomandodisponedeunaampliavariedaddeopcionesquenospermitirárealizarlacopiadelaformamásconvenienteparaelpropósitodelamisma.Algunasdelasopciónesmásimportantesson:
--add-locks
AñadeLOCKTABLESantes,yUNLOCKTABLEdespuesdelacopiadecadatabla.
--add-drop-table
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 56 de 117
Añadeundroptableantesdecadasentenciacreate
-A,--all-databases
Copiatodaslasbasesdedatos.Eslomismoqueutilizar--databasesseleccionandotodas.
-a,--all
IncluyetodaslasopcionesdecreaciónespecíficasdeMysql.
--allow-keywords
Permitelacreacióndenombesdecolumnasquesonpalabrasclave,estoserealizaponiendodeprefijoacadanombredecolumna,elnombredelatabla
-c,--complete-insert
Utilizainsertsincluyendolosnombresdecolumnaencadasentencia(incrementabastanteeltamañodelfichero)
-C,--compress
Comprimelainformaciónentreelclienteyelservidor,siambossoportancompresión.
-B,--databases
Paracopiarvariasbasesdedatos.Enestecaso,noseespecificantablas.Elnombredelosargumentosserefierealosnombresdelasbasesdedatos.SeincluiráUSEdb_nameenlasalidaantesdecadabasededatos.
--delayed
InsertalasfilasconelcomandoINSERTDELAYED.
-e,--extended-insert
UtilizalasintaxisdeINSERTmultilinea.(Proporcionasentenciasdeinsertmáscompactasyrápidas.)
-#,--debug[=option_string]
Utilizacióndelatrazadelprograma(paradepuración).
--help
Muestramensajedeayudaytermina.
--fields-terminated-by=...
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 57 de 117
--fields-enclosed-by=...--fields-optionally-enclosed-by=...--fields-escaped-by=...--lines-terminated-by=...
Estasopcionesseutilizanconlaopción-TytienenelmismosignificadoquelacorrespondientecláusulaLOADDATAINFILE.
-F,--flush-logs
Escribeendiscotodosloslogsantesdecomenzarconlacopia.
-f,--force,
ContinúaaunqueseproduzcaunerrordeSQLdurantelacopia.
-h,--host=..
CopialosdatosdelservidordeMysqlespecificado.Elservidorpordefectoeslocalhost.
-l,--lock-tables.
Bloqueatodaslastablasantesdecomenzarconlacopia.LastablassebloqueanconREADLOCALparapermitirinsertsconcurrentesencasodelastablasMyISAM.
Cuandoserealizalacopiademúltiplesbasesdedatos,--lock-tablesbloquealacopiadecadabasededatosporseparado.Deformaqueestaopciónnogarantizaquelastablesseránconsistenteslógicamenteentredistintasbasesdedatos.Lastablasendiferentesbasesdedatossecopiaránenestadoscompletamentedistintos.
-K,--disable-keys
Seincluiráenlasalida/!40000ALTERTABLEtb_nameDISABLEKEYS/;y/!40000ALTERTABLEtb_nameENABLEKEYS/;EstoharáquelacargadedatosenunservidorMySQL4.0serealicemásrápidodebidoaquelosíndicessecrearándespuésdequetodoslosdatoshayansidorestaurados.
-n,--no-create-db
NoseincluiráenlasalidaCREATEDATABASE/!32312IFNOTEXISTS/db_name;Estalíneaseincluyesilaopción--databaseso--all-databasesfueseleccionada.
-t,--no-create-info
Noincluirálainformacióndecreacióndelatabla(sentenciaCREATETABLE).
-d,--no-data
Noincluiráningunainformaciónsobrelosregistrosdelatabla.Estaopciónsirveparacrearunacopiadesólolaestructuradelabasededatos.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 58 de 117
--opt
Lomismoque--quick--add-drop-table--add-locks--extended-insert--lock-tables.Estaopciónledeberíapermitirrealizarlacopiadeseguridaddelabasededatosdelaformamásrápidayefectiva.
-pyour_pass,--password[=your_pass]
Contraseñautilizadacuandoseconectaconelservidor.Sinoseespecifica,`=your_pass',mysqldumppreguntarálacontraseña.
-P,--port=...
PuertoutilizadoparalasconexionesTCP/IP
--protocol=(TCP|SOCKET|PIPE|MEMORY)
Especificaelprotocolodeconexiónqueseutilizará.
-q,--quick
Noalmacenaenelbufferlasentencia,lacopiadirectamentealasalida.Utilizamysql_use_result()pararealizarlo.
-Q,--quote-names
Entrecomillalastablasynombresdecolumnaconloscaracteres``'.
-r,--result-file=...
Redireccionalasalidaalficheroespecificado.EstaopciónsedeberíautilizarenMSDOS,porqueprevienelaconversióndenuevalínea\n' en nueva línea y retorno de carro\n\r'.
--single-transaction
UtilizaelcomandoBEGINantesderealizarlacopiadesdeelservidor.EsmuyútilconlastablesInnoDByelniveldetransacciónREAD_COMMITTED,porqueenestemodorealizarálacopiadeseguridadenunestadoconsistentesinnecesidaddebloquearlasaplicaciones.Consultarelmanualparamásdetalles.
-S/path/to/socket,--socket=/path/to/socket
Elficherodesocketsqueseespecificaalconectarallocalhost(queeselhostpredeterminado).
--tables
sobreescribelaopción--databases(-B).
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 59 de 117
-T,--tab=path-to-some-directory
Creaunficherotable_name.sql,quecontienelasentenciadecreacióndeSQL,yunficherotable_name.txt,quecontienelosdatosdecadatabla.Elformatodelfichero`.txt'serealizadeacuerdoconlasopciones--fields-xxxy--lines--xxxoptions.Nota:Estaopciónsólofuncionasielcomandomysqldumpseejecutaenlamismamáquinaqueeldemoniomysqld,elusuariodeberátenerpermisosparacrearyescribirelficheroenlaubicaciónespecificada
-unombre_usuario,--user=nombre_usuario
Elnombredeusuarioqueseutilizarácuandoseconecteconelservidor,elvalorpredeterminadoeseldelusuarioactual.
-v,--verbose
Vamostrandoinformaciónsobrelasaccionesquesevanrealizando(máslento)
-w,--where='cláusulawhere'
Sirvepararealizarlacopiadedeterminadosregistros
-X,--xml
Realizalacopiadeseguridadenundocumentoxml
-x,--first-slave
Bloqueatodaslastablasdetodaslasbasesdedatos
Ejemplosdecomandosmysqldump:
Pararealizarlacopiaseseguridaddelabasededatosmibasealficherocopia_seguridad.sql
mysqldump --opt mibase > copia_seguridad.sql
Otroejemplomáscomplejodecomandomysqldumpparahacerelbackupdeunabasededatoseselsiguiente:
mysqldump --opt --password=miclave --user=miuser mibasededatos > archivo.sql
Enesteúltimocasoestamosindicandounnombredeusuarioyunaclaveparaaccederalabasededatossobrelaqueseestáhaciendoelbackup:mibasededatos.LassentenciasSQLparareconstruiresabasededatossevolcaránenelficheroarchivo.sql.
mysqldump --opt --password=clave --user=usuario Base_de_datos tabla1 tabla2 > backupdostablas.sql
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 60 de 117
Estecomandoesprácticamenteigualqueelanterior,peroenestecasonosrealizalacopiadeseguridaddeúnicamentedostablas"tabla1"y"tabla2",queestánenlabasededatos"Base_de_datos".
Restaurarlabasededatos
Sideseamosrecuperarlainformacióndeunficheropararestaurarunacopiadeseguridaddelabasededatosloharemosconelcomandomysql.Utilizaremosunasintaxiscomoesta:
mysql mibase < archivo.sql
Enesteejemploserestauraríalabasedededatosmibaseconelbackupalmacenadoenelficheroarchivo.sql.
Otroejemplomáscomplejodecomandopararestaurarunabasededatoseselsiguiente:
mysql --password=miclave --user=miuser mibase < archivo.sql
Eselmismoejemploqueelanterior,peroindicandounnombredeusuarioyunaclaveconlasqueaccederalabasededatosmibase.
EsteartículoesobradeCarlosLuisCuencaFuepublicadoporprimeravezen20/06/2003Disponibleonlineenhttp://desarrolloweb.com/articulos/backup-mysql-mysqldump.html
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 61 de 117
SubirunabasededatosalsevidordeInternet
ElsegundopasoparasubirunaaplicaciónPHPalservidorconsisteencolocarlabasededatosenel
Apartedelosarchivosdelapágina,debemossubirlabasededatosconlaquetenemosquetrabajar.LasbasesdedatosconlasquetrabajaPHPsonmuyvariadasyendistintoscasospodemosutilizarunauotra,porloquelosmodosdesubirlabasededatostambiénpuedenvariar.
Nota:Esteartículoylossucesivos,quetratansobresubirunabasededatosMySQLalservidor,seenglobantantodentrodelManualdePHPcomodelTallerdeMySQL.Porello,seráimportantedisponerdeconocimientosdeambastecnologíasparaentenderyaprovecharestasexplicaciones.
EsmuycorrientequenuestroproveedordehostingofrezcajuntoconPHPlabasededatosMySQL,asíquelasnotasparasubiresabasededatosalservidordeesteartículovanencaminadasaofrecersolucionesparaesabasededatos.
LabasededatosMySQLnosepuedesubirporFTP,comoquesehacíaconlosarchivosdelcódigoPHP.Parasubirlatendremosqueutilizarotrosmecanismos.Voyadistinguirentretrescasosdistintosenlosquenospodríamosencontrarenestemomento:
1. Labasededatosquepretendemossubirestávacía.Tansólohemoscreadolastablas,peronohemosintroducidodatosenellaso,alosumo,tienenalgúndatoquehemosintroducidodepruebas.
2. LabasededatosquequeremossubirestácompletayesunabasededatosMySQL.Enestecasotenemoscreadalabasededatosenlocalycontodalainformacióndentroy,porsupuesto,queremosqueesainformaciónquedetambiénenlabasededatosremota.
3. Labasededatosestácompleta(comoelcasoanterior),peronoesunabasededatosMySQL.Enestecasoestaríamoshaciendounamigracióndelabasededatosdeunsistemagestoraotro.
Veremoslostrescasosporseparadoenadelante,aunque,antesdeello,vamosamostrarunasherramientasquenosservirándemuchaayudaparalaadministracióndecualquierbasededatosremota.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 62 de 117
LasherramientasenconcretoserelatanenelmanualTallerdeMySQL,sonlassiguientes:
PhpMyAdmin.UnaaplicacióncreadaenPHPquepodemosinstalarennuestroespaciodealojamientoparaadministrarlabasededatos.MysqlControlCenter(enadelanteMyCC).UnaaplicaciónWindowsquepermitecontectarseamúltiplesbasesdedatosMySQL,queseencuentrenenlocaloenremoto.Access.TambiénpermiteadministrarunabasededatosMySQLconectadaenlocaloenremoto.Enestecasoseutilizaunainterfazquemuchosyaconocen,comoesAccess,paraadministrarunabasededatosquenadatienequevercondichoprograma.
Enlostrescasosloquenospermiterealizarelsoftwaredeadministraciónsontareassobrelabasededatosdetodotipo,comopuedensercreartablas,modificarlas,insertardatos,borrarlos,editarlos.Modificaroborrartablasocamposdelasmismas,etc.
Laeleccióndeunaherramietaodeotrapasaporlosrecursosquenospermitanutilizarennuestroproveedor.Básicamente,loquenospuededecantaraunaopciónuotra,essipermitenonoconectardemaneraremotalabasededatosMySQL.Conozcoalojamientosdondesepermiteesaconexiónremotaydondeno.
SinopermitenconectarnosremotamentenosdecantaremosporPhpMyAdmin,puesesunaaplicaciónPHPqueseconectaenlocalyalaqueseaccededesdeunapáginawebyesolopermitentodoslosproveedores,inclusohaymuchosquetieneninstaladoyaestesoftwareparaadministrarlasbasesdedatos.
Encasodequesínospermitanconectarnosremotamenteconlabasededatos,eligiremosMyCCoAccess,quesonaplicacionesWindowsmuchomáspotentesyrápidasquelasqueutilizaninterfazweb,comoPhpMyAdmin.EspreferibleutilizarMyCCporqueestáespecialmentedesarrolladoparaconectaryoperarconbasesdedatosMySQL.
EsteartículoesobradeMiguelAngelAlvarezFuepublicadoporprimeravezen26/06/2003Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 63 de 117
SubirbasededatosMySQLvacíaalservidor
Labasededatosquepretendemossubirestávacía.Tansólohemoscreadolastablas,peronohemosintroducidodatosenellaso,alosumo,tienenalgúndatoquehemosintroducidodepruebas.
Esmuynormalquehayamosdiseñadounabasededatosparanuestroproyectodesde0,definiendolasdistintasentidadesdenuestromodelodedatos,juntoconsuscamposysustipos.
Enestoscasoslomásprobableesquelabasededatosestévacía,obiencontengadatosquehayamosintroducidoamododepruebayquenoqueramosconservarcuandosubamoslaaplicaciónaInternet.
Laopciónmásinteresanteentoncespodríasercrearotravezlastablasquetenemosenlocalenlabasededatosremota.Paraellotenemosdosposibilidades:
Sitenemospocastablasybastantesencillas:LaspodemoscrearenremotoconalgunaherramientacomoPhpMyAdminoMyCC.
Sitienemuchastablasy/omuycomplicadas:Larecomendaciónseríahacerunbackupdelaestructuraenlocalyrestaurarlaenremoto.Estonosevitarátenerquevolveracreartodaslastablasydefinirtodossuscamposysustipos.Puedeserunpocomáscomplicadoperosindudanosahorrarátiempo.
ParahacerelbackupdelaestructuraenlocalpodemosutilizaralgunaherramientacomoPhpMyAdmin,obienutilizarelcomandomysqldumpdesdelíneadecomandosdeMS-DOS.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 64 de 117
HerramientadebackupdePhpMyAdmin.Estámarcadalaopcióndeextraersolamentelaestructuradelastablas.Simarcamosademáslacasilla"Send",nuestronavegadorsedescargaráelbackupenunficherodetexto.Sinolopulsamossimplementesevisualizará.
Loquetenemosquehacerenestecasoesunbackupdelaestructuradelabasededatos,esdecir,los"createtables"osentenciasSQLparacrearlastablas.Seríaunmontóndesentenciasconestaforma:
# --------------------------------------------------------
#
# Table structure for table 'comentario'
#
CREATE TABLE comentario (
id_comentario int(5) unsigned NOT NULL auto_increment,
id_articulo int(4) DEFAULT '0' NOT NULL,
comentario text NOT NULL,
fecha int(14) unsigned DEFAULT '0' NOT NULL,
revisado tinyint(1) DEFAULT '0' NOT NULL,
nombre_comentario varchar(100) DEFAULT 'Nombre no especificado' NOT NULL,
email_comentario varchar(100) DEFAULT 'Email sin especificar' NOT NULL,
tipo tinyint(1) unsigned DEFAULT '1' NOT NULL,
PRIMARY KEY (id_comentario)
);
PararestaurarestassentenciastenemosopcionestantodentrodePhpMyAdmincomodeMyCC.EnamboscasosloquetenemosquehaceresejecutarestassentenciasenelservidorMySQLremoto.EnPhpMyAdmintenemosuncampoparaintroducirsentenciasSQLytambiénotrocampoparaseleccionarunarchivodetextocontodaslassentenciasSQL,paraejecutarlasunadetrásdeotra.EnMyCCtenemosunbotónquenospermiteabrirunaconsoladondeintroducirunaovariassentenciasSQLyejecutarlas.
HerramientadebackupyrestauracióndePhpMyAdmin
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 65 de 117
BotónparaintroducirsentenciasSQLenMyCC
Repetimos,estosólonosserviráparasubirlaestructuradelabasededatosynolosdatosquecontenga.Sideseamossubirtambiénlainformacióndelabasededatosentoncesdebemosutilizarotrasestrategias,relatadaspróximamente.
EsteartículoesobradeMiguelAngelAlvarezFuepublicadoporprimeravezen26/06/2003Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 66 de 117
SubirunabasededatosMySQLconlaestructuraylosdatos
ComotransferirunabasededatosMySQLquetenemosenlocalanuestroservidorremoto,incluyendotantolaestructuradelastablascomosusdatos.
Silabasededatosquedeseamossubirestállenadeinformaciónydeseamosqueseconserveunavezsubidalabasededatosaremoto,tenemosquerealizarunbackupdelabasededatosyrestaurarloenremoto.
Nota:EstasrecomendacionesestánpensadasparasubirunabasededatosMySQLquepodamostenerenlocalaunabasededatosMySQLquehayamoscontratadoenremoto.SilabaseorigennoesMySQLestaríamoshablandodeunamigracióndebasesdedatos,peroestoloveremosenunartículomásadelante.
Enestecasoelprocedimientoseríamuyparecidoaldesubirunabasededatosvacía,relatadoanteriormente,conlasalvedaddequeahoradebemosextraernosololaestructuradelabasededatos,sinotambiénlosregistrosquecontiene.
Paraellopodemosutilizarmysqldump,segúnserelataenesteartículo,obienPhpMyAdmin,seleccionandolaopciónqueindicaqueelbackupcontengalaestructuraylosdatos(Structureanddataenversioneseninglés).
LaestructuraylosdatosvendránenunficherodetextoconunaseriedesentenciasSQLparacrearlastablasylosinsertnecesariosparaintroducircadaunodelosdatos.
Pararestaurarlabasededatosloharemostalcomoseharelatadoparaelcasodequelabasededatosestuvieravacía,conlaayudadeunainstalacióndePhpMyAdminenremotoounMyCCqueseconectealabasededatoscontratadaenelservidordeInternet.
Sitenemosproblemasparasubirelficherodebackupdelabasededatosesposiblequeennuestroproveedordealojamientonospuedaayudarasubirelficheroyrestaurarlo.Comoelproveedordisponedelosservidoresensuspropiasinstalaciones,tienemuchasmásposibilidadesquenosotrosparatrabajarconlasbasesdedatos,sintemoraquelaslentascomunicacionesporInternetarrojenerroresenlarestauracióndelosdatos.
Sinuestroproveedornopuedeayudarnos,seguramentedispongaynosindiquealgúnmecanismopararealizarlatareasinlugaraerrores.Puedeocurrinosconalgúnproveedorquenosdigaqueseencargadetodoperonosexijaelpagodelashorasdetrabajodelinformáticoquevaarestaurarelbackupdelabasededatos.Sinoponefacilidadesnisiquieraenesto
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 67 de 117
posiblementeseamejorirpidiéndolesquenosdevuelvaneldineroinvertidoporquesuservicionoseríamuybueno.
EsteartículoesobradeMiguelAngelAlvarezFuepublicadoporprimeravezen23/07/2003Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 68 de 117
MigrarunabasededatosaMySQL
IndicacionesútilesparamigrarunabasededatosaMySQL,esdecir,cuandotenemosquesubirunabasededatoslocalencualquiergestoraunabasededatosremotaenMySQL.
Elúltimocasoenelquenospodemosencontraralahoradesubirunabasededatosanuestroproveedordealojamientoesquelabasededatoslatengamoscreadaenlocal,peroenunsistemagestordistintodelquevamosautilizarenremoto.EnremotosuponemossiemprequevamosautilizarlabasededatosMySQL.EnlocalpodríamosdisponerdeunabasededatosAccess,SQLServerodeotrosistemadebasededatos.
Elprocesodelamigraciónpuedeserbastantecomplejoy,comohaytantasbasesdedatosdistintas,difícildedarunarecetaquefuncioneentodosloscasos.Además,apartedeladificultaddetransferirlainformaciónentrelosdossistemasgestoresdebasededatos,tambiénnosinfluirámuchoenlacomplejidaddelproblemaeltipodelosdatosdelastablasqueestamosutilizando.Porejemplo,lasfechas,loscamposnuméricoscondecimalesolosboleanospuedendarproblemasalpasardeunsistemaaotroporquepuedenalmacenarsedemanerasdistintaso,enelcasodelosnúmeros,conunaprecisióndistinta.
RecomendacionesparamigrardeAccessaMySQL
SinuestrabasededatosanteriorestabaconstruidaenAccesslotenemosbastantefácil,graciasaqueMySQLdisponedeundriverODBCparasistemasWindows,quenospermiteconectarAccessconelpropioMySQLypasarinformaciónfácilmente.
EstetemaestárelatadoenelartículoExportardatosdeMySQLaAccess,aunquehayqueindicarquesideseamoshacerunaexportacióndesdeAccessenlocalaMySQLenremotopuedehaberproblemasporquenotodoslosalojadorespermitenlasconexionesenremotoconlabasededatos.Sinotenemosdisponibleunaconexiónenremotoconnuestroservidordebasesdedatosvamosatenerquecambiarlaestrategiaunpoco.
LaideaenesteúltimocasoesinstalarMySQLenlocalyrealizarlamigracióndesdeAccessenlocalaMySQLenlocalyluegopodríamoshacerunbackupdelabasededatoslocalysubirlaaremoto,talycomoseharelatadoantes.
RecomendacionesparamigrardesdeSQLServeraMySQL
Laverdadesquenohetenidoestecasonunca,perohayquedecirqueAccesstambiénnospuedeayudarenestecaso.AccesspermiteseleccionarunabasededatosSQLServerytrabajardesdelapropiainterfazdeAccess.LaideaesqueAccesstambiénpermitetrabajarconMySQLyposiblementehaciendounpuenteentreestosdossistemasgestorespodemosexportardatos
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 69 de 117
deSQLServeraMySQL.
LoqueesseguroqueutilizandoelpropioAccessdepuentepodríamosrealizareltrabajo.PrimeroexportandodeSQLServeraAcessyluegodesdeAccessaMySQL.
Otrasbasesdedatosuotrastécnicas
SilabasededatosorigendisponedeundriverODBCnohabrá(enteoría)problemaparaconectarlaconAccess,demanerasimilaracomoseconectaconMySQL.EntoncespodríamosutilizarAccessparaexportarlosdatos,porquedesdeallísepodríanaccederalosdossistemasgestoresdebasesdedatos.
SinotenemosAccess,olabasededatosoriginalnotienedriverODBC,obiennonosfuncionacorrectamenteelprocesoynosabemoscómoarreglarlo,otraposibilidadesexportarlosdatosaficherosdetexto,separadosporcomasoalgoparecido.Muchasbasesdedatostienenherramientasparaexportarlosdatosdelastablasaficherosdetexto,loscualessepuedenluegointroducirennuestrosistemagestordestino(MySQL)conlaayudadealgunaherramientacomoPhpMyAdmin.
Paraello,enlapáginadepropiedadesdelatablaencontraremosunaopciónparahacerelbackupdelatablayparaintroducirficherosdetextodentrodeunatabla(Inserttextfilesintotableeninglés).
Accediendoaeseenlacepodremosverunformulariodondeintroducirlascaracterísticasdelficherodetexto,comoelcarácterutilizadocomoseparadordecampos,oelterminadordelíneas,etc,juntoconelpropioarchivoconlosdatos,yPhpMyAdminseencargarádetodoeltrabajodeincluiresosdatosenlatabla.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 70 de 117
Comosehabrásupuesto,esnecesariotenercreadalatablaenremotoparaquepodamosintroducirlelosdatosdelficherodetexto.
Cambiosdeunformatodedatosaotro
Todalamigracióntienequetenerencuentamuyespecialmente,comoyaseseñaló,lasmanerasquetengacadabasededatosdeguardarlainformación,esdecir,delformatodesustiposdedatos.Tenemosquecontarsiempreconlaposiblenecesidaddetransformaralgunosdatoscomopuedenserloscamposboleanos,fechas,camposmemo(textoconlongitudindeterminada),etc,quepuedenalmacenarsedemanerasdistintasencadaunodelossistemasgestores,origenydestino.
Enalgunoscasosposiblementetengamosquerealizaralgúnscriptquerealiceloscambiosnecesariosenlosdatos.Porejemplopuedeserparalocalizarlosvaloresboleanosguardadoscomotrue/falseavaloresenteros0/1,queescomoseguardaenMySQL.Tambiénlasfechaspuedensufrircambiosdeformato,mientrasqueenAccessaparecenencastellano(dd/mm/aaaa)enMySQLaparecenenelformatoaaaa-mm-dd.PHPpuedeayudarnosenlatareadehacerestescript,tambiénVisualBasicScriptparaAccesspuedehacerestastareascomplejasyelpropiolenguajeSQL,abasedesentenciasdirigidascontralabasededatos,puedeservirparaalgunasaccionessencillas.
EsteartículoesobradeMiguelAngelAlvarez
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 71 de 117
Fuepublicadoporprimeravezen23/07/2003Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 72 de 117
MySQLporlíneadecomandos
AccesoaunservidorMySQLyadministracióndelabasededatosporlíneadecomandos.
EsmuynormalqueutilicemosMySQLatravésdepáginasPHPyparaadministrarlabasededatosutilicemosunprogramacomoPhpMyAdmin,peroavecesnonosquedaotroremedioqueaccederalabasededatosatravésdelalíneadecomandos.
MySQLtieneunprograma,quesellamaconelmismonombredelabasededatos(mysql)quesirveparagestionarlabasedatosporlíneadecomandos.Eseprograma,enunainstalacióndeWindowsseencuentraenundirectoriocomo
C:\Archivosdeprograma\MySQL\MySQLServer4.1\bin
Eldirectoriopuedevariar,porejemplo,puedeestarlocalizadoenlaraízdeldiscoC:,oencualquierotrolugardondepodamoshaberinstaladoMySQL.ParaaccederalaconsoladeMySQLenWindowstendremosqueestarsituadosdentrodeesedirectorio.
EnLinux,porsupuesto,tambiénsepuedeaccederaMySQLporlíneadecomandos.PosiblementedesdecualquierdirectoriopodamosaccederalaconsoladeMySQL,sinnecesidaddesituarseeneldirectoriodondeestéinstalado.
ConectarconelservidorMySQL
LoprimeroquetendremosquehaceresconectarconelsistemagestordeMySQL.Paraello,desdelalíneadecomandosinvocamosaMySQL.Paraello,simplementetenemosqueescribirelcomando"mysql"eindicarleunasopcionesdeconexión.
% mysql
Conel"%"expresamoselprincipiodelalíneadecomandos.EseprincipioeselpromptquetengamosennuestraconsoladeLinuxoMsDOS,quepuedeseralgocomoc:\mysql\bin>.Elcarácter"%",portanto,notenemosqueescribirlo.
Conesasentenciaseconectaunoconlabasededatosconlosparámetrospordefecto.Esdecir,alservidorlocal,conusuarioypasswordigualacadenasvacías.
Lomásnormalesquetengamosqueindicaralgúnotrodatoparaconectarconlabasededatos,comoelusuario,laclaveoladireccióndelservidorconelquequeremosconectar.Lasintaxisseríalasiguiente:
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 73 de 117
% mysql -h nombre_servidor -u nombre_usuario -p
Sideseamosconectarnosalabasededatosenlocalyconnombredeusuarioroottendríamosqueescribir:
% mysql -h localhost -u root -p
Loprimeroquenospreguntaráseráelpasswordparaelusuarioroot.Unavezintroducidalaclave,yaestaremosdentrodelalíneadecomandosdeMySQL.Conelloelpromptcambiaráaalgocomoesto:
mysql>
PodríamoshaberindicadolacontraseñadirectamenteenlalíneadecomandosparainiciarlasesiónconMySQL,peroestosedesaconsejaporrazonesdeseguridad.Detodosmodos,lasintaxishubierasido:
% mysql -h localhost -u root -pmi_clave
Nosfijamosqueentre-hyelnombredelhosthayunespacioenblanco,igualqueentre-uyelnombredeusuario.Sinembargo,entre-pylaclavenodebemosponerningúnespacio.
DentrodelaconsoladeMySQL
Unavezdentro,tendremosanuestradisposicióntodaslassentenciasdeMySQLparaeltrabajoconlabasededatosyellenguajeSQL.
Lomásnormalesqueprimerotetengasqueconectarconunabasededatosenconcreto,deentretodaslasquepuedestenercreadasentuservidorMySQL.Esosehaceconelcomandouse,seguidodelnombredelabasededatosquedeseasconectar.
mysql> use mibasedatos;
Estonosconectaríaconlabasededatosllamada"mibasedatos".
Nota:HayquefijarsequetodaslassentenciasdentrodelalíneadecomandosdeMySQLacabanen";".Sinocolocamoselpuntoycoma,lomásseguroesquenoseejecuteelcomandoynosvuelvaasalirelpromptparaquesigamosintroduciendoelcomando.Siloquequeríamoseraejecutarlasentenciaquehabíamosescritoantes,consimplementeentrarel";"serásuficiente.Esdecir,nodebemosescribirdenuevolasentenciaentera,sóloel";"yvolveraapretar"enter".
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 74 de 117
Siqueremosverunalistadelasbasesdedatosalojadasennuestroservidorpodemosescribirelcomandoshowdatabases.Así:
mysql>show databases;
Conestonosmostraríaunalistadelasbasesdedatosdenuestroservidor.Algocomoesto:
mysql> show databases
-> ;
5 rows in set (0.02 sec)
Siqueremoscrearunabasedatos,podremoshacerloconelcomando"createdatabase"seguidodelnombredelanuevabasededatos.
mysql> create database miprueba;
Esonoscrearáunabasededatosquesellama"miprueba".Comohabíamoscomentado,siqueremosluegousaresabasededatosescribiríamos:
mysql> use miprueba;
Lógicamente,estabasededatosreciéncreadaestarávacía,perosiestuviéramosusandounabasededatosyacreadayqueremosverlastablasquetieneescribiríamoselcomando"showtables".
mysql> show tables;
Sinohaytablas,nosdiráalgocomo"Emptyset",perositenemosvariastablasdadasdealtaenlabasededatosqueestamosusando,nossaldráunalistadeellas:
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 75 de 117
2 rows in set (0.00 sec)
Ahora,sideseamosobtenerinformaciónsobreunatabla,parasaberquécampostieneydequétipo,podremosutilizarelcomandodescribeseguidodelnombredelatabla.
mysql> describe administrador;
4 rows in set (0.11 sec)
OtrasSentenciasSQL
DesdelaconsoladeMySQLpodemosindicarporlíneadecomandostodotipodesentenciasenlenguajeSQL,comoselecciones,inserciones,actualizaciones,creacióndetablas,etc.Elmecanismoeselquesepuedededucir.Simplementecolocamoslasentenciaaejecutarseguidadelpuntoycoma.Veamosunaseriedesentenciasseguidasyelresultadodeejecutarlas:
mysql> create table prueba (id_prueba int);
Query OK, 0 rows affected (0.08 sec)
mysql> insert into prueba (id_prueba) values (1);
Query OK, 1 row affected (0.00 sec)
mysql> insert into prueba (id_prueba) values (2);
Query OK, 1 row affected (0.00 sec)
mysql> insert into prueba (id_prueba) values (3);
Query OK, 1 row affected (0.00 sec)
mysql> select * from prueba;
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 76 de 117
3 rows in set (0.00 sec)
Endefinitiva,podemosejecutartodaslassentenciasquesehanaprendidoenelmanualdellenguajeSQL
ParasalirdelalíneadecomandosdeMySQL
UnavezhemosterminadodetrabajarconMySQL,siqueremoscerrarlaconexiónconelservidor,simplementeescribimos"quit"desdeelpromptdeMySQL:
mysql> quit
EsteartículoesobradeMiguelAngelAlvarezFuepublicadoporprimeravezen15/03/2006Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 77 de 117
GestionarusuariosMySQL
TrabajamosconlaherramientaMySQLAdministratorparadardealtaygestionarusuariosdelabasededatos,asignarprivilegios,posibleshostsdeacceso,etc.
LosusuariosdeMySQLsegestionanatravésdelabasededatosllamada"mysql",concretamenteconlatabla"user".Sinembargo,elmanejodeesatablaesrelativamentecomplicadoparaunusuarioquenoseadeltodoexperto,porloqueserámuchomáscómodousarlaaplicaciónMySQLAdministratorpararealizarlagestióndeusuarios.
MySQLAdministratoresunaherramientaqueproveedirectamenteMySQL,quesepuededescargardesdelapropiapáginadeMySQLyqueyaintrodujimosanteriormenteennuestroTallerdeMySQL:IntroducciónaMySQLAdministrator.
EntrelasdistintasopcionesdeMySQLAdministratortenemosunasecciónparalagestióndeusuarios,suspermisos,hostdeacceso,etc.Lapodemosveryseleccionarenlabarradeopcionesdelaizquierda.
Inicialmentesólohayunusuariocreado,enmuchasdelasconfiguracionestípicas,queeselusuarioroot.Lalistadeusuarioscreadosapareceenlapartedeabajodelabarradela
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 78 de 117
izquierda.Podemosseleccionarcualquierusuarioparaeditarsuspropiedades.
Laspropiedadesdeusuariossedividenentrespestañas:
Userinformation:
Conlosdatosdelogin(nombredeusuarioycontraseñadeacceso)yotrosdatospersonalesdelusuario,queesopcionalcompletar.
SchemaPrivileges:
Conlospermisosasociadosaeseusuario.Luegoloscomentaremos.
Resources:
Conlosrecursosdisponiblesparaeseusuario.
Enlapartededebajodelaventanaencontraremostresbotones,paracrearunnuevousuario,paraaplicarloscambiosrealizadosenlosformulariosdeedicióndeunusuarioyparadescartarlos.
Siqueremoscrearunusuariopodemospulsarelbotónde"NewUser"yaparecerálaventanadepropiedadesdelusuario,enlapestañadeUserInformation,paraqueintroduzcamoselnombreparaesteusuarioylacontraseñaquevamosaasignar.
Podemosentrarenotraspestañasparaterminardeintroducirlosdatosdelusuario.LapestañadeSchemaPrivilegesesespecialmenteinteresante,yaquenospermiteseleccionarlospermisosdeesteusuarioparacadabasededatosdenuestrosistema.
LaventanadeSchemaPrivilegesnospermiteseleccionarunabasededatosyentoncesaccedemosaunalistacontodoslosprivilegiosposiblesparapermitirodenegar.Inicialmente,paraunusuarionuevo,todoslospermisosestándenegados,asíquetendremosqueseleccionarlosquedeseamosotorgar.Paraellosimplementeseleccionamosentrelos"avaliableprivileges"(permisosdisponibles)ylospasamosa"assignedprivileges"(permisosasignados).
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 79 de 117
Nota:EsteartículocontinúaenDefinirloshostdeconexióndelosusuariosaMySQL.
EsteartículoesobradeMiguelAngelAlvarezFuepublicadoporprimeravezen15/06/2006Disponibleonlineenhttp://desarrolloweb.com/articulos/34.php
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 80 de 117
DefinirloshostdeconexióndelosusuariosaMySQL
ConMySQLAdministratorsepuedendefinirdistintosordenadoresohostdesdelosqueunusuariosepuedeconectaraunabasededatosMySQL.
VamosacontinuarlaexplicacióndelagestióndeusuariosenbasesdedatosMySQLqueyacomenzamosenelartículoGestionarusuariosMySQL.
Anteriormentelosusuariosylosdistintoshostsedefiní[email protected]@localhostqueríadecirqueelusuariopepesepuedeconectarsolamentedesdeelpropioordenadordondeestáelservidordelabasededatos.Porejemplo,pepe@%significabaqueelusuariopepesepuedeconectardesdecualquierhost.Lospermisosasignadosapepe@localhostypepe@%puedenserdistintos.
Ahoraelmanejodehostdecadausuariosehacedemaneradistinta.
Inicialmentecualquierusuariocreadosepuedeconectardesdecualquierhostocomputadorposible.Siestasituaciónnonosconviene,podemosdefinirnuevoshostpulsandoconelbotónderechodelratónsobreelusuarioquequeremosañadirordenadoresdeacceso.Entoncesnossaleunformularioparaindicarelnombredelhostquequeremosañadiraeseusuario,osudirecciónIP.
Encualquiermomento,sihacemosdobleclicsobreunusuarioynossaledebajounalistadehosts,esqueeseusuariosepuedeconectardesdecualquierdeesoshostyademás,podremosasignarpermisosdistintosalusuariocuandoseconectedesdecadaordenadorposible.Demodoqueunusuariosiseconecta,porejemplodesdelocalhost,puedetenermáspermisosquesiseconectadesdeotrosordenadoresdelaredlocalodeInternet.
Porejemplo,enlaimagenanteriorseentiendequeelusuariopruebasepuedeconectardesdelocalhost(elordenadorlocal)ydesdeotroequipollamado"otrohost".Perotenercuidadocon
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 81 de 117
estalistadehost,porquealomejortodavíaestamospermitiendoqueelusuariopruebasepuedaconectardesdecualquierhostyesposiblequenodeseemosqueesosepermita,sinoquesólosedejeaccedersiseaccededesdeesoshostespecificados.
Paradarnoscuentadeestedetallepodemosverenlaventanadepropiedadesdelusuarioelnombredelusuarioquesale,parasaberloshostqueestánpermitidos.
Lovemosconunaimagen:
Enestaimagennoshemossituadoenelhostlocalhostdelusuarioprueba.Vemosqueenlapartedearriba,enlapartedepropiedadesdelusuarioapareceprueba@localhost.Esoquieredecirqueestádefinidoelusuariopruebasiemprequeseconectedesdelocalhostyqueestamosenlaventanadepropiedadesdeeseusuario.
Ahoraveamoslasiguienteimagen:
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 82 de 117
Noshemossituadoencimadelusuarioprueba.Sinosfijamosenlapartedearribadelaspropiedadesdelusuarioveremoscomoaparece"prueba",dondeenlaimagenanterioraparecí[email protected]"prueba",comonoestáindicadoningúnhost,quieredecirqueelusuariopruebapuedeaccedersedesdecualquierhost.
Siqueremosevitarqueelusuariopruebasepuedaaccederdesdecualquierequipo,simplementepulsamosconelbotónderechoenelnombredeusuarioyseleccionamoslaopciónquepone"removehostfromwhichtheusercanconnect".Entonces,sihemospulsadosobreelnombredelusuarionosquitaráelaccesodelusuariodesdecualquierhost.Sihacemoslamismaacciónsobrecualquiernombredehost,comolocalhost,nosquitarálaposibilidaddequeelusuariosepuedaconectardesdeeseordenador.
Apretandoconelbotónderechoencualquierusuarioohostnosdaráunaseriedeopciones,paraelmantenimientodeeseusuarioohostquenohemosnombrado,comoañadirunusuario,borrarlooduplicarlo.
Conclusión
HemosexplicadorápidamentelagestióndeusuariosenMySQLconMySQLAdministrator.Noresultamuycompleja,porloquepodremosdominarlasdistintasopcionesfácilmente.
Siqueremos,siemprepodemosecharunvistazoalatablauserdelabasededatosmysql,queesdondeseguardanlosusuariosdelabasededatosyasípodemosverdequémanerasehanimplementadointernamenteloscambiosquehemoshechoconMySQLAdministrator.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 83 de 117
EsteartículoesobradeMiguelAngelAlvarezFuepublicadoporprimeravezen22/06/2006Disponibleonlineenhttp://desarrolloweb.com/articulos/definir-host-conexion-usuarios-mysql.html
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 84 de 117
AcortarlaconexiónaMySQLporlíneadecomandos
TrucopararealizarmássencillalainstruccióndeconexiónalabasededatosMySQLporlíneadecomandos.
ComohemospodidoleerenelartículodeMySQLporlíneadecomandos,paraconectarconunservidorMySQLesnecesarioescribirunaseriedeparámetrosenlainstruccióndeconexión.Entreesosparámetrosseencuentraelhostalquedeseamosconectar,elnombredeusuarioylacontraseña.
TodoslosdatosdeconexiónconelservidorMySQLhacenquelainstrucciónparaconectarsehagaunpocolargaypesadadeescribirunayotravez,encadaconexiónconMySQL.EnesteartículoveremosunamanerasencilladerecortarelprocesodeaccesoalservidorMySQL,evitandolanecesidaddeescribirunayotravezlosdatosdeaccesoparaconectar.
LaideasetratasimplementedeescribirunficherodetextodondefiguraránlosdatosdeconexiónconelservidorMySQL.Cuandoconectemos,enlugardeescribiresosdatosenlalíneadecomandos,nosotrosescribiremossimplementelallamadaamysqlyelpropioclienteseencargarádeleeresearchivodetextoparaobtenerlosdatosdelhost,usuarioycontraseña.
Elarchivoquetenemosquecrearsellamamy.cnf.Comodecimos,esunarchivodesólotexto,porloquesepodrácrearyeditarconcualquiereditordetextoplano,comoelblocdenotas.Laestructuradelficheroserálasiguiente:
[client]
host=servidor_con_el_que_conectar
user=nombre_de_usuario
password=clave
Estearchivodetextolotenemosquecolocareneldirectorioraizdelsistema,enWindows,porejemplo,deberíamoscolocarloenC:\my.cnf.EnLinuxtambiéndeberíamoscolocarelficheroeneldirectorioraizdelsistema"/my.cnf".
Obviamente,tenemosquesustituirlosdatosdeconexiónporlosquenecesitemosennuestrosistema.Unposibleejemplodearchivodeconexiónpodríaserelsiguiente:
[client]
host=localhost
user=miusuario
password=loquesea
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 85 de 117
Losdistintosparámetrossonopcionales.Porejemplo,sinotenemospassword,podríamosdejarsinponerlalíneadondeseespecificalaclave.
Esoestodo,unavezcreadoelficheroycolocadoenellugaradecuado,podremosaccederaMySQLsimplementeconlainstrucción"mysql",sinnecesidaddeespecificarcadavezelhost,usuario,clave,etc.
EsteartículoesobradeMiguelAngelAlvarezFuepublicadoporprimeravezen22/09/2006Disponibleonlineenhttp://desarrolloweb.com/articulos/acortar-conexion-mysql-linea-comandos.html
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 86 de 117
HabilitandoInnoDBenMySQL
EstemanualvaparalosquesonusuariosdelMysqlqueempiezan,enespecialparalosqueporfacilidadutilizanelAppServencualquierversión.
Empezarepormiproblemacuandoleíaunmanualsobreintegridadreferencial,puesnecesitabautilizarbasesdedatosdeltipoINNOBD,oentodocasodeltipoBDB(BerkeleyDataBase),puesalmomentodecrearlatabladelsiguientemodo:
CREATE TABLE Prueba
(
id int not null auto_increment,
nombre varchar(100),
primary key(id)
) ENGINE = InnoDB;
PuespordefectolastablasenMysqlantesdelaversión5.0.2,estánconfiguradasparaelTipoMyISAM,entoncesparaquepuedanserInnoBDdebemosdeclaradelaformaENGINE=InnoDB,comoenelejemplo,peroelproblemaenespecialenlosqueinstalanlosAppServesquelaconfiguraciónenelmy.iniqueseencuentraenlaCarpetaC:/Windowsseleagregalasiguientelínea:
skip-innodb(*)
LoquehaceestalíneaesquenopermitecreartablasenelformatoInnoDB,loquenonospermitetrabajarconintegridadreferencial,adiferenciadelasversionesposterioresqueagreganenelmy.ini,queseencuentraenC:/ArchivosdeProgramas/Mysql/MysqlServer5.0enespecialenlosinstaladoresindependienteslassiguienteslíneas:
#Thedefaultstorageenginethatwillbeusedwhencreatenewtableswhendefault-storage-engine=INNODB(**)
EstasadiferenciadelasanterioresloquepermiteesquetodaslastablasquesecreanseandelTipoInnoDBpordefecto,claroestaquelastablasdelsistemalasquevienenenelMysql,debenserdelTipoMyISAMyaqueestastrabajanenestetipo,explicadolasinstalacionesvayamosalassoluciones.
Buenolamásfácilseriacambiarlaprimeralínea(*)porlasegunda()**,peroquepasaríasideseamoscreartablasdelTipoMyISAM,puestendríamosquedeclararalcrearlatabladelaformasiguiente:
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 87 de 117
CREATE TABLE Prueba
(
id int not null auto_increment,
nombre varchar(100),
primary key(id)
) ENGINE = MyISAM;
EstotalvezlesgenereunproblemaparalosquegeneralmentecreansustablaseneltipoMyISAM,entoncesenelarchivomy.inisedebesolamenteborrarlalíneadeSkip-innoDBocomentarlaparaquenospermitacreartablasdeltipoInnoDB,yelproblemitayaestasolucionado.
AntesdeterminarcomonosaseguramosquetenemossoporteparaeltipoInnoDB,puessimplementeejecutamoslasiguientesentencia:
SHOW VARIABLES LIKE '%innodb%';
Laquemostraraentreotrascosalosiguiente:
+---------------------------------+------------------------+
| Variable_name | Value |
+---------------------------------+------------------------+
| have_innodb | YES |
…..
Estanospermitesabersiestaonohabilitadoestacaracterísticayasípodersolucionarelproblemasiesquelotenemos.
Ahorayaestasolucionado,atrabajarconlastablasInnoBD,asípoderhacerIntegridadreferencial,laquenospermiteusarPrimaryKey,oForeignKey.Buenoparaterminardisculpasporlafaltadeordenypornosertanclaro,esperolessirvadealgoestemanual.
EsteartículoesobradeRussvellOblitasValenzuelaFuepublicadoporprimeravezen02/08/2007Disponibleonlineenhttp://desarrolloweb.com/articulos/habilitando-innobd-en-mysql.html
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 88 de 117
¿PorquéMySQLeslentocongrandestablas?
SihasleidoyestudiadosuficienteacercadeMySQLprobablementehabrásescuchadoqueMYSQLnoeslaelecciónacertadaparamanejartablasconmasde1.000.000deregistros.
PorotroladotambienpuedequetengasconocimientoqueMySQLeselmotordecompañiascomoGoogle,Yahoo,Technoratiyestasmanejanalgunosbillonesderegistrosyconsiguenungranrendimiento.
Lapreguntaquepuedesestarhaciendoteescuáleslarazón...
LarazónesquenormalmenteestastablasestandiseñadasyentendidasparatrabajarconMySQL,sidiseñastusdatosconsiderandoquepuedehaceryquenopuedehacerMySQLprobablementeconseguirasunbuenrendimiento,cualquiersistemadeadministracióndebasesdedatosesdiferenteconrespectoalosotros,loquefuncionabienyeseficazenOracle,MSSQL,PostgreSQLnodebedeserloquemayorrendimientoofreceenMYSQL.
Inclusoenelsistemadealmacenamientotienenmuchasdiferenciasqueloshacediferentes.
Lastresclavesquedeberiasdetenerencuentacontablasmuygrandesson:Buffers,indicesyconsultas.
Buffers
Comoyasabrásunbufferesunaubicacióndelamemoriareservadaparaelalmacenamientotemporaldeinformacióndigital.
Laprimeracosaquedeberiasdetenermuyclaraeselhechodequehayunagrandiferenciaentrecuandolosdatosestanenmemoriaycuandonoestanenmemoria.
Siempezasteconuntamañodememoriaynotasundescensogradualdelrendimientoporquelabasededatosestacreciendounabuenasolucionseríaasegurartequetienessuficientememoriaparaelvolumendedatosqueestasutilizandoestopodriasrealizarlocondiferentestécnicas.
Indices
Losíndicessonusadosparaencontrarrápidamentelosregistrosquetenganundeterminadovalorenalgunadesuscolumnas.Sinuníndice,MySQLtienequeiniciarconelprimerregistroyleeratravésdetodalatablaparaencontrarlosregistrosrelevantes.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 89 de 117
Aúnentablaspequeñas,deunos1000registros,esporlomenos100vecesmásrápidoleerlosdatosusandouníndice,quehaciendounalecturasecuencialporlotantoquedaclaroquelosindicessonrealmenteeficacesparaacelerarelaccesoadatos.
Antesdeproseguirconlaexplicacionhedeaclararalgunosterminoscomoescaneocompleto,queesleertodoslosregistrosdelatablademanerasecuencial.
CuandoMySQLencuentrequehayuníndiceenunacolumna,lousaráenvezdehacerunescaneocompletodelatabla.EstoreducedemaneraimporantelostiemposdeCPUylasoperacionesdeentrada/salidaendisco.
Dejameexplicartelocondatos,considerandounatablaquetiene100Bytesporregistros,conunaunidadSCSInosotrospodriamosobtener100MB/segundodevelocidaddelecturaquenosdaríaalrededorde1.000.000deregistroporsegundo,sihablamosdetablastipoMyISAM.
Aquítedejounejemplo,hecreadounatablacon30millonesderegistros,conunacolumna('val')quetiene10000valoresdiferentes,vamosaverlasdiferenciasentreeltiempodeunescaneototaldelatablayunescaneoutilizandounrangodevaloresporejemploentre1y100,elresultadoeselsiguiente:
1.
mysql> SELECT count(pad) FROM large;
2.
+------------+
3.
| count(pad) |
4.
+------------+
5.
| 31457280 |
6.
+------------+
7.
1 row IN SET (4 min 58.63 sec)
8.
9.
mysql> SELECT count(pad) FROM large WHERE val BETWEEN 1 AND 100;
10.
+------------+
11.
| count(pad) |
12.
+------------+
13.
| 314008 |
14.
+------------+
15.
1 row IN SET (29 min 53.01 sec)
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 90 de 117
Comopuedesobservarelresultadoescontradictoriohatardado5minutosencontar30millonesderegistrosperoloquesorprendeesquehatardado30minutosencontarel1%deesosregistrosqueeranlosvaloresentre1y100.
Haymuchasmanerasdeoptimizareltrabajoconestetipodeconsultas,porejemploordenarprimeroellosvaloresyentonceshacerlabúsquedasobreestosregistrosyaordenados.Estasoluciónreduciriaeltiempodeejecucióndelaconsultaperosindudaseriaunresultadorelativamenteparecido.Elusodeíndicesseantojaesencialenestetipodeejemplosenlosquetenemosgrandescantidadesdedatosennuestrastablas,lamejoraenlaobtencióndelosdatospuedesermuysignificativa.
1.Indexelascolumnassobrelasquerealizalabúsqueda,nosobrelasqueselecciona
LasmejorescolumnasparaindexarsonenlasqueaparecenlacláusulaWHEREolasnombradasenlascláusulasjoin.
2.Utiliceíndicesúnicos
Losíndicestrabajanmejorsobrecolumnasconvaloresúnico,ypeorconaquellasquetienemuchosvaloresduplicados.Porejemplo,siunacolumnacontienefechasytienevariosvaloresdiferentes,uníndicediferenciarálasfilasfácilmente,sinembargo,noleayudarátantosiseutilizaenunacolumnapararegistrarelvalorescomoverdadero,falsoyquecontienesólolosdosvalores"V"y"F"(cualquieraqueseaquebusque,tomarácasilamitaddelasfilas).
3.Utiliceíndicescortos
Sivaaindexarunacolumnadecadenas,especifiqueunalongitudprefijada,siempresquesearazonablehacerloasi,porejemplositieneunacolumnaCHAR(200),noindexelacolumnaenterasilamayorpartedelosvaloressonúnicosdentrodelos10o20primeroscaracteres.Indexarestos10o20primeroscaracteresleahorraramuchoespacioenelíndice,yprobablementeharámásrapidassuconsultas.
4.Noabusedelosíndices
Losíndicesdebenseractualizados,yposiblementereorganizados,cuandomodifiqueloscontenidosdesustablas.
Sitieneuníndicequeraramente,onunca,seusaestashastasrealentizandoelsistemavolviendomáslentadeformainnecesarialasmodificacionesdelatabla.
5.Considereeltipodecomparacionesarealizarenunregistro
Losíndicesseusanparaoperaciones<,<=","=,="">=,>yBETWEEN.TambienseusanparoperacionesLIKE,cuandoelpatróntieneunprefijoliteral.Sisólousaunacolumnaparaotrotipodeoperaciones,talescomoSTRCMP(),notienesentidoindexarlo.
Conclusión
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 91 de 117
ComoconclusióntupuedesconseguirqueMySQLrindaabuenrendimientocongrandescantidadesdedatosperoparaellodebestenerencuentasuslimitacionesysabercualessonlascaracterísticasqueofrecenmejorrendimiento.
Fuente:eningles
EsteartículoesobradeManuGutierrezFuepublicadoporprimeravezen08/11/2007Disponibleonlineenhttp://desarrolloweb.com/articulos/porque-mysql-es-lento-con-grandes-tablas.html
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 92 de 117
ContarcaracteresconMySQL
HacemosusodelasfuncionesparacontarcaracteresenMySQL.VariosejemplosdesentenciaSQLquecuentacaracteresdestrings.
EnestetallerdeMySQLvamosahacerusodelasfuncionesdellenguajeSQLparacontarcaracteresdeuncampoguardadoenunatabla.Esdecir,vamosaseleccionardiversosregistrosdeunatablayvamosacontarloscaracteresdeunodesuscampos.
EneljuegodefuncionesdeMySQLparastring(cadenasdecaracteres)tenemosvariasfuncionesparacontarcaracteres:
LENGTH(cadena)
Recibeunacadenaycuentaydevuelveelnúmerodecaracteres.
CHARACTER_LENGTH(cadena)
Recibetambiénunacadenaydevuelveelnúmerodecaracterescontados.
CHAR_LENGTH(cadena)
EsunsinónimodeCHARACTER_LENGTH.AunquenolotienentodaslasversionesdeMySQL.
LadiferenciaentreLENGTHyCHARACTER_LENGTHesqueenCHARACTER_LENGTHuncarácter"multibyte"cuentacomounsolocarácter.EnLENGTHcuentaelnúmerodebytesdelacadena.Asíqueenelcasodetenerunacadenacon5caracteresqueocupan2bytescadauno,LENGTHdevolvería10yCHARACTER_LENGTHsólo5.
PorahoravamosautilizarCHARACTER_LENGTH,queparecequenosdevolverálosresultadosqueesperamosobtener,elnúmerodecaracteresdelacadena,independientementequelacodificaciónpuedasermulti-byte.
SELECT character_length( 'un texto' )
Estasentenciadevolveríaelvalor8,queeselnúmerodecaracteresquetieneellacadena"untexto".
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 93 de 117
Peroahorapongamosquequeremossacartodoslospaísesdeunatabla,juntoconelnúmerodecaracteresquetienecadaunadelascadenasdelnombredelpaís.
SELECT CHARACTER_LENGTH(nombre_pais), nombre_pais FROM pais
Estonosdevolveríaunconjuntoderegistrosconelnúmerodecaracteresdecadanombredelpaísyluegootrocampoconelnombredelpaís.
SELECT nombre_pais FROM pais where CHARACTER_LENGTH(nombre_pais)=6
Estonosdevuelvelosnombresdepaísquetienen6caracteres.
SELECT CHARACTER_LENGTH(nombre_pais) as 'numcaracteres', nombre_pais FROM pais ORDER BY CHARACTER_LENGTH(nombre_pais)
Estaúltimasentenciadevuelveunconjuntoderegistrosdondeelprimercampo,quehemosdadoelnombrede"numcaracteres"paraluegoreferirnosaél,muestraelnúmerodecaracteresyelsegundocampoelnombredelpaís.Luegoestáordenadoporlalongituddelacadena,contadatambiénporsuscaracteres.
EsteartículoesobradeMiguelAngelAlvarezFuepublicadoporprimeravezen04/01/2008Disponibleonlineenhttp://desarrolloweb.com/articulos/contar-caracteres-con-mysql.html
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 94 de 117
GestordeMySQLHeidiSQL
CómoutilizarHeidiSQLparaadminadministrarMySQLenservidoresremotosycómoconfigurarlaIPparaquesepuedaconectarconelservidormedianteelpaneldecontrolcPanel.
EstoysegurodequenoseréelúnicodelmundoquetrabajaconMySQLydeseapoderhacerlascosasmásrápidasysencillas.SituservidorestáadministradoporunpaneldecontrolcomocPanel,quizástehabrásdormidoliteralmente,comoyo,pulsandolinksyesperandounayotravezhastallegaratuadministradorPhpMyAdmin.
¡¡Todoestopuedesermuchomáscorto!!yparaellotevamosaayudarofreciéndoteunaherramientallamadaHeidiSQL,queestámuybienparapoderllevarlaadministracióndeunabasededatosMySQLqueestáenunservidorremoto.
HeidiSQLesunligeroprogramaparaWindowsquenosofreceunainterfazamigableparaadministrarMySQL,perotambiénsistemasgestoresSQLServerdeMicrosoft.Permitenavegarporlasbasesdedatosylastablas,editandocualquierinformación,creandoregistros,modificandotablas,vistas,procedimientos,triggersyengeneraltodoaquelloquenecesitaremoseneldíaadíadelaadministracióndebasesdedatos.
EnesteartículotecontaremosalgomássobreHeidiSQL,perotambiénteayudaremosaconfigurarelaccesoremotoatuservidor,validandolaIPdesdelaqueteconectasparaquetuMySQLtepermitaelaccesodesdeotrasredes,sinporelloperderenseguridad.
PeroantesdeponernosaelloquieroexplicarteporquéesunabuenaideautilizaralgúnsistemacomoHeidiSQLparaadministrarrápidamenteunabasededatosMySQL.
EltortuosocaminohaciaPhpMyAdmin
YotengoelservidoradministradoconelpaneldecontrolcPanel,peromeconstaqueestemismoproblemaquevoyarelataresmuysimilarconotrospanelesdecontrolcomoPlesk.EstoysaturadodehacersiemprelasmismasaccionesparapoderadministrarlabasededatosMySQLyporesoquierocompartircontigounosatajosparaquepuedasaccedermásfácilmentealaadministracióndetubasededatosyademás¡demanerasegura!
Lahistoriaserepite,unayotravez,alaccederaMySQLdesdeelcPanel:
Tecleamosnuestrodominio.com/cpanel
Esperamos...
Nossolicitaelusuarioylacontraseña,unavezintroducidaesperamos...
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 95 de 117
UnavezdentrodelcPaneltenemosdecenasdeopcionesysepierdedevistadóndeseencuentraPhpMyAdmin...
Laprimeravez,movemoslacaja"Basededatos"condragalaprimeraposición,paraquenosepierdaentrelasmúltiplesopciones.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 96 de 117
HacemosclicenPhpMyAdminyesperamos...
Enservidoresdebidamenteconfigurados,elPhpMyAdmindeaccededesdecPanelusandohttpsyconunnúmerodepuertodiferenteal80,porcuestionesdeseguridad.DeahílarazóndeentraralphpMyAdmindesdeelcPanel...
Unavezcargadalapagina
Hacemosclicenlabasededatosausaryesperamos...
Realmenteestortuosaeincómodalaedicióndetablasyregistrosporquetardamosotros2o3clicsmásparaalcanzarunobjetodenuestrabasededatos.
Contemoslos"Esperamos"deesteartículoymultipliquemosporeltiempodecargaysalvo
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 97 de 117
accesosmuyrápidosolocales,hemosgastadomuchotiemposiestepatróndetrabajolorepetimosvariasvecesaldía.
ConocerHeidiSQL
AcomienzosdelapopularizaciónenlawebdeMySQL,habíacomenzadounafiebredeconstruccióndeclientesparadichogestordebasededatos,quedesafortunadamenteeranenmuchoscasosincompatiblesconcadanuevaversióndeMySQL.
EntrelamultitudsefueabriendopasoMySqlFrontporserrápida,sinerroresygratuita.Cuálseríalasorpresa(hacetiempoya)alintentardescargaensumomentodelapáginaoficialyleerqueelproyectohabíasidovendido...
Afortunadamente,eldesarrolladorhabíacontinuadoelproyectoconotraherramientaquesiguesiendolibredeusoygratuita:www.heidisql.com
Yestemaravillosoclientenospuedeeliminarlos"esperando"ydejarnostodoelasuntodelaedicióncondosclics.Nonecesitamosdecirloagradecidosquepodremosestarconelusodeestaherramienta,queademásdesergratuita,nospermitehacerlasmismascosasqueyavenimoshaciendoconotrosadminstradorescomoPhpMyAdmin.
Entreotrasposibilidades,HeidiSQLnospermite:
Conectarconvariosservidoresalavezenunaúnicaventana.ConectarconservidoresMySQLporlíneadecomandos.ConectarconSSHorealizarconexionesSSL.Editartablas,vistas,procedimientosalmacenados,triggers,eventosagendados...CrearreportesSQL.Exportaroimportardatosdesdeohaciaotrasfuentesobasesdedatos.Porejemplo,importardatosquehayaenficherosdetextooexportarlosdatosdelastablasaficherosdetextocondiversosformatoscomoCSV,HTML,XML,SQL,arraysdePHP,etc.Administrarlosprivilegiosdelosusuarios.EscribirconsultasconresaltadodecódigoSQLycompletadodecódigoypreformatodecódigoSQLparaunamejorlectura.Monitorizarprocesosdelclienteymatarlossilonecesitamos.Búsquedasdeuntexto,nosoloenunatabla,sinoenmúltiples,porsinosabemosdóndeseencontraba.Optimizaciónyreparacióndetablas,etc.
ConfigurarelaccesoremotoatuservidordebasededatosconcPanel
Parausarlo,laúnicacondiciónesquetuservidoracepteconexionesremotasaMySQL,cosaquenoestádisponibleentodoslosservidoresLinux.
Situservidorpermitedichasconexiones,debesaveriguarcuálestuIPpúblicaenpaginascomowww.cualesmiip.comyanotarcuáleselnumerodeIPquetienesenelaccesoaInternet.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 98 de 117
Nota:deboserenfáticoenelasuntoporquemuchasvecesladirecciónIPdenuestrocomputadornoesladirecciónpúblicaqueasignanuestroproveedordeInternet,sinounaIPlocalcuandoestamosconectadosaunrouter,etc.Porotraparte,cabedecirtambiénquemuchasvecesnuestraIPvacambiandoconeltiempo,loqueseconocecomoIPdinámica.EnestoscasospodemosintentarhablarconnuestroproveedorparaquenosproporcionenunaIPestática,quesiempresealamisma,loquenosahorrarátenerqueconfigurarrepetidasveceslaIPdesdelaquesepermiteaccederanuestroservidor.
Nosdirigimosanuestrocpanel:EnnuestracajadebasededatoshacemosclicenMysqlRemota.
EnlasiguientepáginadebemosintroducirnuestradirecciónIPpública:
VamosautilizarelusuariohabitualparanuestraconexiónaMySQL.EnalgunoscasosesnecesariovolveraasignarlospermisosluegodeintroducirunaIPenlaopcióndeaccesoRemoto.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 99 de 117
Yunavezrealizadostodosestospasos,procederemosainstalarHeidiSQL.
Elprograma,aliniciar,nosmostraráunformulariodeconexionesydebemosconfigurar
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 100 de 117
nuestraconexión.
EstansencillocomoescribirelHostname,User,Password(enalgunoscasosdebemosescribirelnombredelabasededatos).
Nota:Deboseñalarqueelusorepetidode"enalgunoscasos"esporquedespuésdeexperimentarconmuchascompañíasdehostingconservidorescompartidosydedicadoshenotadoqueexistendiferenciasdeconfiguraciónsegúnlaversióndeLinux,decpanelydemásquenosimpulsanaprobarantesdedesistirsinologramosconectarnosaMySQLporvíaremota.
Porejemplo,algunosHostingteasignanotronombreparaaccederaMySQL.
Algunosdebemosagregarlacombinacióndenombredeusuariodeaccesomasusuariodebasededatos.
Ejemplo"nombredeusuario_nombreusermysq"
AlcrearelusuariocPanelnosindicaelnombreexactodetodosmodos.
ConunainterfazintuitivaHeidiSQLnospermitemodificarrápidamentelaspropiedadesdeunabasededatostablaocampoocontenidodealgúnregistro.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 101 de 117
Comoestamoseditandolabasededatosdirectamente,enalgunoscasos(sinavegamosporelcontenidodeunregistro)cambiandoelfocoporejemplo,seactualizaelcontenidoautomáticamente.
Asíquedebemostenercuidadoporquenoexisteun"Undo"oDeshacer.
EsperoquepuedasaprovecharestaherramientayreducireltiempoediciónatubasededatosenMySQL.
EsteartículoesobradeHeislerPalmaFuepublicadoporprimeravezen10/07/2012Disponibleonlineenhttp://desarrolloweb.com/articulos/gestor-mysql-heidisql.html
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 102 de 117
AccesoRemotoaMYSQL
CómoaccederaMYSQLvíaremotasintenerelpuertoabiertoysinquenadiemáspuedaaccederaél.
EnelmomentodeescribirelartículoGestordeMySQLHeidiSQLmeencontrabaconvariosañoscomowebmasterenhostingscompartidoscomomuchosdelosqueleenesto.
Sinembargo,alcrecerenvisitasynecesidadesyestartanlimitadoconlascaracterísticaspropiasdelosalojamientoscompartidos,migréaVPSyluegoaservidoresdedicados.
Alfinal,laadministracióndeservidoresdedicadostrasladalaspreocupacionespropiasdelosproveedoresdehostingatucabeza,yconeltemamásdelicado“Laseguridad”(ejemplodeello:enlosdíasenqueseescribíaesteartículo,sedescubriólavulnerabilidadheartbleed,quehizosudaratodoslosadministradores,quetuvieronqueactualizarrápidamentesistemaygenerarnuevoscertificados).
Claro,existenserviciosmanejadosqueaumentanmuchomáselcostodelhostingenloscualesestáspagandoporlaadministraciónymantenimientoconuncostopromediode100$adicionalesalservicio.
Bien:QueremosaccederaMySQLvíaremota,peronoqueremostenerelpuertoabiertoyqueremosquesolonosotrospodamosacceder.
Esteartículosebasaenquetieneselsiguienteescenario:
1. EntuservidorestácorriendounaversióndeLinux2. Usascomocortafuegos“ConfigureConfigServerFirewall”elfamosoCSF3. TienesMySQLcorriendoyelpuerto3306seencuentracerrado(comodebe)
EnelartículoGestordeMySQLHeidiSQLtieneselescenariodeque,sibienusaselpanelparaautorizarlosIPsqueseconectaránaMySQL,tienesladificultaddelpropio“meollomóvil”dondeteconectarásendiferentessitiosaredesWiFi....Otuproveedorcambiaacadaratola
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 103 de 117
direcciónIPdetuconexión.AsíquenoresultaprácticoestarchequeandoacadaratoladirecciónIP.
Loprimeroesvisitarwww.no-ip.orgyabrirnosunacuentagratuita(No-IPpermiteidentificartuPCconunnombrededominiofácilderecordar).
Enelformulariodeinscripcióndeunavezpodemosescogerelnombrededominioquequeramosgratis.
TambiénpodemosingresarluegoenlaopciónHosts/Redirects>>ManageHostsycreareldominioquequeramos.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 104 de 117
Todoestoesparaunasolacosa:asociarnuestradirecciónIPdinámicaaldominiocreado.
PodemoshacerlodescargandoelsoftwareDUCdelamismapágina.
Despuésdeingresarnuestrosloginycontraseña,debemosactivarnuestrohosten“EDITHOST”
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 105 de 117
Siusamosunrouter,opcionalmentepodemosusarlotambiéningresandodirectamentenuestrascredencialesydominioenlaopciónDynamicDNS.
EnesteejemplounTP-LINKenlaopciónDynamicDNS.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 106 de 117
EnlosdoscasosunPINGanuestrodominiodebedevolverunarespuestacorrecta(consoladesistemaoCMDsiusasWindows).
CuandotodoestáfuncionandoeshoradehacerquenuestroservidornospermitaingresaraMySQLdesdenuestrocomputadorconMySQLHeidiSQLuotrogestordeconexionesqueusemos;inclusopodemosusarnuestroMySQLlocalparaconectarnoseneldenuestroservidor.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 107 de 117
Laopción–hseguidadenuestrodominionopermiteconectarnosaservidoresexternos(muyútilparahacerbackupdenuestrasbasesdedatososubirgrandescantidadesdedatos).
¡Atención!,antesdeintentaringresar,vamosaconfigurarnuestroservidorparaello:
Laconfiguraciónseríalasiguiente:
Ingresamosanuestraconsoladeservidor,editamoselarchivodeconfiguración"/etc/csf/csf.conf"enlalíneaDYNDNSycambiamosoescribimosDYNDNS="600"---//actualizaránuestradirecciónIPcada10minutos.Enmicasoparticularlotengoen300---(cincominutos).
Editamoselarchivo"/etc/csf/csf.dyndns"yagregamosnuestrodominiodeestamanera:tcp:in:d=3306:s=dominiocreadoen-no-ipComosepuedeverenlapartetcp:in:d=3306:3306eselnúmerodepuertodeconexiónMySQL.
Cuandoestemoslistos,reiniciamoselfirewallconelcomandoCSF–rEsperamoslosminutosindicadosparaqueCSFactualicetudirecciónylisto.
Nota:SiadministrastusvpsoservidorviaSSHPuedesusarestomismocambiandooagregando"tcp:in:d=22:s=dominiocreadoen-no-ip",siendoelpuerto22elpuertodeconexiónSSHoelquehayasseleccionadoparaconectarte.
Esmuyimportantequeabrasunaventana/conexiónadicionaldeSSH,pruebesestoysitodosalemalenlaotraventanaconectadapuedasrecuperarlaconfiguración,(estoenloscasosdondetuúnicaadministraciónseaporSSH).
ConestosolotuIPtendráaccesoatuservidorvíaSSH------------
TuservidorsoloaceptaráconexionesdesdetucomputadorhaciaMySQL.
Tendráselpuerto3306cerradoparaevitarunaconexiónnoautorizadaypodrásconectarhaciamySQLremotamente.
Inicialmenteestosehacíacondyndns.comperoyanoofrecenunaversióngratuitayenelcasodewww.noip.comVitalwerksInternetSolutions,ofreceesteserviciogratisdesde1999yesperamosquecontinúeasípormuchosañosmás.
Probarsinuestropuerto3306seencuentraabiertodesdeWindowshacianuestro
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 108 de 117
servidor(abiertoparatodoelmundosignificaquetuservidoresvulnerable).
DesdelaconsoladeSistemaCMDdebesejecutarelcomando"telnetnuestraIPdeservidor3306"obien"telnetnuestrodominio3306"
Sirecibesestetipoderespuestatieneselpuerto3306ydebesconfigurarapropiadamentetuCSFparaimpedirelaccesopordichopuerto.
ElusuarioqueusesparaaccederremotamenteaMSYQLdebetenerlospermisosparaello.RecomendamosnousarROOTparaaccederremotamente.Crearnuevousuarioconlospermisoscorrespondientesylaopción%envezdelocalhosto127.0.0.1
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 109 de 117
EsteartículofueprobadoyescritoescuchandoelúltimoconciertodeSodaStereo2007.
EsteartículoesobradeHeislerPalmaFuepublicadoporprimeravezen30/05/2014Disponibleonlineenhttp://desarrolloweb.com/articulos/acceso-remoto-mysql.html
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 110 de 117
MySQLconMAMPytrabajoconelterminal
NotassobreeltrabajodeMySQLconMAMP/MAMPPRO,cómoaccederalaconsoladeMySQLporlíneadecomandosenelterminal.
LamaneramáspopulardecontarconApache+PHP+MySQLenMacOSXesatravésdelconocidoMAMP,unaaplicaciónqueteofrecetodoesoyalgomásenunsolopaquete.DisponesdeMAMPoMAMPPRO,ambostesirvenparalomismoyamboscompartenlamismainstalacióndeMySQL,lasmismasbasesdedatos,etc.
EnesteartículoquierodejarunasnotasrápidassobrecómotrabajarconMySQLporlíneadecomandosoterminal,paranoolvidarmealgunasinvestigacionesypasosquehetenidoquerealizarparaqueelsistemamereconozcaelcomandomysql.
PorquélíneadecomandosMySQL
ParaadministrarunabasededatosMySQLcontamosconnumerosasherramientas,coninterfazwebcomoPhpMyAdminoconinterfazdeaplicacióndeescritoriocomoMySQLWorkbenchoSequelPro.Laformamenosvisualesjustamentelalíneadecomandos,porloquequizásmuchossepreguntaránsobrelanecesidaddedisponerdeunaccesoatravésdelterminal.
Puesbien,elterminalesunaliadoquesiempreestáahí.ElterminalesloúnicoquetienesenmuchosservidoresparapoderconectarteconunabasededatosMySQLytepermitenosolorealizarconsultas,sinorealizarbackups,restaurarlos,etc.CuandotienesunVPSoundedicadoloquevasatenersiempreeslalíneadecomandos.QuizáseresdelosqueprefierennopublicarentuservidorherramientascomoPhpMyAdmin,porlapuertadeentradaqueestásabriendoaposiblesataques.Porelmismomotivo,quizástampocoteagradalaideadeabrirpuertosdestinadosaltrabajoconMySQLdesdeotrasredes.Entoncesloquetequedaeslalíneadecomandos.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 111 de 117
Trabajarconlalíneadecomandossiempreteharámáslibre,porqueevitasdependerdetercerosprogramas.Además,siquieresreproducirentuordenadorlocallascondicionesdetrabajoquevasatenerconlosservidoresremotosyacostumbrartealdíaadíaconlalíneadecomandos,oparahacertareasdeadministracióndebasesdedatosnodisponiblesdeotromodo,entoncesteinteresausarelclientedeterminaldeMySQL.
DóndeestáelclientedeMySQLenMAMP
ParaaccederalclientedeMySQLporterminal,paragestionarlasbasesdedatos,yoestabaacostumbradoausarsimplementeelcomando"mysql".AlmenosenWindowseinclusoenWindows,peromisorpresaesquedespuésdeinstalarMAMPnoestádisponibleesecomando.Elerrorqueteencontrarás,sitepasacomoami,esqueallanzarelcomandorecibeselmensaje.
mysql: command not found
LoprimeroquepiensasesquenoestáenelPATH.EntoncestevasaldirectoriodetuinstalacióndeMAMPyencontraráselclientedeMySQLporlíneadecomandos.Elarchivosellamamysqlyestáenlaruta:
/Applications/MAMP/Library/bin/
LomásnormalesquedesdeesarutainvocaseselcomandodeMySQL"mysql"yquetefuncionase,peronoesasí.Tampocoindicandolarutacompletaalcliente/Applications/MAMP/Library/bin/mysqlfunciona.Hayquehaceralgunospasos
Nota:Atribuyolaautoríadeestaguíaadondelaheencontradoyo(eninglés):http://www.webbykat.com/2012/06/solving-sh-mysql-command-not-found-mamp-pro-2
1. Primeroasegúratequetucomando"mysql"estáenlarutaqueteheindicado.Generalmenteloencontrarásen/Applications/MAMP/Library/bin/mysqlç
2. Creaunarchivollamado".bash_profile"enturuta~/(oeditaelquepuedasteneranteriormente).Tenencuentaquelosarchivosquecomienzanporunpunto"."enMacOSX(asícomoenLinux)sonarchivosocultos,porloquenoloencontrarásconfinderesearchivoaunqueestécreado.
3. Editaesearchivoyagregalalínea.
export PATH=$PATH:/Applications/MAMP/Library/bin
1. Porfavor,tenencuentaquelarutademysqlcorrespondaconlaqueestásagregandoenel".bash_profile"
2. Guardaelarchivo
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 112 de 117
3. Reiniciaelterminal,puesesenuevoperfilnoestarádisponiblehastaquenosalgasdeltododelprogramaterminal.Menúsuperior"Terminal/SalirdeTerminal"
Conestoyapodríasaccederatucomandomysqlparaconectarconelsistemagestordebasededatos.Elcomandoseráalgocomo:
mysql -h localhost -u root -p
Acontinuacióntepedirátuclavede"root".
Nota:Nolohemosdicho,perotendrásqueasegurartequeelserviciodeMySQLestáiniciado,claroestá.
Paramásopcionesdelclientemysqldeterminal,porfavor,leeelartículodeMySQLporlíneadecomandos,queesválidoparacualquiertipodesistemaoperativo.
EsteartículoesobradeMiguelAngelAlvarezFuepublicadoporprimeravezen17/12/2014Disponibleonlineenhttp://desarrolloweb.com/articulos/mysql-mamp-trabajo-terminal.html
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 113 de 117
EsquemagráficodelabaseMySQLconMySQLWorkbench
Cómorealizarelesquemagráfico,relacionesentretablasysusdistintoscampos,nombres,etc.usandoelprogramagratuitoMySQLWorkbench.
EnesteartículotevamosaexplicarcómoconseguirrealizarrápidamenteungráficodelesquemadetubasededatosMySQL,usandounsoftwaregratuitoqueseguramenteconozcas,llamadoMySQLWorkbench.
MySQLWorkbenchesunprogramacreadoporOracle,elactualdueñodelsistemagestordebasededatosMySQL.Susfuncionessondiversas,pudiendorealizarlaadministracióncompletadeunabasededatos,crear,editaroeliminartablas,definirrelaciones,versusdatos,entresusopcionesmásbásicas.Enresumen,esuncompletoprograma,quepodríasustituiralpopularPhpMyAdmin,perodeunamaneramuchomásprofesional.
Lapartequevamosatratarenesteartículoesladecrearelesquemaderelacionesentretablas,queesalgoquenosvendrábienteneramanocuandoestamosdesarrollandounproyecto.
Conectarconunabasededatos
Lógicamente,unodelospasosparaobtenerelesquemaseráconectarconlabasededatosquetengamosqueobtenerlarepresentacióndesuschema.Estepasoserealizadesdelapantalla"Home"deMySQLWorkbench,desdeeliconodelacasitaenlaspestañasdelprograma.
Aquípodremosadministrarlasconexionesconbasededatos,loquenosfacilitaráelaccesoadiversosservidoresdeMySQLconlosquetrabajemosdiariamente.Paracrearnuevasconexionestienesqueapretarelbotón"+".
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 114 de 117
EstapartedelaconexióndependemuchodelservidorMySQLconelquequierasenlazarte,porqueexistendiversostiposdeconexionesposibles,desdelocalesaremotas,asícomodiversosprotocolos,comoelTCP/IPoelSSH.Losdatosdeconexiónlosdebesdeconocertú,perosiestásconectandoaunservidorlocalgeneralmenteusarásTCP/IPyhostname127.0.0.1.Usuariorootnormalmenteylaclavequetengas.
Unavezconfiguradalaconexión,aprietaselbotón"Ok",aunquetambiénpuedesantesprobarquefuncionaconelbotón"TestConnection".
Nota:Paratrabajarconunabasededatosdeterminada,tendrásqueelegirlaenlasección"SCHEMAS",enlapartedelaizquierda.
Database/ReverseEngineer
Apartirdelmenú"Database,ReverseEngineer"podráscomenzarelprocesoparacrearelesquemadelabasededatosquenecesites.Podrásencontrarunasistentepararealizarlaserie
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 115 de 117
depasosnecesarios.
Comienzasindicandolaconexiónquequierasusar,dentrodetodaslasconexionesquepuedestenercondistintosservidoresMySQL,métododeconexión,etc.Esoterellenaráloscamposdeconexióndelformulariodeabajo.Aprietas"Continue".
EntoncesMySQLWorkbenchseconectaparatomarlalistadelosschemasdisponiblesenelservidorconectado.Apretas"Continue"unavezelprocesotermine.
Apareceráentonceslalistadelosesquemasdisponibles.Seleccionaspueselqueteintereseyluegoelbotónparacontinuar.
Nota:Loqueconocemospopularmentecomouna"basededatos",oseaunconjuntodetablasrelacionadasentresi,enMySQLWorkbenchseconoceconlapalabra"schema".Elconceptoesequivalente.
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 116 de 117
Esaoperaciónrealizarálalecturadetodaslastablasysusdescripciones,relaciones,etc.Apretasdenuevo"Continue"
Porúltimonosaparecenlosobjetosdelosquesevaarealizarlaingenieríainversaparaobtenerelesquemaderelacionesentretablas.Seleccionasyentoncespulsaselbotón"Execute".
Terminadoelprocesoapareceyaelesquemadetubasededatos.Tendrásquepulsar"Continue"unavezmásparacerrarelasistente.
ElesquemateapareceenunapestañanuevadentrodeMySQLWorkbench.Eselmomentodeacomodartustablasparacolocarlasenellugarmáslógico,segúnteinteresequeseorganiceeldiagrama.Simplementepinchasyarrastraslastablasdondequieras.
ExportarelesquemadelabasededatosMySQLaPDF
ElesquemalopuedessalvarenelformatointernodeMySQLWorkbench,conelbotóncorrespondiente,esotefacilitaráabrirlomásadelantepararecolocarlastablasporejemplo.PerogeneralmenteloquequerráshaceresexportareldiagramaaunPDFparapoderabrirloconotrosprogramas,enviarloatuscompañerosoimprimirloparatenerloamanoduranteel
Taller de MySQL
http://desarrolloweb.com/manuales/taller-mysql.html Página 117 de 117
desarrollo.
Estosehacefácilmentedesdeelmenú"File/Export/ExportasSinglePagePDF…".AbriráundiálogoparaseleccionarelarchivoPDFagenerar.Estaparteyanotienemásmisterio.
Estoestodo!Eldiagramahaquedadolistoparaqueelesquemadelabasededatosestésiempreamano.
EsteartículoesobradeMiguelAngelAlvarezFuepublicadoporprimeravezen28/09/2015Disponibleonlineenhttp://desarrolloweb.com/articulos/esquema-grafico-base-mysql-workbench.html