Instalando o MySQL no iPhone

MySQL no iPhone

Olá pessoal. Na coluna desta semana apresentarei os passos para a instalação do MySQL no iPhone. Apesar de não se relacionar diretamente com o SQL Server, vou aproveitar o lançamento do iPhone 3G e comentar sobre como colocar um servidor de banco de dados dentro deste telefone celular que está se tornando cada vez mais popular.

A motivação para a instalação do MySQL no iPhone está relacionada com a possibilidade da inclusão de novos programas para esta plataforma. Como recentemente a Apple lançou uma SDK para o firmware 2.0 iPhone, várias aplicações já estão surgindo. Um exemplo dos tipos de aplicações, que podem ser colocadas à venda loja virtual AppleStorem, pode ser encontrado no link abaixo, que apresenta a avaliação de várias aplicações e jogos realizados pelo pessoal do site GizModo:

http://gizmodo.com/5023924/iphone-app-review-marathon-liveblog

Porém, nesta coluna vou apresentar como colocar o MySQL em um iPhone já desbloqueado. Não entrarei em detalhes de como desbloqueá-lo, uma vez que este tipo de operação é moralmente questionável e pode ser encontrada em vários locais além de empresas específicas que prestam este servço.

Bom, a idéia para instalar o MySQL no iPhone tradicional, e não o 3G, surgiu da necessidade de utilizar este aparelho durante minhas consultorias. Como trabalho com diversos bancos de dados, faz sentido instalar o MySQL no iPhone para realizar testes, explicar conceitos ou mesmo consultar alguns dados de armazenamento. Além disso, atualmente já existem diversas aplicações portadas para o iPhone que NÃO foram feitas com o SDK. Como explicarei mais abaixo, estas aplicações são baseadas em um compilador desenvolvido por um hacker que permite portar diversas aplicações existentes para o iPhone. Entre estas aplicações podemos instalar aplicativos de desenvolvimento, como Apache, PHP, MySQL e outros. Com base nisso vou começar a explicar o passo a passo para a instalação do MySQL.

Passo 1) Requisitos Básico

Como citado anteriormente, é preciso primeiro desbloquear o iPhone. Além disso, é preciso configurá-lo para acessar à Internet, seja por uma rede Wi-Fi ou por uma Rede 3G. Não explicarei em detalhes este passo, porém hoje em dia desbloquear o iPhone é mais fácil que comprar pão na padaria. Existem, inclusive, empresas e assistências técnicas especializadas neste processo. O link abaixo é um exemplo de empresa que presta este tipo de serviço que, como disse, é moralmente questionável.

http://www.iphonesp.com.br/index.php?lang=pt

No meu cenário eu coloquei o endereço I.P. do iPhone como 10.10.10.152 e indiquei que o seu gateway era 10.10.10.1, um roteador Wi-Fi que fornecia acesso à internet. Caso não saiba como fazer para obter o endereço I.P. do iPhone e configurá-lo, recomendo uma visita ao link abaixo, que é um post de um fórum bem legal:

http://iphoneportugal.com/index.php?topic=2325.0

No meu cenário eu contava com um notebook, rodando o Windows XP, que acessava a mesma rede do iPhone com um I.P. 10.10.10.100 e que pingava normalmente o aparelho.

Passo 2) Instalando o BSD Subsystem, Open SSH e o Terminal

Uma vez que o iPhone já esteja desbloqueado e configurado na rede, é preciso instalar alguns pacotes pelo Installer. O pacotes necessários são o BSD Subsystem, o Open SSH e o Term-vt100. O vídeo abaixo mostra como fazer a instalação destes pacotes a partir do Installer.

Figura 1. iPhone utilizando serviço de terminal Term-vt100

 

Mais informações sobre o BSD Subsystem:

Mais informações sobre o Open SSH:

Mais informações sobre o Term-vt100:

Um exemplo de utilização do Term-vt100 pode ser visto no vídeo abaixo:

Já que configuramos iPhone com o Open SSH, o que precisamos fazer agora é logar neste aparelho com uma ferramenta client de SSH. Além disso, também precisamos de uma ferramenta SCP para poder fazer o envio de arquivos para o filesystem do iPhone. Eu utilizei a ferramenta Putty, para logar via SSH, e a ferramenta WinSCP para logar via SCP e jogar os arquivos.

O Putty pode ser encontrado no endereço abaixo:

Já o WinSCP pode ser encontrado no endereço abaixo:

De posse destas duas ferramentas é preciso logar no aparelho. O primeiro teste que fiz foi com o Putty, que demorou um pouco no primeiro login. Foi preciso fornecer uma senha para o usuário root. Como estava utilizando um iPhone com o firmware 1.1.2, a senha padrão para o usuário root é alpine. Apesar de se parecer muito com o shell de um Unix, a quantidade de comandos é bem limitada. Mas apenas loguei para fazer um teste de acesso.

Em seguida utilizei o WinSCP para abrir uma conexão SCP com o iPhone, passando seu endereço I.P., o login root e a senha alpine. A conexão foi realizada com sucesso e já podia visualizar as pastas do sistema operacional normalmente.

Agora o que precisava fazer era baixar o MySQL, compilado para o iPhone, e jogá-lo em uma pasta. Com certeza essa foi a parte mais difícil, pois são poucas as aplicações que já estão portadas para este aparelho. Procurando na Internet, eu encontrei o site Wickedpsyched, que utilizou o aplicativo Toolchain para compilar várias aplicações de código livre e fornecer versões dos mesmos para o iPhone.

A propósito, este site apresentou uma versão do PostgreSQL para o iPhone também, que não testei. O link para os bancos de dados portados para o iPhone do Wicketpsyched é:

http://www.wickedpsyched.com/iphone/databases. Basta fazer o download dos binários do MySQL contidos arquivo mysql.tgz, localizado no começo da página, e se preparar para colocar o seu conteúdo no iPhone.

Após o download o arquivo mysql.tgz, descompactei os arquivos em uma pasta. Pelo WinSCP, joguei o conteúdo do arquivo descompactado em /var/root/mauro, tomando o cuidado para acertar a permissão dos arquivos e do diretório. A Figura 2 mostra o WinSCP copiando os arquivos do MySQL para o iPhone.

Figura 1. iPhone utilizando serviço de terminal Term-vt100

Figura 2. Copiando os arquivos do MySQL para o iPhone.

Após copiar os arquivos, eu mudei o caminho /var/root/mauro para /var/root/mysql e pelo putty utilizei o comando chmod + /var/root/mysql para conceder a permissão. O MySQL já estava copiado e bastava configurar o serviço.

Passo 4) Configurando e instalando o MySQL
Com o MySQL copiado, foi preciso instalar seus serviços. De acordo com Wichedpsyched, é preciso utilizar o comando mysql_install_db, que se encontrava dentro de /var/root/mysql/bin. A Figura 3 mostra a execução deste comando ainda no Putty, o cliente de SSH utilizado.
Figura 1. iPhone utilizando serviço de terminal Term-vt100

Figura 4. Verificando a execução do processo contendo o daemon do MySQl

Como tudo deu certo até aqui, o próximo passo era instalar o daemon, o serviço de banco de dados que roda em background. Para isso utilizei o comando mysqld_safe, passando como parâmetro o usuário root. O comando completo utilizado foi ./mysqld_safe --user=root --no-defaults &. Porém neste caso tive um problema de permissão de gravação de um arquivo .pid, pois o diretório configurado para o armazenamento deste arquivo não permitia gravação. Editei o arquivo my.conf e coloquei um outro diretório. Rodei o comando mysqld_safe novamente e o daemon rodou com sucesso. Para verificar se tudo estava OK, verifiquei os processos com o comando ps -A | grep my, cujo resultado pode ser visto na Figura 4.

Figura 1. iPhone utilizando serviço de terminal Term-vt100

Figura 4. Verificando a execução do processo contendo o daemon do MySQl

Pronto, neste ponto o MySQL já estava rodando sem problemas.

Passo 5) Testando o MySQL
Agora que o MySQL já estava rodando bastava executar o cliente de acesso do MySQL para se conectar e começar a utilizar. A partir do diretório /var/root/mysql/bin chamei o comando ./mysql mysql e já podia criar bancos de dados, tabelas e outros objetos. Os principais comandos estavam todos lá: SELECT, INSERT, UPDATE e DELETE funcionavam como no MySQL.

Porém os comandos feitos até agora foram enviados pelo Putty. Peguei o aparelho, iniciei o aplicativo Term-vt100, fui para o diretório /var/root/mysql e enviei comandos para o MySQL do iPhone. Sem nenhum problema, apesar de achar que utilizar o teclado virtual depois de um tempo cansa, principalmente para quem está acostumado ao teclado do PC. Infelizmente não consegui bater uma foto do iPhone rodando o MySQL, mas podem ficar tranqüilos que já estou providenciando uma evidência sobre isso.

É isso aí, pessoal. Com esta coluna, o iMasters, mais uma vez, se destacou mostrando como aproveitar os recursos do iPhone para o desenvolvimento, especificamente para um banco de dados. Gostaria apenas de agradecer ao meu irmão (valeu Marcião!) por emprestar o seu iPhone para testes.

Mais alguns links útei

http://www.pure-mac.com/iphone

http://www.wickedpsyched.com/iphone/

Autor : Mauro Pichiliani – é mestre em computação, possui as certificações MCP, MCDBA, MCT e MCTS e atua como consultor de banco de dados com enfoque na área de tunning.