Reset root password no MySQL 5.7.*

Estava muito tempo sem postar, mas hoje eu passei uma dor de cabeça muito grande até resolver este problema, então eu tinha que postar essa solução.

Eu estava com o Ubuntu 14.10 e resolvi atualizar ele para a última versão hoje (17/09/2016), Ubuntu 16.04.

Tudo estava correndo bem, mesmo tendo que reinstalar/reconfigurar algumas bibliotecas/aplicativos.

O último passo da verificação foi tentar rodar meus aplicativos web que usam MySQL. A surpresa inicial foi que o MySQL havia sido desinstalado. Verifiquei se os arquivos de dados, com todos os meus bancos de dados, estavam salvos. Graças a minha sorte tudo estava a salvo.

Primeiramente eu apenas fiz a instalação dos pacotes do MySQL, onde a versão mais nova era a 5.7:

$ sudo apt-get install mysql-server-5.7 mysql-client-5.7

Após finalizar a instalação, eu tentei logar. O problema ocorreu justamente nesse momento, quando eu tentei logar no MySQL:

$ mysql -u root
ERROR 1045: Access denied for user: 'root'@'localhost'

Antes de fazer a atualização do Ubuntu meu MySQL não tinha senha de root. Ela era vazia. Eu apenas fazia mysql -u root e o acesso seguia com sucesso.

Então o que eu deveria fazer? Bem, provavelmente a senha de root foi alterada ou qualquer outro problema que eu não sei o que foi. A solução então era alterar a senha de root. Eu passe mais de 5 horas tentando alterar a senha, lendo vários sites, blogs, jornais, revistas, contato extra-terrestre, …, inclusive o site oficial do MySQL, e tudo repetia as mesmas coisas. Até que uma luz veio e me levou até uma postagem no StackOverflow com um erro não tão igual, mas com a mesma solução.

Todos os sites diziam a mesma coisa, mas eu acabei encontrando o que faltava. Segue abaixo:

1. Primeiro devemos parar o serviço do MySQL:

$ sudo service mysql stop

2. Em seguida iniciamos o MySQL em modo seguro, sem as opções de permissões. Isso vai servir para você alterar a senha. Mas o segredo vem depois:

$ sudo mysqld_safe --skip-grant-tables &

Poderá ocorrer o seguinte erro:

mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Logging to '/var/log/mysql/error.log'.
mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

Caso ocorra, execute o seguinte comando para criar o diretório onde ficará o socket do mysql:

$ sudo mkdir -p /var/run/mysqld
$ sudo chown mysql:mysql /var/run/mysqld

3. Após iniciar o servidor você vai acessar o cliente MySQL com usuário root, sem senha:

$ mysql -u root

4. Agora vamos alterar a senha do usuário root.

Aqui é que está o SEGREDO. No MySQL 5.7 foi alterado algumas coisas no banco de dados de sistema mysql. A tabela user não possui mais a coluna password, o nome agora se chama authentication_string. Então faça a alteração da senha da seguinte maneira:

mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("SuaSenha") where User='root';

Bom, a maioria dos sites paravam aí, o que não resolvia o problema. O que faltava era um pequeno detalhes, devemos alterar o campo plugin setando o mecanismo padrão de verificação do password. Então segue abaixo:

mysql> update user set plugin="mysql_native_password";
mysql> flush privileges;
mysql> quit;

Fieto isso, a senha do root foi alterada e está pronto para ser acessado.

5. Dê um stop no MySQL e depois inicie normalmente o serviço:

$ sudo mysqladmin shutdown # essa foi a forma mais fácil que eu achei para matar o mysqld_safe

Caso não dê certo, você também pode tentar matar o MySQL localizando o id do processo e dando um kill nele:

$ ps -ef | grep mysql
$ sudo kill -9 [id dos processos que você achou no comando anterior] 

Após parar o serviço, inicie ele normalmente:

$ sudo service mysql start

Pronto, agora é só conectar e correr para o abraço:

$ mysql -u root -p

Então era isso galera. Queria apenas registrar este detalhe para ajudar mais pessoas, já que a maioria dos sites possui informações bem antigas.

Qualquer dúvida é só perguntar nos comentários.

Abraço!

Instalando PHPUnit 3.5 com Zend Framework 1.12

O Zend Framework 1.12 funciona apenas com o PHPUnit 3.5, portanto quando você tenta instalar o PHPUnit, ele irá instalar a última versão, sendo ela maior que a 3.5. Com isso, a parte de testes do Zend Framework não funcionará.

Para resolver este problema, precisamos desinstalar a versão do PHPUnit, e todas as suas dependências. Após isso você instalará a versão 3.5 do PHPUnit e as dependências com suas respectivas versões compatíveis com o PHPUnit 3.5:

Continuar lendo

Testando o Amazon Elastic Compute Cloud (EC2)

O Amazon Elastic Compute Cloud (Amazon EC2) é um serviço da web que fornece capacidade computacional redimensionável na nuvem. É projetado para tornar a escalabilidade computacional de nível de web mais fácil para desenvolvedores.

Resolvi fazer um teste usando meu site como cobaia. Hoje (22/12/2011) ele está hospedado na Amazon. Não foi muito complicado configurar, na verdade foi até simples. Apenas criei uma nova instância do EC2 no AWS Management Console usando uma Amazon Machine Images (AMI) da BitNami, que já tem um LAMP (Linux (Ubuntu)+Apache2+MySQL+PHP5.3) totalmente configurado, e criei as zonas do DNS para meu domínio usando o Amazon Router 53.

Continuar lendo

Liberada nova versão do BingoDroid Manager

Terminei praticamente tudo do meu primeiro aplicativo para android: BingoDroid Manager versão 0.8 0.9.

Como falei no post anterior, é um aplicativo para gerenciar várias cartelas de bingo. Ótimo para usar em um bingo de formatura, onde você geralmente vai com dezenas de cartelas.

Se você tem um Android, baixe aí e diz o que achou. É grátis ;).

Em breve estará no Maket.

Relatórios com Zend_PDF

Esses dias estava fazendo um sistema web em PHP pra um empresa e precisei gerar relatórios para serem impressos. Não há coisa melhor que gerar os relatórios em PDF usando Zend_PDF. Muito simples de criar, diagramar e organizar as informações nas páginas do pdf.

$pdf = new Zend_Pdf();

$page = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_A4); //595 x 843
$page->setFont(
  Zend_Pdf_Font::fontWithName(
    Zend_Pdf_Font::FONT_HELVETICA_BOLD
  ), 9);
$page->drawText('MEU PRIMEIRO RELATÓRIO', 30, 800);

$pdf->pages[] = $page;

header("Content-Type: application/pdf;");
echo $pdf->render();

Pronto, você criou seu primeiro PDF usando Zend_PDF.

Um ponto importante é que o eixo de coordenadas (x ; y) inicia no canto inferior esquerdo. Então o ponto (0 ; 0) fica embaixo e o ponto (0 ; 843) fica na parte de cima como na imagem abaixo:

Existe um tutorial muito bom no site da Zend Framework – Guia de Referência do Programador.

Valeu!

Meu primeiro aplicativo para Android

Pra começar colocarei aqui meu primeiro aplicativo para android.

Ainda está em fase beta, então podem ocorrer bugs.

É um aplicativo para gerenciar cartelas de bingo. Fiz um aplicativo parecido, feito em Java ME, em 2004 quando estava terminando o curso de Ciências da Computação, na UESPI. Fiz em uma época onde sempre ocorriam bingos para arrecadação de dinheiro para formatura. A gente ficava com dezenas de cartelas em nossa mesa para marcar. Resolvi então fazer um sistema no celular para gerenciar isso, e eu não precisar sair marcando cartela por cartela.

Como hoje o Java ME praticamente morreu (pelo menos pra mim), resolvi fazer uma versão para Android. Então se você vai pra um bingo, marcar várias cartelas, teste meu aplicativo: BingoDroid Manager. edit: aqui você encontra a última versão!

Em breve estará no Market.

Aguardo os bugs e sugestões.

Um pequeno passo para conquistar o mundo (ou não)

Bem-vindo ao meu novo site.

Eu tinha um site feito em flash que existe desde o Flash 4.0. Ou seja, desde quando o flash começou a ficar popular. De lá pra cá sempre tive vontade de criar um site (sem ser em flash) mas nunca tive tempo.

Hoje chegou esse dia. Vai ser apenas esse sitezinho feito com WordPress mesmo. E olha que eu nem gosto de WordPress, pra mim é ferramenta pra quem tem preguiça (como eu, agora), ou pra quem quer apenas um blog simples, ou quem não conhece nenhuma linguagem de programação para desenvolver seu próprio sistema, mais leve e mais personalizado, contendo apenas o que será necessário para aquele projeto. Resumindo: WordPress é ferramenta para blog, qualquer outra coisa é gambiarra #prontofalei.

Vou colocar aqui algumas coisinhas que eu crio e fica apenas na tela do meu computador e/ou celular.

Aguardem…