Manual Mysql

Embed Size (px)

Citation preview

Manuais e recursos para desenvolvimento web www.criarweb.com

Manual de MySQL

Autores do manual Este manual foi criado pelos seguintes colaboradores de Criarweb.com: Miguel Angel Alvarez Carlos Cuenca Daz Vincius Delgado Consultoria Informtica http://www.basemax.com.br Traduo de JML(5 captulos) (12 captulos) (1 captulo)

Eber M. Duarte

http://www.devmedia.com.br (4 captulos)

Damaris Fanderuff

http://www.devmedia.com.br (1 captulo)

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

1

Manuais e recursos para desenvolvimento web www.criarweb.com

Instalao de MySQL em WindowsUm dos pontos mais fortes das pginas em PHP a possibilidade de usar bases de dados mediante funes de destacada simplicidade e potncia. Estas bases de dados podem servir ao nosso site para armazenar contedos de uma forma sistemtica que nos permita classific-los, procur-los e edit-los rpida e facilmente. Uma base de dados um conjunto de tabelas nas quais armazenamos diferentes registos (artigos de uma loja virtual, provedores ou clientes de uma empresa, filmes em exibio de um cinema...). Estes registos so catalogados numa funo de diferentes parmetros que os caracterizam e que tem uma utilidade a hora de classifica-los. Assim, por exemplo, os artigos de uma loja virtual poderiam catalogar-se a partir de diferentes campos como pode ser o nmero de referncia, nome do artigo, descrio, preo, provedor... A base de dados mais difundida com o sistema UNIX-Apache sem duvida MySQL. Tal e como acontece com o Apache, est disponvel uma verso para Windows e pode ser obtida gratuitamente. P-lo a funcionar no tem muita dificuldade. Uma vez instalado o programa podemos executar as nossas ordens em modo MS-DOS. Para isso, abrimos uma janela MS-DOS e colocamo-nos no directrio bin de mysql. Neste directrio encontram-se os ficheiros executveis. Aqui teremos de encontrar um ficheiro chamado mysqld. No caso da verso mais actual durante a redaco deste artigo, este ficheiro chama-se mysqld-shareware. Uma vez executado este ficheiro podemos executar o seguinte: mysql Uma vez chegados a este ponto veremos como uma mensagem de bem-vinda aparece no nosso ecr. Neste momento encontramo-nos dentro da base de dados. A partir de ai podemos realizar todo tipo de operaes por comandos SQL. No vamos entrar numa explicao pormenorizada do funcionamento dessa base de dados pois isso dava-nos para um manual inteiro. Como resumo, aqui propomos as operaes mais bsicas: Instruccin Show databases; Use nome_da_base Create Database nome_da_base; Drop Database nome_da_base; Show tables; Describe nome_da_tabela; Load Data Local Infile Descripcin Mostra o conjunto da base de dados presente no servidor Determina a base de dados sobre a qual vamos trabalhar Cria uma nova bd com o nome especificado Elimina a base de dados com o nome especificado Mostra as tabelas presentes na base de dados actual Descreve os campos que compem a tabela Cria os registos da tabela a partir de um ficheiro de

Drop Table nome_da_tabela; Apaga a tabela da base de dados

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

2

Manuais e recursos para desenvolvimento web www.criarweb.com

"ficheiro.txt" Into Table nome_da_tabela; Quit

texto no qual separamos por tabulaes todos os campos de um mesmo registro Sair de MySQL

Para evitarmos ter de editar as nossas tabelas directamente sobre os ficheiros de texto, pode ser muito prtico usar qualquer outra base de dados com um editor e exportar a seguir a tabela num ficheiro de texto configurado para deixar tabulaes entre cada campo. Isto possvel em Access, por exemplo, clicando com o boto direito sobre a tabela que queremos converter e escolhendo a opo exportar. Uma janela de dialogo aparecer na qual escolheremos guardar o ficheiro em tipo texto. O passo seguinte ser escolher um formato delimitado por tabulaes sem qualificador de texto. Outra possibilidade que pode ser muito prtica e que nos evita trabalhar continuamente com comandos do estilo aos do tempo da carochinha servir-se de programas em PHP ou Perl j existentes e que se podem obter na rede. O mais popular sem duvida o phpMyAdmin. Estes tipos de scripts so executados desde um navegador e podem, por tanto, albergados no nosso servidor ou empregues em local para, a partir deles, administrar MySQL de uma forma menos difcil. Do mesmo modo, dentro do directrio bin de MySQL, podemos encontrar uma pequena aplicao chamada MySqlManager. Trata-se de uma interfaz windows, mais agradvel a vista e ao uso do que a que obtemos executando o ficheiro mysql. Neste caso, as sentenas SQL devem realizar-se sem o ponto e vrgula final. Artigo por Miguel Angel Alvarez - Traduo de JML

Tipos de dados de MySQLDepois da fase de design da base de dados, e uma vez que se passou a tabelas, necessrio criar as tabelas correspondentes dentro da base de dados. Para cada campo de cada uma da tabelas, necessrio determinar o tipo de dados que contem, para poder ajustar a estrutura da base de dados, e conseguir um armazenamento com a menor utilizao de espao. Este artigo descreve cada um dos tipos de dados que se podem ter num campo MySQL, para a verso 4.xx.xx. Os tipos de dados que pode ter um campo, podem-se agrupar em trs grandes grupos: 1. Tipos numricos 2. Tipos de Data 3. Tipos de Cadeia 1 Tipos numricos: Existem tipos de dados numricos, que se podem dividir em dois grandes grupos, os que esto em vrgula flutuante (com decimais) e os que no. TinyInt: um nmero inteiro com ou sem signo. Com signo a margem de valores vlidos desde -128 at 127. Sem signo, a margem de valores de 0 at 255 Bit ou Bool: um nmero inteiro que pode ser 0 ou 1.Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 3

Manuais e recursos para desenvolvimento web www.criarweb.com

SmallInt: nmero inteiro com ou sem signo. Com signo a margem de valores vlidos desde -32768 at 32767. Sem signo, a margem de valores de 0 at 65535. MediumInt: nmero inteiro com ou sem signo. Com signo a margem de valores vlidos desde -8.388.608 at 8.388.607. Sem signo, a margem de valores de 0 at 16777215. Integer, Int: nmero inteiro com ou sem signo. Com signo a margem de valores vlidos desde -2147483648 at 2147483647. Sem signo, a margem de valores de 0 at 429.496.295 BigInt: nmero inteiro com ou sem signo. Com signo a margem de valores vlidos desde -9.223.372.036.854.775.808 at 9.223.372.036.854.775.807. Sem signo, a margem de valores de 0 at 18.446.744.073.709.551.615. Float: nmero pequeno em vrgula flutuante de preciso simples. Os valores vlidos vo desde -3.402823466E+38 at -1.175494351E-38,0 et desde 175494351E-38 at 3.402823466E+38. xReal, Double: nmero em vrgula flutuante de dupla preciso. Os valores permitidos vo desde -1.7976931348623157E+308 at -2.2250738585072014E-308, 0 e desde 2.2250738585072014E-308 at 1.7976931348623157E+308 Decimal, Dec, Numeric: Nmero em vrgula flutuante desempacotado. O nmero armazenase como uma cadeia. Tipo de Campo TINYINT SMALLINT MEDIUMINT INT INTEGER BIGINT FLOAT(X) FLOAT DOUBLE DOUBLE PRECISION REAL DECIMAL(M,D) NUMERIC(M,D) 2 Tipos data: Na hora de armazenar datas, h que ter em conta que MySQL no verifica de uma maneira estricta se uma data vlida ou no. Simplesmente comprova que o ms est compreendido Tamanho de Armazenamento 1 byte 2 bytes 3 bytes 4 bytes 4 bytes 8 bytes 4 ou 8 bytes 4 bytes 8 bytes 8 bytes 8 bytes M+2 bytes se D > 0, M+1 bytes se D = 0 M+2 bytes se D > 0, M+1 bytes se D = 0

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

4

Manuais e recursos para desenvolvimento web www.criarweb.com

entre 0 e 12 e que o dia est compreendido entre 0 e 31. Date: tipo data, armazena uma data. A margem de valores vai desde o 1 de Janeiro de 1001 ao 31 de dezembro de 9999. O formato de armazenamento de ano-mes-dia. DateTime: Combinao de data e hora. A margem de valores vai desde o 1 ed Janeiro de 1001 s 0 horas, 0 minutos e 0 segundos ao 31 de Dezembro de 9999 s 23 horas, 59 minutos e 59 segundos. O formato de armazenamento de ano-mes-dia horas:minutos:segundos TimeStamp: Combinao de data e hora. A margem vai desde o 1 de Janeiro de 1970 ao ano 2037. O formato de armazenamento depende do tamanho do campo: Tamanho 14 12 8 6 4 2 Formato AnoMesDiaHoraMinutoSegundo aaaammddhhmmss AnoMesDiaHoraMinutoSegundo aammddhhmmss AnoMesDia aaaammdd AnoMesDia aammdd AnoMes aamm Ano aa

Time: armazena uma hora. A margem de horas vai desde -838 horas, 59 minutos e 59 segundos. O formato de armazenamento 'HH:MM:SS'. Year: armazena um ano. A margem de valores permitidos vai desde o ano 1901 ao ano 2155. O campo pode ter tamanho dois ou tamanho 4 dependendo de se queremos armazenar o ano com dois ou quatro algarismos. Tipo de Campo DATE DATETIME TIMESTAMP TIME YEAR 3 Tipos de cadeia: Char(n): armazena uma cadeia de longitude fixa. A cadeia poder conter desde 0 at 255 caracteres. VarChar(n): armazena uma cadeia de longitude varivel. A cadeia poder conter desde 0 at 255 caracteres. Dentro dos tipos de cadeia pode-se distinguir dois subtipos, os tipo Test e os tipo Blob (Binary Large Object) A diferena entre um tipo e outro o tratamento que recebem na hora de orden-los e compar-los. No tipo test ordena-se sem ter importncia as maisculas e as minsculas e no tipo blob ordena-se tendo em conta as maisculas e minsculas. Os tipos blob utilizam-se para armazenar dados binrios como podem ser ficheiros.Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 5

Tamanho de Armazenamento 3 bytes 8 bytes 4 bytes 3 bytes 1 byte

Manuais e recursos para desenvolvimento web www.criarweb.com

TinyText e TinyBlob: Coluna com uma longitude mxima de 255 caracteres. Blob e Text: um texto com um mximo de 65535 caracteres. MediumBlob e MediumText: um texto com um mximo de 16.777.215 caracteres. LongBlob e LongText: um texto com um mximo de caracteres 4.294.967.295. H que ter em conta que devido aos protocolos de comunicao os pacotes podem ter um mximo de 16 Mb. Enum: campo que pode ter um nico valor de uma lista que se especifica. O tipo Enum aceita at 65535 valores diferentes. Set: um campo que pode conter nenhum, um ou vrios valores de uma lista. A lista pode ter um mximo de 64 valores. Tipo de campo CHAR(n) VARCHAR(n) TINYBLOB, TINYTEXT BLOB, TEXT MEDIUMBLOB, MEDIUMTEXT LONGBLOB, LONGTEXT ENUM('value1','value2',...) SET('value1','value2',...) Tamanho de Armazenamento n bytes n +1 bytes Longitude+1 bytes Longitude +2 bytes Longitude +3 bytes Longitude +4 bytes 1 dos bytes dependendo do nmero de valores 1, 2, 3, 4 8 bytes, dependendo do nmero de valores

Diferena de armazenamento entre os tipos Char e VarChar Valor '' 'ab' 'abcd' 'abcdefgh' CHAR(4) Armazenamento '' 'ab ' 'abcd' 'abcd' 4 bytes 4 bytes 4 bytes 4 bytes VARCHAR(4 Armazenamento ) " 'ab' 'abcd' 'abcd' 5 bytes 1 byte 3 bytes

Artigo por Carlos Cuenca Daz

Mysql Control CenterMyCC uma consola de Administrao para MySQL, que permite realizar todas as tarefas de administrao e trabalho de MySQL atravs de um interface grfico, e que vem a resolver uma das maiores objeces que os usurios tinham de MySQL.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

6

Manuais e recursos para desenvolvimento web www.criarweb.com

Para utiliza-lo, primeiro ters que fazer download de MySQL.com. Existem actualmente verses disponveis para Linux e para Windows. Para poder trabalhar com um servidor de MySQL, primeiro ters de o dar de alta atravs do cone de Registrar servidor. Aparece uma caixa de dilogo na qual se podem configurar todos os parmetros de acesso ao servidor, como o nome do servidor, nome do usurio, password, porto etc. Uma vez conectado ao servidor poder-se aceder s tarefas de administrao dos usurios de MySQL, administrador do gestor, e administrao das tabelas. Administrador de Usurios A partir dele pode-se acrescentar, apagar, modificar as propriedades dos usurios de MySQL. Ao fazer click sobre um usurio aparece a janela de configurao do usurio.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

7

Manuais e recursos para desenvolvimento web www.criarweb.com

Nela podem-se configurar o nome de usurio e a password. Em relao s permisses, permite estabelecer um sistema de permisses geral ou individualizado para cada uma das tabelas. Para alm disso permite dar-lhe permisso ao usurio para ceder a outros (GRANT OPTION). Um dos pontos fortes em relao a segurana que ao definir um usurio, temos de especificar o servidor desde o qual vai aceder, limitando de esta forma, os riscos de acesso no autorizado. Administrao do servidor A janela de Administrao do servidor consta de trs opes nas quais se pode aceder lista de processos, s variveis de estado do servidor e s variveis de configurao.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

8

Manuais e recursos para desenvolvimento web www.criarweb.com

Desde esta janela para alm de poder fazer um Ping ao servidor, para-lo, ou guardar o contedo das variveis de estado. Desde a opo de processos pode-se ver o estado de cada um dos processos ativos, vendo as suas propriedades e com a opo de para-los atravs de um Kill. Desde a opo de estado, pode-se ver o contedo de cada uma das variveis de estado, e pode-se personalizar para mostrar as que interessem. Desde a opo de variveis pode-se aceder ao valor de cada uma das variveis de configurao do servidor MySQL. Janela de Base de Dados Ao seleccionar uma base de dados dentro de uma seleco de bases de dados, aparece a janela de base de dados, onde podemos ver informao relacionada com a base de dados, como por exemplo o nmero de tabelas, o nmero de consultas por segundo, o tempo de funcionamento, etc. Ao seleccionar uma base de dados, pode-se ver os nomes das tabelas e o nmero de registos que contem. As tabelas podem-se eliminar, vaziar e renomear. Quando se selecciona uma tabela, podem-se ver os nomes dos campos, os tipos de dados e os parmetros opcionais de cada um deles.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

9

Manuais e recursos para desenvolvimento web www.criarweb.com

Esta janela permite criar novos campos, elimina-los ou modificar as suas propriedades. Mediante o cone de ferramentas, pode-se analisar a tabela, optimiza-la e repara-la. Ao fazer duplo click sobre uma tabela mostra-se na janela os dados que contem. Fazendo click sobre qualquer um dos campos, acede-se a estrutura. Para cada campo pode-se escolher o tipo de dados, o tamanho, e se chave ou no e o valor pr-determinado.

Dentro da tabela, existe uma opo para configurar os ndices que tem.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

10

Manuais e recursos para desenvolvimento web www.criarweb.com

Desde essa janela podemos seleccionar os campos que contem, e tambm o tipo de ndice que se deseja criar. Desde a opo de propriedades da tabela acede-se aos atributos, como por exemplo o tipo de tabela, o modo de escritura, o tamanho mximo de cada fila, etc.

Em fim, como podes ver esta a consola de acesso ao servidor MySQL de que estvamos a espera. O produto distribui-se como software livre, por tanto, tanto o download como a sua utilizao ilimitada gratuita. Est disponvel as ltimas verses Linux e Windows para alm de muitssima informao no seguinte endereo: www.mysql.com/products/mysqlcc/. Artigo por Carlos Cuenca Daz

MySQL AdministratorMySQL Administrador o novo software de administrao de servidores de Bancos de Dados de MySQL que MySQL AB criou. Trata-se de um software multi-plataforma, que por enquanto encontra-se disponvel para Linux e Microsoft Windows e que conta com um ambiente grfico de usurio muito intuitivo. Este novo produto supre as carncias que tem MySQL Control Center na rea de Administrao de servidores. MySQL Control Center atualmente est depreciado, tornou-se obsoleto e no continua se desenvolvendo. Foi substitudo pelo conjunto de programas MySQL Administrator e MySQL Query Browser. MySQL Administrador uma ferramenta que permite realizar tarefas administrativas sobre servidores de MySQL incluindo: a configurao das opes de incio dos servidores inicio e deteno de servidores monitoramento de conexes ao servidor administrao de usurios monitoramento do estado do servidor, incluindo estatsticas de uso visualizao dos logs de servidor gerenciamento de cpias de segurana e recuperaes visualizao de catlogos de dados.

Instalao e configurao: O download do programa se faz atravs da pgina web de MySQL, em http://dev.mysql.com/downloads/administrator, Tambm na pgina de MySQL existem uma

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

11

Manuais e recursos para desenvolvimento web www.criarweb.com

srie de FAQs que ajudam na instalao em caso de duvidas, embora a mesma seja bastante simples, em http://www.mysql.com/products/administrator/.

Uma vez instalado necessrio configurar uma primeira conexo contra um servidor de MySQL para poder acessar administrao do mesmo. Na tela de configurao se devero especificar os dados do servidor, nome de usurio, senha e porto, do banco de dados ao qual se deseja conectar. Uma vez introduzidos de forma correta, aparece a tela principal do programa:

Atravs da tela principal pode-se ver a informao relativa ao servidor de banco de dados qo qual se conectou, assim como as caractersticas da mquina na que se est executando o programa. Na barra de menu atravs de Tools, se tem acesso a um console de sistema (Windows ou Linux dependendo do caso), um cliente de conexo a MySQL sob linha de comandos e a MySQL Query Browser. Por este mesmo menu, se acessa as opes de configurao do administrador e das conexes que existem configuradas:

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

12

Manuais e recursos para desenvolvimento web www.criarweb.com

Na seo de conexes se encontram armazenadas todas as conexes a servidores que existem configuradas. Algumas utilidades acessveis desde a janela principal do programa so: Service control: Incio e deteno de servidores (s acessvel se se conectou com um servidor MySQL na mquina local). Startup variables: Configurao do servidor e as variveis de incio (s acessvel se se conectou com um servidor MySQL na mquina local). User Administration: Para a gesto de usurios e permisses. Server conections: Visualiza e gerencia as conexes abertas com o servidor de bancos de dados. Health: Informao sobre o carregamento do servidor Server Logs: O histrico de logs do servidor. Replication Status: Com informao dos sistemas replicados. Backup: Para fazer uma cpia de segurana dos bancos de dados. Restore: Para restaurar as cpias de segurana. Catalogs: Para mostrar os bancos de dados, visualizar, criar e editar as tabelas. Concluso Faltava uma ferramenta como MySQL Administrator ao banco de dados. No cabe dvida que se trata de um programa extremamente til e imprescindvel para administrar visualmente servidores MySQL. Muitas das opes de configurao do banco de dados so muito simples de entender e de utilizar, pelo menos todas as opes mais bsicas. Em conjunto com MySQL Query Browse, nos permite gerenciar qualquer aspecto de um banco de dados MySQL. Artigo por Carlos Cuenca Daz

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

13

Manuais e recursos para desenvolvimento web www.criarweb.com

phpMyAdminphpMyAdmin um programa de distribuio livre em PHP, criado por uma comunidade sem animo de lucro, que s trabalha no projecto por amor a arte. uma ferramenta muito completa que permite aceder a todas as funes tpicas da base de dados MySQL atravs de uma interface web muito intuitiva.

A aplicao em si no mais do que um conjunto de ficheiros escritos em PHP, os quais podemos copiar no nosso servidor web, de modo que, quando acedemos a esses ficheiros vemos umas pginas onde podemos encontrar as bases de dados s que temos acesso no nosso servidor de bases de dados e todas as suas tabelas. A ferramenta permite-nos criar tabelas, inserir dados nas tabelas existentes, navegar pelos registos das tabelas, edit-los e apag-los, apagar tabelas e um grande etc, inclusive executar sentenas SQL e fazer um backup da base de dados. Pgina de phpMyAdmin A pgina de inicio do projecto http://www.phpmyadmin.net/. Da podemos fazer download dos ficheiros da ltima verso da aplicao, que posteriormente devemos colocar no nosso servidor web. Tambm podemos encontrar o phpMyAdmin na rede, como por exemplo Sourceforge.net, que um site que tem montes de projectos "Open Source". H vrias verses disponveis, mas recomendvel escolher a que nos aconselhem como a ltima verso estvel (The last stable version). Na hora de escrever este artigo era a 2.2.6. De modo que, se o nosso sistema +e Windows, optaremos pelo ficheiro phpMyAdmin-2.2.6php.zip. Este ficheiro para a verso 4 de PHP, mas tambm temos a possibilidade de obter os ficheiros que tem compatibilidade com a verso 3 de PHP, para aqueles que no tem o motor de PHP mais potente. A pgina de inicio do programa tambm nos oferece a possibilidade de ver uma demo online, ainda que avisam que o servidor onde se encontra pode estar cado. http://www.phpmyadmin.net/phpMyAdmin/Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 14

Manuais e recursos para desenvolvimento web www.criarweb.com

A instalar phpMyAdmin Uma vez obtida a ltima verso temos de a descomprimir, para obter os ficheiros PHP (a ferramenta) e coloca-los dentro do directrio ed publicao do nosso servidor web.Nota: recordamos que phpMyAdmin um projecto escrito em PHP, por conseguinte necessitaremos colocar os ficheiros num servidor web que permita programao de pginas PHP. Deveremos aceder ferramenta atravs do endereo do servidor web, seguido do directrio no que temos os ficheiros. Por exemplo, se o nosso servidor o PWS e colocmos os ficheiros dentro do directrio de publicao (Normalmente C:\Inetpub\wwwroot), no subdirectorio phpMyAdmin, devemos escrever algo similar a http://localhost/phpMyAdmin Se tivssemos instalado um servidor Apache os colocaramos na pasta que tivssemos indicado como "documentRoot", que costuma ser htdocs.

O primeiro que podemos ler o ficheiro da documentao, que encontramos junto aos ficheiros de phpMyAdmin. Explica dados gerais do programa, como os seus requerimentos, instrues de instalao, configurao, perguntas frequntes, etc. Posteriormente, tal e como explica a documentao, temos de editar o ficheiro config.inc.php para mudar os valores de host da base de dados (maquina que tem instalado o MySQL) e o usurio e password com o qual nos vamos conectar. Podemos configurar muitos aspecto na ferramenta, ainda que agora s vou comentar os que acho que so essenciais para fazer que funcione. Na documentao temos um ponto dedicado por completo a especificar o sentido de cada varivel. $cfgPmaAbsoluteUri Devemos atribu-lo ao path completo necessrio para aceder a phpMyAdmin. Por exemplo: http://localhost/phpMyAdmin ou http://www.meudominio.com/phpMyAdmin $cfgServers[$i]['host'] string O nome do host da base de dados. Por exemplo localhost, se o computador onde est instalada a base de dados e onde estamos a instalar phpMyAdmin o mesmo. Tambm poderia ser o endereo IP do computador ao que nos ligamos.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

15

Manuais e recursos para desenvolvimento web www.criarweb.com

$cfgServers[$i]['user'] string $cfgServers[$i]['password'] string O par usurio/password que deve utilizar phpMyAdmin para conectar-se com o servidor MySQL. Com isto, j podemos aceder a phpMyAdmin e trabalhar com a nossa base de dados mais facilmente, que se torna muito de agradecer tendo em conta que, no cada de no ter esta ferramenta ou outra parecido, a outra opo seria utilizar a linguagem SQL, e no caso de que a base de dados esteja alojada em remoto na internet, no o poderamos fazer, a no ser com acesso por TELNET ao servidor da base de dados. Artigo por Carlos Cuenca Daz

Instalar o driver ODBC para conectar com uma base de dados MySQLInstalar este driver serve para que desde um sistema Microsoft Windows possamos aceder a uma base de dados MySQL. As aplicaes so vrias, por exemplo podemos utiliza-lo para criar um DSN associado a uma base de dados MySQL, de modo que as nossas pginas ASP poderiam aceder base de dados. Outra aplicao aceder desde Access a base de dados MySQL e exportar ou importar dados (migrar os dados desde Access a MySQL e desde MySQL a Access), inclusive para criar um back-end da nossa base de dados MySQL em interface Access. O primeiro que temos de fazer no computador que tem o sistema Windows XX e Access actualizar a verso 6 de Microsoft jet: http://support.microsoft.com/default.aspx?scid=KB;ENUS;Q239114& A seguir, temos de fazer download da ltima verso de Myodbc da pgina de MySQL: http://www.mysql.com/downloads/api-myodbc-2.50.html Com tudo isto feito, instalamos a actualizao de Microsoft jet, e instalamos os drivers OBDC de MySQL. Quando pergunta no ecr de "Data Sources" faz click em "Close" para terminar. Com o driver ODBC instalado, acede ao painel de controlo de OBDC de 32 bits (Inicio>Configurao->Painel de Controlo->Fontes de dados ODBC 32 bits). Neste momento, ters de escolher se queres utilizar o driver para um usurio (DSN de usurio), ou para qualquer usurio do computador (DSN de Sistema). Uma vez escolhida uma opo, faz click no boto "Add" para acrescentar uma nova fonte de dados e a seguir, selecciona o driver de MySQL. Veremos o seguinte ecr:.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

16

Manuais e recursos para desenvolvimento web www.criarweb.com

Ters de preencher os seguintes campos: Windows DSN name: Nome da fonte de dados que estar disponvel desde Windows. Mysql host (name or IP): Nome ou endereo IP do computador onde se encontra instalado o servidor MySQL Mysql Database Name: Nome da base de dados com a que se trabalhar desde a fonte de dados. User: Nome de usurio com o que se aceder ao servidor de bases de dados. Password: palavra-chave do usurio. Port: Serve para especificar o porto no que se encontra o servidor MySQL, h que pr um valor no caso de que no se esteja a utilizar o pr-definido, que o 3306. Uma vez que estejam estas opes configuradas, fazemos click em "OK" para fechar as janelas e finalizar o processo.Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 17

Manuais e recursos para desenvolvimento web www.criarweb.com

Artigo por Carlos Cuenca Daz

Exportar dados de MySQL a Microsoft AccessMigrar dados da uma base de dados a outra algo ao que muitos de ns tivemos de confrontar em algum momento. A continuao explicamos como recuperar informao armazenada num servidor de dados MySQL a uma base Access.Referncia: Para realizar esta tarefa necessrio que tenhamos obtido o driver ODBC e o tenhamos instalado no nosso sistema Windows. Esta tarefa pode-se conhecer num artigo de CriarWeb.com: Instalar o driver ODBC para MySQL.

Para importar uma tabela de MySQL a Microsoft Access, desde Access, e com a base de dados na que desejamos importar os dados aberta, seleccionar o menu Ficheiro->Obter dados Externos->Importar. No ecr de importar dados, na opo tipo do ficheiro seleccionar ODBC databases().

Seleccionar origem de dados, e dentro de esta, o nome da fonte de dados que crimos anteriormente. Uma vez seleccionada, e fizeste click em "Aceitar", aparecer um ecr de configurao do driver e podes configurar algumas opes de configurao que aparecem no driver ODBC, se no desejas marcar nenhuma, click sobre "OK".Nota: possvel que, em algum caso, os dados da base nos sistemas MySQL e Access no sejam totalmente compatveis e se produza alguma anomalia ao exporta-los. Realmente s uma hiptese que pensamos, ainda que nas provas que realizmos no vimos nenhum tipo de problema. Claro que os

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

18

Manuais e recursos para desenvolvimento web www.criarweb.com

campos com os que trabalhmos no eram estranhos.

Aparecer uma janela onde pergunta que tabela de MySQL queremos exportar a Access:

Seleccionar a tabela, e faz click sobre "Aceitar"Nota: se estamos a exportar dados a um servidor de bases de dados alojado nalgum provedor de hosting, temos d ter em conta que estes no sempre incluem acesso remoto ao servidor da base de dados, ou requer um aviso explicito por parte do cliente para a sua configurao. Referncia: se desejamos uma migrao de dados no sentido oposto, isto , desde Access a MySQL, ser tratado noutro artigo em CriarWeb que explica o processo minuciosamente: Exportar dados de Access a MySQL.

Artigo por Carlos Cuenca Daz

Exportar dados de Access a MySQLNo estranho que tenhamos comeado a fazer os nossas primeiros sites utilizando uma base de dados simples como Access. Tambm no nada estranho que, chegado o momento, passemos a coisas mais serias e nos passemos a um servidor de dados como MySQL. Aqui mostramos uma maneira bastante prctica de migrar os dados de uma base Access a MySQL.Referncia: Para realizar esta tarefa necessrio que tenhamos obtido o driver ODBC e o tenhamos instalado no nosso sistema Windows. Esta tarefa pode-se conhecer num artigo de CriarWeb.com: Instalar o driver ODBC para MySQL.

Para exportar uma tabela a MySQL, h que abrir a base de dados e seleccionar a tabela. Depois, fazer click sobre Ficheiro->Exportar. Na janela de exportar, na opo de guardar como tipo, seleccionar ODBC databases(). Feito isto, aparece uma janela que nos pergunta o nome que lhe queremos dar a tabela MySQL, pr-definidamente aparece o mesmo.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

19

Manuais e recursos para desenvolvimento web www.criarweb.com

Faz click sobre "Aceitar", e aparecer uma janela na que se pede que selecciones a origem de dados ODBC:Nota: possvel que, em algum caso, os dados da base nos sistemas MySQL e Access no sejam totalmente compatveis e se produza alguma anomalia ao exporta-los. Realmente s uma hiptese que pensamos, ainda que nas provas que realizmos no vimos nenhum tipo de problema. Claro que os campos com os que trabalhmos no eram estranhos.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

20

Manuais e recursos para desenvolvimento web www.criarweb.com

Seleccionar origem de dados, e dentro, o nome da fonte de dados que crimos anteriormente. Uma vez seleccionado, fazer click em "Aceitar", aparece um ecr de configurao do driver que nos permitir, se queremos, configurar algumas opes sobre o driver. Se no queremos configurar nada, faz click sobre "OK" e os dados comearo a exportar-se.Nota: se estamos a exportar dados a um servidor de bases de dados alojado nalgum provedor de hosting, temos d ter em conta que estes no sempre incluem acesso remoto ao servidor da base de dados, ou requer um aviso explicito por parte do cliente para a sua configurao.

Referncia: se desejamos uma migrao de dados no sentido oposto, isto , desde MySQL a Access, foi tratado noutro artigo em CriarWeb que explica o processo minuciosamente: Exportar dados de MySQL a Microsoft Access.

Artigo por Carlos Cuenca Daz

Administrar e actualizar uma base de dados MySQL desde AccessUm dos maiores problemas dos que adoece actualmente MySQL no ter um sistema grfico que satisfaa a maioria dos usurios. Existem magnficos projectos atravs de pginas web, como phpMyAdmin, mas muitas vezes h gente que gostaria de ter algo parecido a um Access, possibilidade de incluir formulrios para a entrada de dados, ou de informes sobre os dados armazenados dentro de uma tabela. Dado que no existe hoje em dia nenhuma ferramenta parecida a Access para trabalhar com MySQL utilizando um modo grfico de Access. Poders utilizar os formulrios, consultas e informes de Access com os dados dos ficheiros de MySQL. Desta forma, o encarregado de actualizar os dados duma pgina, poder trabalhar desde Access, com a comodidade dos formulrios, os menus dinmicos etc, e os dados sero enviados automaticamente a MySQL.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

21

Manuais e recursos para desenvolvimento web www.criarweb.com

Imagem da consola de MySQL

Formulrio de Access que acede a uma base de dados MySQL Nota: Duas imagens que se diferenciam um mundo. Com as duas pode-se administrar uma base de dados MySQL, uma corresponde a consola MySQL (a ferramenta mais bsica) e a outra a um formulrio com Access, que sem dvida oferece uma interface muito mais agradvel.

Ainda por cima, para a gerao de formulrios e informas pode-se utilizar os assistentes... tudo uma poupana de tempo!!!Referncia: Para realizar esta tarefa necessrio que tenhamos obtido o driver ODBC e o tenhamos instalado no nosso sistema Windows. Esta tarefa pode-se conhecer num artigo de CriarWeb.com: Instalar o driver ODBC para MySQL.

Agora, uma vez instalado o driver MyODBC, o primeiro que h que fazer criar uma base de dados em branco desde a qual se iro vincular as tabelas. Uma vez criada, faz-se click sobre a opo de criar nova tabela. Aparecer a seguinte janela na que se seleccionar criar nova tabela vinculada:

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

22

Manuais e recursos para desenvolvimento web www.criarweb.com

Aparece a janela de vincular uma tabela de uma base da dados, e na parte inferior seleccionamos o tipo de ficheiro: ODBC Databases().

Ao fazer click sobre vincular, aparece uma janela para seleccionar uma origem de dados, seleccionamos a fonte de dados que crimos na primeira parte do artigo:

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

23

Manuais e recursos para desenvolvimento web www.criarweb.com

A seguir, depois de fazer click em "Aceitar", aparece a janela de configurao da fonte de dados ODBC de MySQL. Como j est configurada, fazemos click em "OK", e aparecer a janela na que se podem escolher entre as tabelas que contem a base de dados para a qual configuramos a fonte de dados ODBC. Seleccionamos uma tabela, e a seguir aparecer uma janela onde devemos especificar, at um mximo de dez, os campos que formam parte da chave.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

24

Manuais e recursos para desenvolvimento web www.criarweb.com

Seleccionamos os campos, e fazemos click en "Aceitar". Aparecer uma nova tabela dentro da base de dados de Access. Esta tabela, no existe fisicamente dentro do ficheiro de Access, por tanto, todas as modificaes que se realizam sobre a mesma, enviam-se atravs de ODBC ao ficheiro MySQL.

A partir de agora, podero-se criar formulrios, consultas e informes sobre esta tabela tal e como se faz normalmente desde Access.Nota: Alguns provedores de hosting no incluem no seu pack bsico o acesso remoto ao servidor de base de dados, ou requer de um aviso explicito por parte do cliente para a sua configurao.

Artigo por Carlos Cuenca Daz

Connector/JMysql Connector um driver criado por Mysql AB que te permitir trabalhar com Mysql desde programas escritos em Java. A diferena em relao a outros drivers, que este de livre distribuio, e tem um bom rendimento. MySQL Connector/J um driver nativo de Java que converte as chamadas geradas por JDBC no protocolo de rede que utiliza a base de dados Mysql. Permite trabalhar com a linguajem de programao Java e desta forma construir programas que interactuam com Mysql. O MySQL Connector/J um driver JDBC tipo IV e contem todas as caractersticas de JDBC para utilizar Mysql. No desenvolvimento das ltimas verses incrementou-se bastante a velocidade do driver, ganhando tanto em rapidez como em eficcia. O driver suporta resultados de dados "streaming" o que permite ao usurio recolher um grande nmero de filas sem a necessidade de utilizar um buffer de memria. O driver implementa um protocolo de packs grandes que permitem enviar filas e campos BLOBs de at 2 GigaBytes. Na verso de desenvolvimento do mesmo implementam-se as novas caractersticas acrescentadas no API 3.0 de JDBC. O driver foi testado para trabalhar com as seguintes ferramentas de bases de dados e servidores de aplicaes: Apache Jboss BEA Weblogic IBM VisualAge for Java IBM WebSphere Application Server 4.0 Forte for Java Oracle SQL/J25

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

Manuais e recursos para desenvolvimento web www.criarweb.com

TableGen

Download Para instalar o driver h que fazer download da pgina de Mysql Connector/J Artigo por Carlos Cuenca Daz

Cpias de segurana em MySQLO gestor de Bases de dados MySQL incluem varias ferramentas para a realizao de copias de segurana da base de dados. Atravs delas poderemos por a salvo os nossos dados, para que, no hipottico caso de que se percam, poder recupera-los. Na hora de fazer uma cpia de segurana, o primeiro que h que ter em conta a integridade dos dados que se esto a guardar. Em todos os casos necessrio que haja integridade nos dados de uma tabela, com isto quero dizer que todos os dados da tabela devero estar escritos na tabela, isto pode parecer um pouco estranho, mas tal e como acontece com todos os gestores de bases de dados, MySQL dispem de diversas "cachs" nas que se armazenam dados temporalmente com o objetivo de melhorar o rendimento, de forma que por exemplo, uma vez feita uma modificao numa tabela, pode ser que os dados no se guardem imediatamente em disco, at que termine, por exemplo, uma consulta que se estava a executar. Por isso, necessrio "forar" MySQL a escrever todos os dados em disco, mediante a sentena "Flush Tables". Para alm disto, necessrio que no se escreva nas tabelas enquanto se est a fazer a cpia de segurana da base de dados. Isto faz-se atravs do comando "lock tables", seguido do nome da tabela. Pode haver bases de dados nas que seja necessrio bloquear todas as tabelas ao mesmo tempo antes de fazer a cpia de segurana. Existem vrias opes para realizar a cpia de segurana de uma base de dados MySQL. Em primeiro lugar, podamos utilizar alguma ferramenta comercial que gira todo o processo, isto tem como vantagens a simplicidade do mtodo, e como inconveniente, que no costuma ser grtis, sendo necessrio pagar uma licena pela sua utilizao. Estas ferramentas no se analisaro neste artigo. Em segundo lugar, e a partir da verso 3.23.25 e posteriores, existe a possibilidade de realizar uma cpia de segurana atravs da sentena sql "backup table". Como terceira opo, possvel realizar cpias de segurana atravs das ferramentas que nos proporciona o prprio gestor de bases de dados, como podem ser mysqldump ou mysqlhotcopy.

Artigo por Carlos Cuenca Daz

Backup MySQL mediante sentenas SQLVeremos como realizar uma cpia de segurana da tabela e a sua recuperao a partir de sentenas SQL.Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 26

Manuais e recursos para desenvolvimento web www.criarweb.com

Backup dos dados Este comando permite-nos fazer uma cpia dos ficheiros das tabelas das quais queremos fazer um backup, actualmente s funcionam com tabelas do tipo MyIsam, e copia tanto os ficheiros .frm que contm a definio da tabela, como os ficheiros .myd, que contm os dados. Antes de executar-se, guarda todas as alteraes que possam existir em memria da tabela, de forma que fique de uma maneira consistente. Do mesmo modo, durante a execuo do comando, bloqueia a tabela sobre a que se est a fazer a cpia de segurana para que os dados sejam consistentes na tabela. H que ter em conta que este comando bloqueia uma das tabelas, consoante vai fazendo a cpia de segurana. Isto poderia provocar uma inconsistncia de dados a nvel de base de dados, se necessrio fazer um backup de todas as tabelas num instante, sendo ento necessrio a utilizao do comando "lock tables" para bloquear todas as tabelas antes de comear a cpia de segurana. Ao finalizar o comando retorna uma tabela, que contem os dados: Coluna Table Op Msg_ty pe Msg_te xt Valores Nome da tabela Sempre pe "backup" Pode conter status, error, info ou warning. Mensagem descritivo do resultado da operao

Para realizar uma cpia de uma tabela chamada pedidos, pasta Backups:BACKUP TABLE pedidos TO `/backups/`

Recuperao de dados Para complementar a sentena "Backup table", Mysql dispem da sentena "Restore table", que permite restaurar uma tabela a partir de uma cpia de segurana que se realizou com o comando "Backup Table". Esta opo s se pode utilizar se a tabela que se pretende restaurar no se encontra na base de dados, pois em caso afirmativo mostrar uma mensagem de erro. Igual que o comando de Backup, esta opo s est disponvel para as tabelas de tipo MyIsam, e a partir da verso 3.23.25. Como o comando de backup no copia os ficheiros de ndices, o comando para recuperar os dados, volta a indexar todos os campos que contem ndices, criando os ficheiros correspondentes. Ao igual que o comando para fazer cpias de segurana, invocar o comando "restore table" retorna uma tabela, com um registo por cada tabela sobre a que se fez a base de dados, e que contem a seguinte informao: Coluna Table Op Valores Nome da tabela Sempre pe "restore"

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

27

Manuais e recursos para desenvolvimento web www.criarweb.com

Msg_typ Pode conter status, error, info ou warning. e Msg_text Mensagem descritivo do resultado da operao Para restaurar uma tabela chamada pedidos da pasta Backups base de dados:RESTORE TABLE pedidos FROM `/backups/`

Artigo por Carlos Cuenca Daz

Backup MySQL com mysqldumpEste comando permite fazer a cpia de segurana de uma ou vrias bases de dados. Tambm permite que estas cpias de segurana se possam restaurar em diversos tipos de gestores de bases de dados, sem a necessidade de que se trate de um gestor de mySQL. Isto consegue-se criando uns ficheiros, que contm todas as sentenas SQL necessrias para poder restaurar a tabela, que contem desde a sentena de criao da tabela, at uma sentena insert por cada um dos registos que formam parte da mesma. O comando dispem de uma ampla variedade de opes que nos permitir realizar a cpia da forma mais conveniente para o propsito da mesma. Para poder restaurar a cpia de segurana, bastar com executar todas as sentenas SQL que se encontram dentro do ficheiro, bem desde a linha de comandos de MySQL, ou desde o menu de criao de sentenas SQL de qualquer entorno grfico como pode ser o MySQL Control Center. As limitaes da restaurao dependero das opes que se especificaram na hora de fazer a cpia de segurana, por exemplo, se incluirmos a opo -add-drop-table ao fazer a cpia de segurana, podero-se restaurar tabelas que existem actualmente no servidor (apagando-as primeiro). Pelo qual necessrio estudar primeiro os procedimentos que se utilizaro tanto na cpia como na restaurao, para que tudo saia correcto! Algumas das opes que tem so: --add-locks Adiciona LOCK TABLES antes, e UNLOCK TABLE depois da cpia de cada tabela. --add-drop-table Adiciona um drop table antes de cada sentena create. -A, --all-databases Copia todas as bases de dados. Isto o mesmo que utilizar -databases seleccionando todas. -a, --all Inclui todas as opes de criao especficas de MySQL. --allow-keywords Permite a criao de nomes de colunas que so palavras chave, isto realiza-se pondo como prefixo a cada nome de coluna, o nome da tabela.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

28

Manuais e recursos para desenvolvimento web www.criarweb.com

-c, --complete-insert Utiliza inserts incluindo os nomes de coluna em cada sentena (incrementa bastante o tamanho do ficheiro) -C, --compress Comprime a informao entre o cliente e o servidor, se ambos suportam compresso. -B, --databases Para copiar vrias bases de dados. Neste caso, no se especificam tabelas. O nome dos argumentos refere-se aos nomes das bases de dados. Incluir-se USE db_name na sada antes de cada base de dados. --delayed Insere as filas com o comando INSERT DELAYED. -e, --extended-insert Utiliza a sintaxe de INSERT multilinha. (proporciona sentenas de insert mais compactas e rpidas) -#, --debug[=option_string] Utilizao do modo de depurao. --help Mostra mensagem de ajuda e termina. --fields-terminated-by=... --fields-enclosed-by=... --fields-optionally-enclosed-by=... --fields-escaped-by=... --lines-terminated-by=... Estas opes utilizam-se com a opo -T e tm o mesmo significado que a correspondente clusula LOAD DATA INFILE. -F, --flush-logs Escreve em disco todos os logs antes de comear com a cpia. -f, --force, Continua ainda que se produza um erro de SQL durante a cpia. -h, --host=.. Copia os dados do servidor de MySQL especificado. O servidor pr-definido localhost. -l, --lock-tables. Bloqueia todas as tabelas antes de comear com a cpia. As tabelas bloqueiam-se com READ LOCAL para permitir inserts simultneos em caso das tabelas MyISAM. Quando se realiza a cpia de mltiplas bases de dados. As tabelas em diferentes bases de dados copiaro-se em estados completamente diferentes. -K, --disable-keys Incluir-se na sada /*!40000 ALTER TABLE tb_name DISABLE KEYS */;e /*!40000 ALTER TABLE tb_name ENABLE KEYS */; Isto far que o carregamento de dados num servidor MySQL 4.0 se realize mais rpido devido a que os ndices se criaro depois de que todos os dados

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

29

Manuais e recursos para desenvolvimento web www.criarweb.com

tenham sido restaurados. -n, --no-create-db No se incluir na sada CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name; Esta linha inclui-se se a opo --databases ou --all-databases foi seleccionada. -t, --no-create-info No incluir a informao de criao da tabela (sentena CREATE TABLE). -d, --no-data No incluir nenhuma informao sobre os registos da tabela. Esta opo serve para criar uma cpia s da estrutura da base de dados. --opt O mesmo que --quick --add-drop-table --add-locks --extended-insert --lock-tables. Esta opo deveria permitir realizar a cpia de segurana da base de dados da forma mais rpida e efetiva. -pyour_pass, --password[=your_pass] Password utilizada quando se conecta com o servidor. Se no se especifica `=your_pass', mysqldump preguntar a password. -P, --port=... Porto utilizado pelas ligaes TCP/IP. --protocol=(TCP | SOCKET | PIPE | MEMORY) Especifica o protocolo de conexo que se utilizar. -q, --quick No armazena no buffer a sentena, copia-a diretamente na sada. Utiliza mysql_use_result() para realiza-lo. -Q, --quote-names Pe entre aspas as tabelas e nomes de coluna. -r, --result-file=... Redireciona a sada ao ficheiro especificado. Esta opo deveria utilizar-se em MSDOS, porque previne a converso de nova linha '\n' em nova linha e return '\n\r'. --single-transaction Utiliza o comando BEGIN antes de realizar a cpia desde o servidor. muito til com as tables InnoDB e o nvel de transao READ_COMMITTED, porque deste modo realizar-se a copia de segurana de um estado consistente sem a necessidade de bloquear as aplicaes. Consultar o manual para mais detalhes. -S /path/to/socket, --socket=/path/to/socket O ficheiro de sockets que se especifica ao conectar ao localhost (que o host pr-definido). --tables sobrescreve a opo --databases (-B). -T, --tab=path-to-some-directory

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

30

Manuais e recursos para desenvolvimento web www.criarweb.com

Cria um ficheiro table_name.sql, que contem a sentena de criao de SQL, e um ficheiro table_name.txt, que contem os dados de cada tabela. O formato do ficheiro '.txt' realiza-se com as opes --fields-xxx y --lines--xxx options.Nota: Esta opo s funciona se o comando mysqldump se executa na mesma mquina que o demnio (daemon) mysqld, o usurio dever ter licena para criar e escrever o ficheiro no path especificado.

-u nombre_usuario, --user=nombre_usuario O nome de usurio que se utilizar quando se conecte com o servidor, o valor pr-definido o do usurio actual. -v, --verbose Vai mostrando informao sobre as aces que se vo realizando (mais lento) -w, --where='clusula where' Serve para realizar a cpia de determinados registos. -X, --xml Realiza a cpia de segurana num documento XML. -x, --first-slave Bloqueia todas as tabelas de todas as bases de dados. Exemplo: Para realizar a cpia de segurana da base de dados minhabase ao ficheiro copia_seguranca.sqlmysqldump --opt minhabase > copia_seguranca.sql

Artigo por Carlos Cuenca Daz

Subir uma base de dados ao servidor de InternetPara alm dos ficheiros da pgina, devemos subir a base de dados com a que temos de trabalhar. As bases de dados com as que trabalha PHP so muito variadas e em vrios casos podemos utilizar uma ou outra, e por tanto o modo de subir a base de dados tambm pode variar. muito normal que o nosso provedor de hosting oferea junto com PHP a base de dados MySQL, assim que os apontamentos para subir essa base de dados ao servidor de este artigo vo encaminhados a oferecer solues para essa base de dados. A base de dados MySQL no se pode subir por FTP, como se fazia com os ficheiros do cdigo PHP. Para a subir teremos que utilizar outros mecanismos. Vou distinguir entre trs casos diferentes nos que poderamos encontrar-nos neste momento: 1. A base de dados que pretendemos subir est vazia. S crimos as tabelas, mas no introduzimos dados ou simplesmente introduzimos algum dado como experincia. 2. A base de dados que queremos subir est completa e uma base de dados MySQL. Neste caso teremos de criar a base de dados em local com toda a informao dentro eManual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 31

Manuais e recursos para desenvolvimento web www.criarweb.com

obviamente, queremos que esteja disponvel essa informao em remoto. 3. A base de dados est completa (como no caso anterior), mas no uma base de dados MySQL. Neste caso estaramos a fazer uma migrao da base de dados de um sistema gestor a outro. Veremos os trs casos por separado mais frente, mas antes disso, vamos mostras umas ferramentas que nos sero muito teis para a administrao de qualquer base de dados remota. As ferramentas em concreto so as seguintes: PhpMyAdmin. Uma aplicao criada em PHP que podemos instalar no nosso espao de alojamento para administrar a base de dados. Mysql Control Center (a partir de agora MyCC). Uma aplicao Windows que permite conectar-se a diversas bases de dados MySQL, que se estejam em local ou em remoto. Access. Tambm permite administrar uma base de dados MySQL conectada em local ou em remoto. Neste caso utiliza-se uma interface que muitos j conhecem, como a do Access, para administrar uma base de dados que nada tem a ver com o mencionado programa.

Nos trs casos o que nos permite realizar o software de administrao so tarefas, sobre as bases de dados, de todo tipo, como podem ser criar tabelas, modific-las, inserir dados, apag-los, edit-los. Modificar ou apagar tabelas ou campos das mesmas, etc. A eleio de uma ferramenta ou de outra passa pelos recursos que nos permitam utilizar no nosso provedor. Basicamente, o que nos pode levar a escolher uma opo ou outra se nos permitem ou no conectar de maneira remota base de dados MySQL. Conheo alojamentos onde se permite essa conexo e alojamentos onde no. Se no permidito conectar-nos remotamente escolheramos o PhpMyAdmin, pois uma aplicao PHP que se conecta em local e ao que se pode aceder atravs de uma pgina web, e isso est permitido pelos provedores, inclusive h muitos que j tm instalado esse software para administrar as bases de dados. No caso de que efetivamente possmos conectar-nos remotamente com a base de dados, a nossa escolha ser MyCC ou Access, que so aplicaes Windows muito mais potentes e rpidas que as que utilizam interface web, como o PhpMyAdmin. prefervel usar MyCC porque est especialmente feito para conectar-se e operar com bases de dados MySQL. Artigo por Miguel Angel Alvarez - Traduo de JML

Subir uma base de dados MySQL vazia ao servidor normal que tenhamos uma base de dados para o nosso projecto do 0, definindo s diferentes entidades do nosso modelo de dados, os seus campos e os seus tipos. Neste caso o mais provvel que a base de dados esteja vazia, ou bem contenha dados que introduzimos para verificar o correcto funcionamento da base. Obviamente no queremos conservar estes dados quando a aplicao esteja a funcionar no servidor...

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

32

Manuais e recursos para desenvolvimento web www.criarweb.com

A opo mais interessante podia ser criar outra vez as tabelas que temos em local na base de dados remota. Para o fazer temos duas hipteses. a) Se temos poucas tabelas e bastante simples Podemos cria-las em remoto com alguma ferramenta como PhpMyAdmin ou MyCC b) Se temos muitas tabelas e/ou so muito complicadas Neste caso recomendamos fazer um backup da estrutura em local e restaura-la em remoto. Isto evitar-nos ter que voltar a criar todas as tabelas e definir todos os seus campos e tipos. Pode ser um pouco mais complicado mas sem duvida poupar-nos tempo. Para fazer backup da estrutura em local podemos utilizar alguma ferramenta como PhpMyAdmin, ou utilizar o comando mysqldump desde a linha de comandos de MS-DOS.

Ferramenta de backup de PhpMyAdmin. Est marcada a opo de extrair s a estrutura das tabelas. Se marcamos tambm a opo "Send", o nosso navegador criar um ficheiro de texto. Se no o fizermos s se visualizar.

O que temos de fazer neste caso um backup da estrutura da base de dados, isto , os "create tables" ou sentenas SQL para criar as tabelas. Seriam bastantes sentenas deste gnero. # -------------------------------------------------------# # Table structure for table 'comentario' #CREATE TABLE comentario ( id_comentario int(5) unsigned NOT NULL auto_increment, id_artigo int(4) DEFAULT '0' NOT NULL, comentario text NOT NULL, data int(14) unsigned DEFAULT '0' NOT NULL, revisado tinyint(1) DEFAULT '0' NOT NULL, nome_comentario varchar(100) DEFAULT 'Nome no especificado' NOT NULL, email_comentario varchar(100) DEFAULT 'Email sem especificar' NOT NULL, tipo tinyint(1) unsigned DEFAULT '1' NOT NULL, PRIMARY KEY (id_comentario) );

Para restaurar estas sentenas temos opes tanto dentro de PhpMyAdmin como de MyCC. Em ambos casos o que temos de fazer executar estas sentenas no servidor MySQL remoto. EmManual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 33

Manuais e recursos para desenvolvimento web www.criarweb.com

PhpMyAdmin temos um campo para introduzir sentenas SQL e outro para seleccionar um ficheiro de texto com todas as sentenas SQL, para executa-las uma detrs da outra. No MyCC temos um boto que nos permite abrir uma consola onde introduzir uma ou vrias sentenas SQL e executa-las.

Boto para introduzir sentenas SQL em MyCC

Recordamos que isto s nos servir para subir a estrutura da base de dados e no os dados que contenham. Se desejamos subir tambm a informao da base de dados temos de utilizar outras estratgias que relataremos proximamente. Artigo por Miguel Angel Alvarez - Traduo de JML

Subir uma base de dados MySQL com a estrutura e os dadosSe a base de dados que queremos subir est cheia de informao e desejamos que se conserve uma vez subida a base de dados a remoto, temos de realizar um backup da base de dados e restaura-lo em remoto.Nota: Estas recomendaes pensadas para subir uma base de dados MySQL que esteja em local a uma base de dados MySQL que tenhamos contratado em remoto. Se a base origem no MySQL estaramos a falar de uma migrao de bases de dados, mas isto ser visto num artigo mais a frente.

Neste caso o processo seria muito parecido ao de subir uma base de dados vazia, relatado anteriormente, excepto que agora temos de extrair no s a estrutura da base de dados, mas tambm os registos que contm.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

34

Manuais e recursos para desenvolvimento web www.criarweb.com

Para fazer isto podemos utilizar mysqldump ou PhpMyAdmin, seleccionando a opo que indica que o backup contem a estrutura e os dados (Structure and data). A estrutura e os dados vem num ficheiro de texto com uma serie de sentenas SQL para criar as tabelas e os insert necessrios para introduzir cada um dos dados. Para restaurar a base de dados, vamos seguir os mesmos passos como para o caso em que a base de dados est vazia, com a ajuda de uma instalao de PhpMyAdmin em remoto ou MyCC, que se conecte a base de dados contratada no servidor de Internet. Se temos problemas para subir o ficheiro de backup da base de dados possvel que o nosso provedor de alojamento nos possa ajudar a subir o ficheiro e restaura-lo. Como o provedor dispe dos servios nas suas prprias instalaes, tem muitas mais possibilidades para trabalhar com as bases de dados do que ns, sem temor a que as lentas comunicaes pela internet nos dem erros na restaurao dos dados. Se o nosso provedor no pode ajudar-nos, de certeza que dispem ou nos pode indicar algum mecanismo para realizar a tarefa sem erros. Pode acontecer que algum provedor nos diga que se encarrega de tudo mas que nos exige um pagamento pelas horas de trabalho da pessoa que vai restaurar o backup da base de dados. Se no dispe de facilidades nem sequer nisto, provavelmente seja melhor ir pedindo-lhe o dinheiro de volta porque o seu servio quase de certeza no vai ser de qualidade. Artigo por Miguel Angel Alvarez - Traduo de JML

Migrar uma base de dados a MySQLO ltimo caso no que nos podemos encontrar na hora de subir uma base de dados ao nosso provedor de alojamento que a base de dados que tenhamos criada em local v ser utilizada em remoto. Em remoto supomos sempre que vamos utilizar a base de dados MySQL. Em local poderamos dispor de uma base de dados Access, SQL Server ou de outro sistema de base de dados. O processo da migrao pode ser bastante complexo e como h tantas bases de dados diferentes, vai ser complicado dar uma "receita" que funcione em todos os casos. Para alm da dificuldade de transferir informao entre os dois sistemas gestores de bases de dados, tambm influir muito na complexidade do problema o tipo de dados das tabelas que estamos a utilizar. Por exemplo, as datas, os campos numricos com decimais ou os boleanos podem dar problemas ao passar de um sistema a outro porque podem armazenar-se de maneiras diferentes ou nos caso dos nmeros, com uma preciso diferente. Recomendaes para migrar de Access a MySQL Se a nossa base de dados anterior estava construda em Access a migrao ser fcil graas a que MySQL dispe dum driver ODBC para sistemas Windows, que nos permite conectar Access com o prprio MySQL e passar informao facilmente. Devemos indicar que se desejarmos fazer uma exportao desde Access em local a MySQL em remoto pode haver problemas porque no todos os servidores permitem as conexes em remoto com a base de dados. Se no temos disponvel uma conexo em remoto com o nossoManual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 35

Manuais e recursos para desenvolvimento web www.criarweb.com

servidor de bases de dados vamos ter que mudar de estratgia. A idia neste ltimo caso instalar MySQL em local e realizar a migrao desde Access em local a MySQL em local e depois ,fazer um backup da base de dados local e subi-la a remoto, tal e qual como se relatou antes. Recomendaes para migrar desde SQL Server a MySQL A verdade que nunca passei por este problema, mas Access tambm nos pode ajudar neste caso. Access permite seleccionar uma base de dados SQL Server e trabalhar desde a prpria interfaz de Access. A idia que Access tambm permite trabalhar com MySQL e possivelmente fazendo uma pontes entre estes dois sistemas gestores podemos exportar dados desde SQL Server a MySQL. O certo que utilizando o prprio Access de ponte poderamos realizar o trabalho. Primeiro exportando de SQL Server a Access e depois de Access a MySQL. Outras bases de dados e outras tcnicas Se a base de dados origem dispem de um driver ODBC no haver (em teoria) nenhum problema para conecta-la com Access, de maneira similar a como se conecta com MySQL. Poderamos utilizar Access para exportar os dados, porque desde ali poderia-se aceder aos dois sistemas gestores de bases de dados Se no temos Access, ou a base de dados original no tem driver ODBC, ou ainda se no funciona correctamente o processo e no sabemos como resolver o problema, outra possibilidade exportar os dados a ficheiros de texto, separados por vrgulas ou algo parecido. Muitas bases de dados tm ferramentas para exportar os dados das tabelas a ficheiros de texto, os quais podem ser introduzidos no nosso sistema gestor destino (MySQL) com a ajuda de alguma ferramenta tal como PhpMyAdmin. Para isso, na pgina de propriedades da tabela encontraremos uma opo para fazer o backup da tabela e para introduzir ficheiros de texto dentro de uma tabela (Insert textfiles into table)

Acedendo a este link poderemos ver um formulrio onde introduzir as caractersticas do ficheiro de texto, como o carcter utilizado como separador de campos, ou o terminador de linhas, etc, junto com o prprio ficheiro com os dados, e PhpMyAdmin encarregar-se- de todo esse trabalho de incluir eses dados na tabela.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

36

Manuais e recursos para desenvolvimento web www.criarweb.com

Obviamente, necessrio ter a tabela criada em remoto para que se possa introduzir os dados do ficheiro de texto. Mudana de um formato de dados a outro Toda migrao tem de ter em conta muito especialmente, como j se disse, as formas que tenham cada base de dados de guardar a informao. Temos que contar sempre com a possibilidade de transformar alguns dados como podem ser os campos boleanos, datas, campos memo (texto com longitude indeterminada), etc, que podem armazenar-se de maneira diferente em cada um dos sistemas gestores, origem e destino. Nalguns casos possivelmente tenhamos de realizar algum script que realize as mudanas necessrias nos dados. Por exemplo para localizar os valores boleanos guardados como true/false e muda-los a valores inteiros 0 / 1, que como se guarda em MySQL. As datas tambm podem sofrer alteraes de formato, por exemplo, em Access aparece com o formato (dd/mm/aaaa), e em MySQL o formato (aaaa-mm-dd). PHP pode Ajudar-nos na tarefa de fazer este script mas tambm Visual Basic Script para Access pode fazer estas tarefas complexas e a prpria linguagem SQL, base de sentenas dirigidas contra a base de dados. Artigo por Miguel Angel Alvarez - Traduo de JML

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

37

Manuais e recursos para desenvolvimento web www.criarweb.com

Como alterar tabelas MySQLConstruir tabelas MySQL faz parte do dia-a-dia do desenvolvimento de sistemas em PHP, e bem farto o material disponvel sobre criao de tabelas, atributos, colunas, etc. No entanto, quando precisamos alterar tabelas j abastecidas com dados, a documentao bem mais escassa, e este tutorial tenta cobrir esta lacuna, ensinando como adicionar, eliminar, renomear e alterar atributos de colunas. Tudo sem dor.O.b.s: Os comandos em MySQL esto escrito em maisculo por uma questo didtica. Ao praticar o exerccio ou no seu trabalho dirio, pode escrever tudo em minsculo, como preferir.

Comeamos com a tabela hipottica clientes, criada com os seguintes parmetros:create table clientes (id int unsigned not null auto_increment primary key, nome char(80) not null, fone int not null, endereco char(160) not null);

O comando bsico para se alterar colunas o ALTER TABLE, seguido do nome da tabela. Ento, qualquer query de alterao da nossa tabela clientes comear da seguinte forma:ALTER TABLE clientes

1. Adicionando colunas: Para adicionar colunas a uma tabela MySQL use o comando ADD, seguido do nome e dos atributos da coluna que ser adicionada, e da sua posio dentro da tabela, com o auxlio do parmetro AFTER. Considerando que adicionaremos a coluna email tabela clientes, nosso cdigo fica assim:ALTER TABLE clientes ADD email char(80) not null AFTER fone;

Para ver o resultado das alteraes, d o comando DESCRIBE clientes. 2. Eliminando colunas: O comando bsico para se eliminar colunas de uma tabela DROP, seguido do nome da coluna. Use este comando com cuidado, pois todas as informaes contidas dentro da coluna sero perdidas. Assim, para eliminar nossa recm criada coluna email, usaremos a seguinte query:ALTER TABLE clientes DROP email;

Testaram? Simples e legal. 3. Alterando colunas: O comando bsico para alterao de atributos e nome de colunas CHANGE, seguida da denominao da coluna a ser alterada e dos novos atributos. Para mudar os atributos da coluna fone, utilizaremos a seguinte query:ALTER TABLE clientes CHANGE fone fone char(30) not null;

Vocs devem ter percebido que a palavra 'fone' foi utilizada duas vezes. Isso ocorre porque se indica primeiro a coluna e depois seus novos atributos, e o nome da coluna um de seus atributos.Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 38

Manuais e recursos para desenvolvimento web www.criarweb.com

Supomos que queiramos agora somente mudar o nome da coluna, e manter seus demais atributos:ALTER TABLE clientes CHANGE fone telefone char(30) not null;

Veja as alteraes com DESCRIBE clientes; Muito cuidado ao se alterar atributos de colunas, especialmente datatypes, pois todas as informaes que no podem ser interpretadas como caractersticas do novo datatype sero perdidas. Boa sorte em seus trabalhos e at a prxima. Artigo por Vincius Delgado

Verificao e correo de tabelas corrompidas no MySQLO MySQL tem se mostrado muito estvel no que diz respeito a tabelas corrompidas, mas existem algumas situaes que podem levar o banco a danificar uma tabela. Os principais fatores que levariam a esta situao seriam a parada inesperada do SGBD (Sistema Gerenciador de Banco de Dados), neste caso se o MySQL estiver escrevendo alguma informao no disco, esta operao pode ser interrompida antes do trmino acarretando uma inconsistncia. Outra possibilidade seria uma falha de hardware, por exemplo uma tabela pode ser armazenada em uma trilha danificada do disco. Neste artigo apresento as tcnicas de deteco e correo de tabelas do MySQL, bem como os procedimentos para a utilizao destas ferramentas. Uma boa prtica a realizao de uma vistoria peridica da base de dados a fim de detectar eventuais problemas em seus dados. Com isto, possvel detectar uma tabela corrompida e corrigi-la antes que a sua aplicao pare de funcionar por causa deste erro. O MySQL apresenta duas ferramentas para a verificao de tabelas que so o comando CHECK TABLE e o utilitrio myisamchk. O primeiro funciona para todos os tipos de tabelas enquanto o segundo, como o prprio nome sugere, s se aplica tabelas MyISAM. O comando CHECK TABLE a forma mais simples para realizar a verificao de dados, j que se aplica a qualquer tipo de tabela e, por ser um comando do MySQL o mesmo executado de forma atmica, inibindo qualquer tentativa de alterao da tabela durante o processo de verificao. Este comando pode ser utilizado com as seguintes opes: - QUICK: Verifica somente a rvore de ndices da tabela; - FAST: Verifica somente as tabelas que no foram fechadas corretamente, por exemplo, numa queda do SGBD; - CHANGED: Verifica somente as tabelas que no foram alteradas desde a ltima verificao; - MEDIUM: Opo padro (default), verifica a rvore de ndices e os apontamentos destes ndices para os dados;Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 39

Manuais e recursos para desenvolvimento web www.criarweb.com

- EXTENDED: Verifica toda a rvore de ndices, as ligaes dos ndices com os dados e o dado propriamente dito. Observe que medida que caminhamos nas opes aumentamos a complexidade da verificao, aumentando a capacidade de deteco de problemas. Por outro lado, quanto maior o nvel de verificao, maior ser o tempo de execuo da tarefa. De um modo geral, os problemas com tabelas esto associados aos seus ndices, e neste caso, o modo padro de verificao suficiente na maioria dos casos. A seguir est ilustrada a execuo de uma verificao de 3 tabelas:

No exemplo vemos que a tabela Cidade est OK, isto , no h nenhuma anomalia. A segunda tabela (Pais) retornou a mensagem "Table is already up to date" o que significa dizer que havia algum problema na tabela, mas o mesmo j foi corrigido pelo prprio comando de verificao. E por ltimo, percebemos que a tabela Lingua est corrompida, portanto teremos que corrigila. O mesmo procedimento pode ser executado atravs do utilitrio myisamchk, caso a tabela seja do tipo MyISAM. O myisamchk apresenta vrios parmetros de execuo e pode ser utilizado para verificao, correo e otimizao de tabelas. O detalhe em relao a este utilitrio que ele no se comunica com o servidor fazendo um acesso direto aos arquivos da tabela a ser verificada. Por isto, pode ocorrer problemas de concorrncia no dado, que deve ser eliminada atravs da utilizao de um LOCK de leitura na tabela a ser verificada: mysql>LOCK TABLES Cidade READ, Pais READ, Lingua READ; .... mysql>UNLOCK TABLES; A execuo do myisamchk para o mesmo problema ilustrada a seguir, sendo que a opo -C utilizada significa CHANGED. Para obter a lista completa de parmetros utilize a opo --help. shell> cd DATADIR shell>myisamchk -C Cidade, Pais, Lingua Uma vez detectado o problema na tabela, como o caso da tabela Lingua do exemplo anterior, necessrio corrigir a estrutura desta tabela. Para a correo de tabelas utilizamos o comando REPAIR TABLE, que pode ser executado em dois modos: - QUICK Tenta corrigir apenas a rvore de ndices, no manipula os dados da tabela;

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

40

Manuais e recursos para desenvolvimento web www.criarweb.com

- EXTENDED Sero recriados todos os ndices da tabela linha a linha, refazendo os apontamentos destes ndices para os dados. O myisamchk pode ser utilizado para a correo de tabelas ao utilizar-se as opes -r ou -o. A seguir vamos fazer a correo da tabela Lingua atravs do REPAIR TABLE e do myisamchk:

shell>cd DATADIR shell>myisamchk -r Lingua No exemplo, vimos que a tabela Lingua foi corrigida com sucesso pelo comando REPAIR TABLE, como mostra o comando CHECK TABLE EXTENDED executado na tabela. Portanto, procure verificar as suas tabelas periodicamente, como exemplo, poderamos criar um script e agendlo para fazer a verificao de todas as tabelas do sistema uma vez por semana. Isto poderia ser feito via cron, no caso do Linux ou qualquer agendador de tarefas do SO. Assim, voc reduz as possibilidades de a sua aplicao parar por causa de problemas em tabelas. Abraos e at breve! Artigo por Eber M. Duarte

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

41

Manuais e recursos para desenvolvimento web www.criarweb.com

Ferramentas Grficas para Modelagem de Dados e Administrao do MySQLEste artigo tem como objetivo principal introduzir algumas ferramentas grficas para a manipulao do banco de dados MySQL. Basicamente apresentarei uma ferramenta para modelagem de dados, Modelo Entidade-Relacionamento (MER), e uma ferramenta para a realizao de tarefas administrativas. Os procedimentos de instalao destas ferramentas no sero descritos aqui, uma vez que estes podem ser encontrados na pgina de download dos produtos. A ferramenta de modelagem de dados no MySQL, DBDesigner 4, foi desenvolvida e otimizada para a utilizao com este banco de dados provendo aos seus usurios uma forma simples e centralizada para a definio dos seus modelos de dados. O DBDesigner 4 pode ser obtido a partir do endereo www.fabforce.net/dbdesigner4/, sendo que o mesmo est disponvel para o Microsoft Windows e Linux. A vantagem desta ferramenta para os usurios do MySQL que ela apresenta todos os recursos compatveis com o MySQL, tais como os tipos de dados. Ela permite ainda a escolha do tipo de tabela a ser utilizada (InnoDB, MyISAM, dentre outros), e a definio de outros incrementos para a criao de tabelas. Tambm possvel definir os relacionamentos entre tabelas e construir as restries (constraints) associadas a cada relacionamento, sendo criadas automaticamente as chaves estrangeiras nas tabelas relacionadas. Outros recursos importantes do DBDesigner so a engenharia reversa e sincronizao do modelo com a base de dados. Assim, torna-se fcil a manuteno do seu esquema de banco de dados com o MER definido no DBDesigner 4. Alm disto, possvel elaborar consultas SQL de forma grfica a partir da utilizao do "Query Mode". Esta ferramenta permite a leitura de MERs criados a partir do ERWin, e armazena os seus modelos em formato XML. Para a administrao do MySQL, utilizamos a ferramenta MySQL Administrator que um console visual de administrao, que permite controlar de forma simplificada o seu ambiente MySQL, e obter informaes importantes acerca de como o seu banco de dados est operando. O MySQL Administrator permite integrar a administrao e manuteno do banco de dados em uma nica ferramenta que apresenta uma interface extremamente intuitiva e amigvel. Este produto pode ser obtido a partir do endereo www.mysql.com/products/administrator/, onde voc ter acesso tambm a algumas telas de demonstrao. Inicialmente o MySQL Administrator est disponvel para Microsoft Windows e Linux, sendo compatvel com o MySQL 4.0 ou verses mais novas. O MySQL Administrator permite ao administrador do banco de dados (DBA) executar tarefas como a configurao de parmentros do servidor, administrao dos usurios do sistema, monitoramento de medidas de desempenho do servidor (tais como a utilizao de memria), percentual de acerto em caches, dentre outros. Alm disto, possvel fazer o controle e administrao da replicao de dados, rotinas de backup e restaurao de dados onde voc especifica o esquema de banco de dados a ser manipulado, bem como visualizar arquivos de logs e status do servidor. Tambm possvel visualizar todos os esquemas de bancos de dados existentes, bem como as tabelas e suas estruturas de campos e ndices. O MySQL Administrator tambm disponibiliza para o DBA uma interface de configurao dosManual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 42

Manuais e recursos para desenvolvimento web www.criarweb.com

parmetros relativos ao InnoDB, que o tipo de tabela transacional do MySQL (veremos os tipos de tabelas em breve). Por exemplo, possvel definir a partir desta ferramenta os arquivos que compem o tablespace e logs de transao do InnoDB, apontando os seus tamanhos e localizao dentro do sistema de arquivos. Alm desta ferramenta para a administrao, foi anunciado na MySQL Users Conference em abril/2004, o MySQL Query Browser que tem como objetivo fornecer aos usurios do banco de dados mecanismos simplificados e visuais para uma fcil construo de consultas SQL. Esta ferramenta possui recursos avanados de edio de comandos SQL, e estar disponvel para download no site www.mysql.com, dentro de algumas semanas. Com isto, a ferramenta grfica disponvel atualmente para o MySQL, o MySQLCC, ser substituda completamente por estes dois novos aplicativos. Espero que apreciem estas ferramentas. Abraos e at a prxima! Artigo por Eber M. Duarte

Criao de Database LinksUm database link um objeto criado em um esquema de um banco de dados que possibilita o acesso a objetos de outro banco de dados, seja ele Oracle ou no. Esse tipo de sistema conhecido como Sistema de Banco de Bados Distribudos e pode ser Homogneo quando acessa outros bancos de dados Oracle - e Heterogneo quando acessam outros tipos de bancos de dados. Para acessar bancos de dados que no sejam Oracle necessrio utilizar o Oracle Heterogeneous Services em conjunto com um agente. O Heterogeneous Services um componente integrante do Oracle server a partir de sua verso 8i que habilita a tecnologia dos produtos Oracle Transparent Gateway, sendo que Heterogeneous Services prov uma arquitetura comum e mecanismos de administrao para os produtos Oracle gateway, alm de outras facilidades de acesso a bancos heterogneos. Para acessar um banco de dados no Oracle utilizando um Oracle Transparent Gateway (agente) deve-se selecionar uma aplicao especfica do sistema, ou seja, cada banco de dados especfico requer um agente diferente. Por exemplo, para criar um database link com um banco de dados Sybase necessrio obter um gateway transparente especfico para Sybase para que ento o banco de dados Oracle possa comunicar-se com ele. O agente executa comandos SQL e requisies de transaes a bancos de dados no Oracle em nome do usurio da base de dados Oracle. Pode-se, tambm, utilizar uma conectividade genrica para acessar bancos de dados no Oracle, como os protocolos ODBC ou OLE DB, atravs do uso dos Heterogeneous Services ODBC e OLE-DB, sem a necessidade de adquirir e configurar um agente especfico para o banco de dados que se deseja acessar. Neste artigo irei ensinar, em detalhes, a criar um database link homogneo entre bancos deManual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao. 43

Manuais e recursos para desenvolvimento web www.criarweb.com

dados (inclusive de diferentes verses) Oracle. Ao criar um database link possvel utilizar e referenciar tabelas e vises do outro banco de dados, acrescentando ao final do nome destes objetos @nome_do_dblink. Com o dblink e os privilgios necessrios possvel utilizar comandos SELECT, INSERT, UPDATE, DELETE ou LOCK TABLE sobre os objetos desejados do banco de dados remoto, sabendo que uma transao do banco de dados ir incluir os comandos DML (linguagem de manipulao de dados) direcionados a dblinks, tornando as operaes de COMMIT e ROLLBACK sobre tais bases, transparente.

Para a criao de um database link alguns pr-requisitos devem ser observados: O usurio que ir criar o database link precisa ter o privilgio de sistema CREATE DATABASE LINK (para database links privados) ou CREATE PUBLIC DATABASE LINK (para database links pblicos), alm do privilgio de sistema CREATE SESSION no banco de dados Oracle remoto. A ferramenta Oracle Net precisa estar instalada tanto para o banco de dados local quanto para o remoto. O valor da varivel GLOBAL_NAMES na instncia onde o database link ser criado, se configurada no arquivo de inicializao ou na sesso corrente (ALTER SESSION SET) do banco de dados como TRUE o nome global do banco de dados remoto deve ser utilizado (composto pelo nome_do_banco.domnio, ou seja, os parmetros db_name.db_domain do arquivo de inicializao: initSID.ora). O nome global do banco de dados tambm pode ser descoberto atravs da execuo do seguinte comando SELECT no banco remoto: select GLOBAL_NAME from GLOBAL_NAME; A criao, propriamente dita de um database link realizada conectando-se no banco de dados local com um usurio que possua os privilgios necessrios e executando o seguinte comando: CREATE DATABASE LINK nome_do_dblink CONNECT TO usurio_banco_remoto IDENTIFIED BY senha USING 'connect_string';

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

44

Manuais e recursos para desenvolvimento web www.criarweb.com

Exemplo: CREATE DATABASE LINK PRODUC CONNECT TO scott IDENTIFIED BY tiger USING 'PRODUC'; Com o comando especificado acima, o usurio atualmente conectado pode conectar-se ao banco de dados remoto PRODUC com se fosse o usurio Scott/tiger deste banco de dados remoto. Vale lembrar que o usurio especificado na criao do dblink deve existir no banco de dados remoto e caso a senha do usurio de conexo neste banco seja alterada necessrio destruir (DROP DATABASE LINK) e recriar o dblink com a identificao da nova senha do usurio de conexo, caso contrrio o dblink deixar de funcionar. Quando o usurio especificado, juntamente com sua senha, na clusula CONNECT TO, tem-se um database link especificado, caso contrrio, tem-se um database link annimo (ou conectado). No caso de database links annimos o usurio da sesso corrente ser utilizado como padro. Por exemplo: CREATE DATABASE LINK PRODUC USING 'PRODUC'; O valor especificado na clusula USING conhecido como connect_string (ou net_connect_string a partir do Oracle8i). A connect string precisa estar definida no Net8, no arquivo de configuraes de nome TNSNAMES.ORA. Por exemplo: PRODUC = (DESCRIPTION = (ADDRESS = (COMMUNITY = tcp.world) (PROTOCOL = TCP) (Host = meteoro) (Port = 1521)) (CONNECT_DATA = (SID = PRODUC) (GLOBAL_NAME = PRODUC.com.br) (SERVER = DEDICATED))) Para testar se o dblink foi criado com sucesso pode-se utilizar o seguinte comendo SELECT: SELECT * FROM emp@PRODUC; Para manter-se a transparncia no acesso a objetos de outros bancos de dados pode-se criar sinnimos pblicos para os objetos acessados atravs do dblink. Por exemplo: CREATE PUBLIC SYNONYM emp FOR scott.emp@PRODUC Pode-se tambm criar um dbkink como PUBLIC, que permite a todos os usurios do banco de dados local acessar os objetos do banco de dados remoto. Em geral, a opo de databases links pblicos so criados apenas quando se utiliza a clusula de autenticao, garantindo o aspecto de segurana no acesso a dados. Esta opo de database link est disponvel apenas em configurao de servidores multi-thread.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

45

Manuais e recursos para desenvolvimento web www.criarweb.com

Exemplo: CREATE SHARED PUBLIC DATABASE LINK PUBLIC CONNECT TO scott IDENTIFIED BY tiger AUTHENTICATED BY admin IDENTIFIED BY adm123 USING 'PRODUC'; A clusula AUTHENTICATED especifica o usurio e senha, neste exemplo ADMIN/ADM123 na instncia remota, permitindo autenticar o usurio para o servidor remoto, potencializando o aspecto de segurana. Para identificar quais os database links disponveis ao usurio atual e para onde os mesmos apontam o seguinte comando SELECT pode ser utilizado para acessar a view de DBA, dba_db_links: select OWNER, DB_LINK, USERNAME, HOST, to_char(CREATED,'MM/DD/YYYY HH24:MI:SS') Criao from dba_db_links order by OWNER, DB_LINK; Onde: Owner Nome do usurio criou o dblink; DBLink Nome do dblink; Username Nome do usurio para log no banco remoto; Host SQL*Net de conexo (encontrada no arquivo TNSNAMES.ORA); Created Data e hora de criao do dblink. Restries: As seguintes operaes no podem ser desenvolvidas utilizando-se database links: Conceder privilgios em objetos remotos; Executar operaes de DESCRIBE em alguns objetos remotos, com exceo de tabelas, views, procedures e functions; Realizar operaes de ANALYZE objetos remotos; Definir integridade referencial; Conceder roles usurios em a banco de dados remoto; Obter roles alm dos padres do usurio de conexo no banco de dados remoto e Executar consultas com hash joins.

Artigo por Damaris Fanderuff

Gerenciamento de Usurios e Controle de Acessos do MySQLO objetivo principal deste artigo descrever os mecanismos de controles de acessos do MySQL, bem como apresentar as rotinas para criao de usurios e gerenciamento de seus privilgios.

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

46

Manuais e recursos para desenvolvimento web www.criarweb.com

O MySQL possui um mecanismo que permite limitar o acesso de um usurio a apenas um banco, tabela ou coluna, alm de poder controlar o acesso de acordo com o host a partir de onde est sendo feita a conexo com o servidor. Pode-se ainda, conceder privilgios diferentes para cada host de onde o usurio possa estabelecer a conexo. Assim, possvel que determinados comandos possam ser executados somente quando o usurio estiver em um host especfico, por exemplo o mesmo host do servidor MySQL (localhost). O MySQL armazena as informaes dos seus usurios em 4 tabelas que esto localizadas no banco de dados mysql. Estas tabelas so a user, db, tables_priv e columns_priv. A tabela user armazena as informaes de todos os usurios do banco e os privilgios globais deste usurio. A tabela db armazena os privilgios dos usurios especficos de um banco de dados. Finalmente, as tabelas tables_priv e columns_priv armazenam os privilgios associados a tabelas e colunas, respectivamente. Como estas tabelas possuem as informaes dos usurios, bem como os seus privilgios, recomenda-se que apenas o administrador do banco de dados tenha acesso ao banco mysql (usurio root). Para criar usurios e conceder privilgios no MySQL, utiliza-se o comando GRANT. Ao executar um comando GRANT para um usurio que no existe, o mesmo ser criado. Um GRANT para um usurio j existente adicionar os novos privilgios aos j concedidos anteriormente. A sintxe resumida do comando GRANT exibida a seguir: GRANT priv [(colunas)] [, priv [(colunas)]] ... ON {*.* | db.* | db.tabela} TO usuario [IDENTIFIED BY 'senha'] [, usuario [IDENTIFIED BY 'senha']] ... [WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR contador | MAX_UPDATES_PER_HOUR contador | MAX_CONNECTIONS_PER_HOUR contador]] No comando acima os [ ] indicam que o comando opcional. O primeiro item a ser informado (so) o(s) privilgio(s) a ser(em) concedido(s) ao(s) usurio(s). A lista de privilgios existentes no MySQL descrita abaixo: Privilgio Descrio ALL [PRIVILEGE Todos os privilgios exceto GRANT OPTION S] ALTER CREATE Permite executar ALTER TABLE Permite executar CREATE TABLE

CREATE TEMPORARY Permite executar CREATE TEMPORARY TABLE TABLES DELETE DROP EXECUTE FILE INDEX Permite executar DELETE Permite executar DROP TABLE Permite executar stored procedures (MySQL 5.0) Permite executar SELECT ... INTO OUTFILE e LOAD DATA INFILE Permite executar CREATE INDEX e DROP INDEX

Manual de MySQL: http://www.criarweb.com/manuais/mysql/ Os manuais de CriarWeb.com tm copyright dos autores. No reproduzir sem autorizao.

47

Manuais e recursos para desenvolvimento web www.criarweb.com

INSERT LOCK TABLES PROCESS

Permite executar INSERT Permite executar LOCK TABLES em tabelas que voc tenha o privilgio SELECT Permite executar SHOW FULL PROCESSLIST

REFERENCE Ainda no est implementado S RELOAD Permite executar FLUSH REPLICATIO Permite ao usurio obter a localizao do Maste