taller de mysql -...

117
Taller de MySQL http://desarrolloweb.com/manuales/taller-mysql.html Página 1 de 117

Upload: phungkhanh

Post on 06-Sep-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

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.

ssh [email protected]

Porsupuesto,tendrásqueeditartuusuarioylaIPdelservidoralquetequieresconectar.Porejemplo,paraconectarseporrootenelservidorconIP280.230.2.67escribirías:

ssh [email protected]

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 50 de 117

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