Use o arquivo de configuração para se conectar mais fácil ao MySQL

O arquivo de configuração do MySQL pode armazenar os parâmetros que você sempre usa para conectar-se ao servidor de banco de dados, o que permite executar a tarefa com uma linha de comando mais enxuta, mais simples.
O arquivo de configuração do MySQL tem o nomemy.cnf. No Linux (Ubuntu), ele fica no diretório /etc/mysql/my.cnf — mas recomendo criar um no seu diretório pessoal: ~/my.cnf, onde você pode ter mais liberdade para editar suas configurações.
No Windows, o arquivo é C:\my.cnf — mas você pode usar também o C:\SYSTEM\my.ini ou o my.cnf, no diretório de dados do servidor.
Captura de tela do arquivo de configuração do MySQL
Os exemplos usados, neste texto, refletem uma instalação típica do MySQL no Ubuntu 14.04 LTS — mas podem ser adaptados a outras distribuições ou sistemas operacionais sem muito esforço.

O arquivo de configuração do MySQL

A melhor maneira de conhecer os arquivos de configuração é in loco e é isto que vamos fazer aqui.
As linhas que começam com # ou com ; (ponto-e-vírgula) são linhas de comentários e não têm efeito algum na execução.

# opções gerais de conexão pro cliente
[client]
host=localhost
user=mysql_user
password=mysql_user_pass
# opções específicas da execução do mysql
[mysql]
no-auto-rehash
# opções específicas do modo interativo do mysql
pager=/usr/bin/less

Entenda o arquivo de configuração do mysql

O arquivo de configuração é composto de várias linhas, em que as opções e parâmetros de execução da conexão ao servidor MySQL são definidas.
As linhas são organizadas em grupos — cada qual contendo configurações concernentes a um detalhe da conexão.
Conheça outros fatos sobre o arquivo de configurações:

  • A primeira linha de cada grupo de opções de configurações contém o nome do grupo dentro de colchetes — como é possível observar no exemplo, onde há 2 grupos: [client] e [mysql].
  • Dentro de cada grupo, as opções se organizam, uma em cada linha. Algumas aceitam parâmetros adicionais, outras não.
    Exemplo: a opção no-auto-rehash, do grupo [mysql], dispensa qualquer parâmetro adicional.
  • Certas opções podem ficar em branco, para deixar o arquivo mais enxuto.
    Por exemplo, a opção host, pode ficar em branco caso você sempre se conecte ao localhost.
  • A linha referente ao username também pode ser omitida, no caso de você usar o mesmo login do Linux no MySQL.
  • Embora você possa abreviar opções na linha de comando, apenas as formas completas devem ser usadas dentro do arquivo de configurações.
    Por exemplo, na linha de comando, é possível usar ambas as variações, que seguem: -h localhost e --host=localhost.
    Dentro do arquivo de configurações, somente a forma host=localhost, como exemplo, é aceitável.
  • Nem todas as opções são referentes à conexão. A opção pager serve para informar qual programa de paginação deve ser usado dentro do modo interativo do MySQL, quando você estiver listando dados.
  • As opções de conexão especificadas no grupo [mysql], dentro do arquivo de configurações, são compartilhadas por outros clientes, como o mysqldump e o mysqladmin. Ou seja, o arquivo facilita mais do que você imagina…
  • O arquivo comporta a possibilidade de adicionar grupos específicos para outros programas clientes MySQL, como os já citados, mysqldump e mysqladmin. Para isto, crie novos grupos com os respectivos nomes dos programas.
  • Para inserir um comentário, comece a linha com um # ou ;.
  • Se você inserir opções duplicadas ou redundantes no arquivo, a última é que será levada em consideração.
  • Os arquivos de configuração precisam estar em formato de texto puro (atenção usuários Windows). Portanto, evite usar processadores de texto para editar ou criá-los.
  • Opções e parâmetros referentes a caminhos para outros arquivos ou programas, devem usar o caractere separador / , mesmo no Windows.

No terminal Linux ou em uma conexão SSH, é possível usar o seguinte comando para determinar quais opções estão valendo para execução da conexão ao MySQL:

mysql --print-defaults

Você também pode usar o aplicativo my_print_defaults para obter informações sobre a configuração vigente.
O exemplo abaixo permite ver a configuração padrão ativa (em uma máquina Ubuntu), dos grupos [client] e [mysql]:

my_print_defaults --defaults-file=/etc/mysql/my.cnf client mysql
--port=3306
--socket=/var/run/mysqld/mysqld.sock

Por fim, para criar uma cópia do arquivo padrão do sistema em seu diretório pessoal, use o seguinte comando:

cp /etc/mysql/my.cnf ~/my.cnf

Faça as alterações desejadas, nesta versão, se quiser. Se algo der errado, basta copiar novamente o arquivo.
Se você estiver tendo dificuldades para encontrar o arquivo de opções do MySQL, use o comando find:

sudo find / -iname my.cnf | grep my.cnf

Como esconder o seu arquivo de configuração dos curiosos

É natural que você queira ser discreto com informações como o seu nome de usuário e sua senha.
No Linux, há um método razoavelmente eficaz, que consiste em alterar as permissões do arquivo, com o comando CHMOD:
Entre no diretório em que se encontra o arquivo de configuração do MySQL e digite o seguinte comando:

chmod 600 my.cnf

Com este comando, o arquivo será passível de leitura apenas por você.

MySQL: ferramentas de monitoramento

A comunidade do MySQL está bem servida de ferramentas de monitoramento de seus bancos de dados.
Neste texto, vou apresentar 4 delas, para monitorar o andamento das atividades no seu servidor MySQL — elas podem mostrar dados diversos, tais como o uptime, carga e performance do servidor no Linux.
O uptime, no MySQL tal como no Linux, se refere ao tempo em que o servidor está rodando ininterruptamente, desde a ultima vez em que foi ligado ou reiniciado.
Com as ferramentas, que seguem, é possível obter informações sobre o funcionamento do servidor do banco de dados — quantas queries por segundo estão sendo executadas, quantas threads, se há requisições lentas, entre outros dados estatísticos.

Mytop

Feito pra rodar no console, tal como o seu (quase) homônimo top, escrito em Perl, por Jereme Zawodny, o mytop roda no terminal e exibe as estatísticas do seu servidor MySQL — total de consultas, requisições lentas, uptime, carga etc. em formato tabular.

mysql mytop monitoramento.
Clique para ampliar.

O programa ajuda administradores a otimizar e melhorar a performance do MySQL na manipulação de grandes requisições e a reduzir a carga do servidor.

Mtop

O mtop é uma ferramenta similar ao mytop — também foi escrito em Perl e apresenta os dados de forma tabular similar ao top e ao mytop.
O aplicativo monitora as queries MySQL que estejam demorando mais a ser concluídas e as termina/interrompe após um determinado tempo.
Adicionalmente, permite acompanhar problemas relacionados à baixa performance, informações de configuração, estatísticas do funcionamento de servidor.
A última versão do mtop, para download, é de 2004 e, portanto, não se trata de uma ferramenta atualizada — e pode não funcionar na sua versão do MySQL.

Innotop

O aplicativo innotop é uma ferramenta de linha de comando em tempo real, usada para investigar e monitorar servidores MySQL locais ou remotos, rodando mecanismos de armazenamento (storage engines) InnoDB.
A ferramenta tem vários recursos e inclui opções e modos de operação que ajudam a monitorar diversos aspectos da performance do MySQL e ajuda a encontrar, se houver, problemas no servidor.
O aplicativo não tem pacotes nos repositórios oficiais na maioria das distribuições Linux.
No Red Hat, é preciso ativar o repositório (de terceiros) epel e, em seguida, instalar com o comando yum.

Mysqladmin

De todas as ferramentas, esta é a única que vem instalada por padrão, junto com todos os outros aplicativos do MySQL.
Pronta para uso imediato após a instalação, o mysqladmin realiza uma incontável quantidade de operações — tais como o monitoramento de processos, verificação das configurações do servidor, recarga de privilégios, visualização do status corrente, ajuste e mudança da senha root do MySQL, criação e remoção de bancos de dados etc.
Você pode verificar o status da sua instalação MySQL com o seguinte comando do mysqladmin:

mysqladmin -u root -p version

que deve retornar algo semelhante a isto;

Enter password: 
mysqladmin  Ver 8.42 Distrib 5.5.35, for debian-linux-gnu on i686
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Server version		5.5.35-0ubuntu0.13.10.2
Protocol version	10
Connection		Localhost via UNIX socket
UNIX socket		/var/run/mysqld/mysqld.sock
Uptime:			2277 days 1 hour 27 min 47 sec

Threads: 3  Questions: 3204  Slow queries: 0  Opens: 235  Flush tables: 1  Open tables: 57  Queries per second avg: 0.000

LEIA MAIS

Conclusão

Das ferramentas descritas neste texto, para monitoramento de servidores MySQL, se destacam seguramente, mytop e innotop — sendo que a primeira é de facílima instalação em distribuições derivadas do Debian (Ubuntu, por exemplo) e a segunda em distribuições baseadas no Red Hat (CentOS, Fedora etc).
Se você precisa fazer monitoramento de transações, o innotop é a opção para você.
O mtop fica no artigo na posição do “só pra constar”. Ainda que se tratasse de um software que tivesse atingido o status de perfeito, o MySQL passou por diversas mudanças nos últimos 10 anos e ele não as acompanhou.
Se você não tem privilégios para instalar novos aplicativos no servidor, o mysqladmin é a opção para fazer o trabalho, uma vez que ele já vem no pacote do MySQL.

Como criar novo usuário no MySQL

Neste post, vou mostrar algumas formas de criar um novo usuário no servidor de banco de dados MySQL e como acessar o sistema através dele.
É interessante conhecer e saber usar o sofisticado sistema de gestão de usuários, do MySQL, que controla quem pode acessar e de onde pode fazê-lo.
Uma vez que é uma atividade administrativa, de superusuário, você precisa ter acesso ao root para realizar os procedimentos descritos aqui e usar o comando GRANT do SQL para ajustar privilégios dos usuários criados – e, só pra lembrar, quando falamos em root no MySQL, não estamos nos referindo ao root no Linux. Cada um no seu quadrado.

Como atribuir uma senha à sua conta administrativa

Se foi você quem instalou o sistema, provavelmente já configurou detalhes como a senha do root.
Para atribuir uma senha nova (pela primeira vez) à sua conta root, use o mysqladmin, no terminal:

mysqladmin -u root password NOVASENHA

Se for o caso de alterar uma senha preexistente, use o comando como segue – por exemplo, vamos trocar a senha de uruguay para brasil:

mysqladmin -u root -puruguay password brasil

Sim. A senha deve ficar “grudada” à opção -p.

LEIA MAIS

Como criar uma conta de usuário no MySQL

No tópico anterior, nos certificamos de ter condições de entrar na conta administrativa do MySQL, root. Agora vamos entrar, no banco de dados, para iniciar o procedimento de criar contas para outros usuários.
Entre no MySQL, usando a senha root, já cadastrada:

mysql -u root -p

ou

mysql -u root -h localhost -p

Crie um novo banco de dados MySQL chamado exemplo:

CREATE DATABASE exemplo;

Entre no banco de dados, com o comando USE:

USE exemplo;

Agora crie, com o comando GRANT um usuário chamado papaleguas, com todos os privilégios sobre o banco de dados exemplo — troque a senha minhasenha pela que mais lhe convier:

GRANT ALL ON exemplo.* TO papaleguas@localhost IDENTIFIED BY 'minhasenha';

Como conectar ao banco de dados MySQL usando a minha nova conta de usuário

Para entrar no MySQL, usando uma conta de usuário comum, como a que foi criada no tópico anterior, já fazendo uso do banco de dados exemplo, use o seguinte procedimento:
Se estiver dentro do MySQL, use o comando QUIT, para sair:

QUIT;

Em seguida, na linha de comando…

mysql -u papaleguas -p exemplo

ou

mysql -u papaleguas -h localhost -p exemplo

onde,

  • -u papaleguas — é o nome do usuário MySQL;
  • -h localhost — é o nome do servidor local, onde se encontra instalado o MySQL – você deve sempre alterar estas variáveis para atender as suas condições;
  • -p — quando esta opção é fornecida sem a senha (grudadinha), o sistema a pedirá antes de entrar;
  • exemplo — ao fornecer o nome de um banco de dados, antes de entrar, o sistema já se conecta a ele após a autenticação. Isto é opcional. Você pode escolher o banco de dados que deseja usar, depois de entrar no MySQL

Espero ter conseguido sanar suas dúvidas com esta explicação.
Quer ler mais sobre MySQL? Então, use o sistema de busca do site!

MySQL – 17 exemplos práticos de aplicação do comando mysqladmin

O mysqladmin é uma ferramenta que vem junto com a instalação do servidor MySQL e é usada por administradores de bancos de dados para realizar algumas operações básicas, tais como, configurar a conta do administrador (root), mudar sua senha, monitorar processos, lidar com privilégios, verificar as condições do servidor, criar rapidamente novos bancos de dados etc — tudo na linha de comando.
Aqui vamos ver alguns dos comandos mysqladmin e situações em que são úteis, através de exemplos.

LEIA MAIS
Como atribuir uma senha ao administrador MySQL – (MySQL root)
mysqladmin -u root password minhanovasenha
Como alterar a senha, já atribuída, do administrador

Um administrador responsável sabe que senhas precisam ser alteradas periodicamente. O mysqladmin, permite fazer isto rapidamente, diretamente no terminal. No exemplo que segue, tenha em mente que senhaantiga e senhanova são o que seus nomes dizem e você deve usar os seus próprios valores. Use as aspas, onde tiver que usar:

mysqladmin -u root -psenhaantiga password 'senhanova'
Como verificar se o servidor está em execução

A ideia é determinar se o servidor está “vivo”. A frase «mysqld is alive» responde a esta questão. Use o seguinte comando:

mysqladmin -u root -p ping

Mysqld is alive - terminal

Como determinar o status do seu servidor MySQL

Vocẽ já sabe que ele “está vivo”. Agora, deseja obter mais informações sobre como ele está funcionando, entre as quais, o tempo em que ele está ‘no ar’, a quantidade de tabelas abertas por usuários, o tempo de resposta médio das queries etc.

mysqladmin -u root -pminhasenha status

mysqld status

Informação Descrição
Uptime Tempo (em segundos) em que o servidor está funcionando,
desde a última vez em que foi carregado.
Threads O número total de clientes conectados ao servidor.
Questions O número total de requisições a que o servidor atendeu
desde que foi carregado.
Slow queries Total de queries cujo tempo de execução ultrapassou o valor
definido pela variável long_query_time (veja o arquivo de
configuração).
Opens Número total de tabelas abertas pelo servidor.
Flush tables A quantidade de vezes em que tabela foi atualizada.
Open tables O número total de tabelas abertas no momento.
Como verificar o status de todas as variáveis e valores do servidor MySQL

O comando,

mysqladmin -u root -p extended-status

dará um resultado parecido com este:
mysqladmin mysql extended status

Como ver todas as variáveis e valores do servidor MySQL
mysqladmin -u root -p variables
Como saber a versão instalada do MySQL

O comando, a seguir, mostra aversão do seu servidor MySQL, entre outros detalhes:

mysqladmin -u root -p version

O resultado vai ser parecido com este:
Como ver a versão do mysql
Fique atento para a linha Server version. No caso, aqui, trata-se da versão 5.5.32-0ubuntu0.13.04.1.

Como ver todos os processos em execução no servidor MySQL

Este comando mostrará uma (possivelmente) longa relação de processos em execução no seu sistema.

mysqladmin -u root -p processlist
Como criar um banco de dados no servidor MySQL

Esta tarefa é relativamente simples e, com o mysqladmin, pode ser realizada com uma única linha de comando. Ou seja, você não precisa “entrar” no MySQL para criar um banco de dados.
No exemplo abaixo, vamos criar um banco de dados chamado o_condado_db (eu sei, estou exagerando na leitura de Tolkien); depois de criado o banco, vamos entrar no MySQL e vamos pedir para mostrar os bancos de dados existentes. Acompanhe:

mysqladmin -u root -p create o_condado_db
mysql -u root -p
show databases

O resultado do comando show databases, executado dentro do cliente MySQL, deve ser parecido com o que segue:
mysql show databases
Para sair do MySQL, rode os comandos exit ou quit.

Como excluir um banco de dados

Vamos aprender a usar o drop para remover um banco de dados já criado:

mysqladmin -u root -p drop o_condado_db

O sistema pedirá para que a ação seja confirmada, antes de executar a remoção.

Como recarregar e atualizar os privilégios MySQL

Aqui temos basicamente 2 comandos: reload e refresh. O primeiro pede ao servidor que recarregue as tabelas dos privilégios; o segundo atualiza todas as tabelas e reabre os arquivos de log. Veja como fazer:

mysqladmin -u root -psuasenha reload
mysqladmin -u root -psuasenha refresh
Como iniciar e desligar o servidor MySQL de maneira segura

Normalmente, o servidor MySQL já “sobe” junto com o sistema. Ou seja, não precisa ser iniciado. Mas, no caso de você precisar, use o seguinte comando para dar início à sua execução:

/etc/init.d/mysql start

Para desligar:

/etc/init.d/mysql stop

Tenha em mente que há variações na maneira de executar este comando entre as distros. Em algumas, o comando mysql vai estar em /etc/rc.d/init.d/
Enfim, você pode desligar o servidor MySQL da seguinte forma também:

mysqladmin -u root -p shutdown
Como terminar um processo que esteja dormindo/hibernando (sleeping) no cliente MySQL Client

Você vai precisar saber o ID do processo a ser terminado, para fazer isto. Portanto, vai precisar executar um comando que liste os processos em execução no seu servidor. De posse do ID, basta informá-lo ao comando de interrupção de processos. Veja como:

mysqladmin -u root -p processlist

O MySQL vai te devolver uma lista. Localize a ID do processo que você deseja terminar, na primeira coluna. Para interrompê-lo, use o seguinte comando (substituindo a variável num_processo pelo número do processo que você deseja terminar):

mysqladmin -u root kill num_processo

Feito isto, peça novamente a lista de processos para ver se tudo deu certo.
É possível apagar vários processo com um só comando. Informe todas as IDs de processos que você deseja terminar, separadas por vírgulas:

mysqladmin -u root kill num_processo1, num_processo2, num_processo3

Fácil, né?

Como organizar, fazer a faxina, com o mysqladmin e flush

A instrução flush tem uma série de variantes que limpam, recarregam, atualizam os caches internos e as tabelas. Veja quais são e o que fazem:

Comando Descrição
flush-hosts Limpa todas as informações relativas ao host do host cache.
flush-tables Atualiza todas as tabelas.
flush-threads Atualiza o cache das threads.
flush-logs Atualiza todas as informações nos logs.
flush-privileges Recarrega as tabelas de privilégios.
flush-status Limpa as variáveis de status do sistema.

Como usar:

mysqladmin -u root -p flush-hosts
mysqladmin -u root -p flush-tables
mysqladmin -u root -p flush-threads
mysqladmin -u root -p flush-logs
mysqladmin -u root -p flush-privileges
mysqladmin -u root -p flush-status
Como executar múltiplos comandos em uma só linha mysqladmin

Sim. Você pode executar várias tarefas com apenas uma linha de comando mysqladmin. Veja como criar 3 bancos de dados (databases) em uma tacada só:

mysqladmin -u root -p create primeiro create segundo create terceiro

Dê a sua senha e entre no cliente MySQL, para ver o trabalho feito:

mysql -u root -p

Dentro do MySQL, liste as tabelas:

show databases

mysql show databases comando
Agora, vamos excluir os bancos de dados com o mysqladmin. Portanto digite exit;, para sair do MySQL.
Da linha de comando, do shell, exclua os bancos com drop:

mysqladmin -u root -p drop primeiro drop segundo drop terceiro
Como se conectar a um servidor remoto

Vamos usar o seu próprio servidor MySQL, aqui, para exemplificar. Muita gente se conecta a um servidor remoto MySQL via SSH.
Com o mysqladmin, você pode se conectar remotamente e executar um comando (ou vários) e voltar pro seu terminal:

mysqladmin -h 127.0.0.1 -u root -p version

mysqladmin conexão remota

Como obter ajuda para o mysqladmin

Enfim, vamos ver como obter ajuda para usar o mysqladmin. Use o manual do sistema:

man mysqladmin

ou a ajuda do próprio comando:

mysqladmin -?

Divirta-se!

LEIA MAIS: