sexta-feira, 21 de dezembro de 2012

Permissão para acesso remoto do MySQL

O Mysql por padrão ao ser instalado numa máquina, não está configurado para permitir acesso remoto, somente local, por parte do usuário, então para habilitar seu uso seja de qual for a máquina, faz-se os seguintes procedimentos:

Como root no terminal do linux digite:
nano /etc/mysql/my.cnf

Agora altere a seguinte linha..
bind-address = 127.0.0.1

..para..

bind-address = 0.0.0.0

Agora reinicie o serviço mysql com:
/etc/init.d/mysql restart

Entre no prompt do mysql com:

mysql --user=root --password=suasenha

Então digite o seguinte comando:
GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY 'suasenha';

Esse comando é bem explicativo, ele garante (GRANT) todos (ALL) os privilégios de acesso a todos (*.*) os databases do banco, ao (TO) usuário (‘root’) em todas as máquinas (‘%’) usando a senha do usuário root (IDENTIFIED BY ‘suasenha’). Traduzindo em miúdos, você acessa tudo no banco com o usuário root em qualquer máquina remota.

Obs: Se quiser dar acesso somente a uma maquina específica troque ‘%’ pelo ip da máquina, por exemplo, dar acesso somente a máquina 192.168.0.2, ficaria assim o comando:
GRANT ALL ON *.* TO 'root'@'192.168.0.2' IDENTIFIED BY 'suasenha';

Obs2: Onde estiver escrito suasenha, troque pela senha do usuário root.

Agora pode testar conectar-se ao banco de outra máquina que você terá acesso

MySQL: Erro: "mysqld dead but subsys locked"

Para corrigir o erro relatado no título desta dica, basta seguir os passos: 

Ao iniciar o MySQL

# /etc/init.d/mysqld start 

Não ocorre nenhum erro, porém, quando checamos o status: 

# /etc/init.d/mysqld status 

Nos deparamos com seguinte erro: 
mysqld dead but subsys locked

Para resolvermos este problema, basta executar a linha a seguir: 

# chown -R mysql.mysql /var/run/mysqld 

Com este comando colocamos como dono dos arquivos o usuário "mysql", resolvendo assim nosso problema! 

MySQL - Gerenciamento de memória

Eu tenho trabalhado com o MySQL mas, nas versões para Ubuntu, Centos Debian e versões mais atuais, os nós e nódulos da memória (cache) sempre estão cheios, e o MySQL acaba consumindo muita memória RAM. 

Assim, sempre tive problemas em usar mais de uma base de dados. Em 24 horas, estava tendo que reiniciar o servidor umas 3 vezes, no mínimo, para o MySQL voltar a funcionar. 

Um exemplo que acontecia sempre: de 10 bases de dados, 6 estavam funcionando normalmente, mas 4 simplesmente paravam de gravar os dados. 

A solução: 

# crontab -e 

Adicione: 

# m h   dom mon dow    command
0 * * * * /root/./germem

E crie o script germem

#!/bin/bash
echo 3 > /proc/sys/vm/drop_caches

Obs.: Para o drop_caches, há opções de 1 a 3. Eu escolhi a 3, pois ela limpa os nós e nódulos da memória. 

Feito isso, faz exatamente 7 meses que não reinicio a máquina para o MySQL funcionar.

terça-feira, 18 de dezembro de 2012

Tabelas corrompidas no MySQL

O que fazer quando ocorre o erro "ERROR 145 (HY000): Table 'nome da tabela' is marked as crashed and should be repaired" ? 

Acessar o banco com problemas: 

mysql> use 'nome_do_banco'; 

Testar as tabelas até descobrir qual é a tabela ruim: 

mysql> check table 'nome_da_tabela'; 

Reparar a tabela ruim: 

mysql> repair table 'nome_da_tabela'; 

MySQL: Alterar diretório base de dados

Amigos do VOL, bom dia. Venho com uma dica de como alterar o caminho da base de dados do MySQL. Por exemplo: ter que colocar a base em outro diretório ou partição. 

Diretório padrão: /var/lib/mysql 

# vi /etc/my.cnf 

datadir = [novo_caminho] ex: /mnt/mysql 

Salvar alteração: :wq 

Não se esqueça de dar permissão para o novo diretório do MySQL. 

# chown -R mysql.mysql /mnt/mysql 

Executar o comando para criar nova base de dados: 

# mysql_install_db 

Pronto, agora é só iniciar o MySQL com o comando: 

# mysqld_safe & 

Bom, espero ter ajudado.

Erro 2002 (HY000) ao conectar ao MySQL

Depois de instalar o MySQL, tentei conectar e recebi a seguinte mensagem: 

# mysql -u root -p 

Password: 
Error 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 

Para resolver o problema: 

Logue como root: 

# mysql_install_db
# chown -R mysql.mysql /var/lib/mysql
# mysqld_safe &
# mysqladmin -u root password NOVA_SENHA
# mysql -u root -p
 

Password: 
mysql > 

Pronto! Instalado e pronto para uso! 

Comandos úteis do MySQL

Criando uma senha de root para o MySQL

# mysqladmin -u root password '[nova senha]' 

Visualizando todas as bases de dados via linha de comando: 

# mysqlshow -u usuario -p[senha] 

Criando um usuário para acesso a uma determinada base: 

mysql> GRANT ALL ON base.tabela TO usuario@'%' IDENTIFIED BY 'SENHA'; 

Obs.: Pode-se utilizar o caracter asterisco para atribuir a permissão a todas as bases. 

Recuperando a senha de root do MySQL

Algumas vezes você precisa recuperar sua senha de root do MySQL que você esqueceu ou foi perdida por algum motivo. Os passos para criar outra são os seguintes: 

Páre normalmente o servidor MySQL: 

# /etc/init.d/mysqld stop 

Inicie o MySQL em modo seguro com o comando mysqld_safe e especifique para não ler as tabelas de permissões com todas as senhas do MySQL. Dependendo da versão, o comando pode ser safe_mysqld. 

# mysqld_safe --skip-grant-tables & 

Use o comando mysqladmin para mudar a senha. Neste caso, a senha será "swordfish". 

# mysqladmin -u root flush-privileges password "swordfish" 

Reinicie o MySQL normalmente. 

# /etc/init.d/mysqld restart 

O usuário root agora tem uma nova senha e você já pode voltar a administrar seu banco de dados.

Exportando dados do PostgreSQL para HTML

Para quem utiliza o console do PostgreSQL no Linux, existe uma dica bem interessante:

O comando "\H" altera a saída padrão das consultas para HTML. Logo, você recebe como saída um documento contendo os dados de sua consulta.

1. Edite um arquivo qualquer (sql.sql), contendo o seguinte conteúdo:
\H
SELECT * FROM nome_table;

2. Digite no shell: 

$ psql -f sql.sql nome_bd > /tmp/saida_em_html.html 

E o arquivo saida_em_html.html será criado contendo a consulta realizada em formato HTML, podendo também utilizar CSS neste arquivo, melhorando bastante seu aspecto visual. 

segunda-feira, 17 de dezembro de 2012

Alterar chave de instalação do SQL2008R2

Sempre que desejamos conhecer um novo software, instalamos a versão de demonstração ( trial ). Em determinado tempo essa versão de demonstração expira e o software é bloqueado ou tem suas funções limitadas.

No caso abaixo tenho uma versão do Microsoft SQL Server 2008 R2 Trial que foi bloqueada.
a1
Após comprar do produto, temos em mãos a chave de instalação ( Product Key ou Serial Number ) que libera novamente o software.

Como instalar a nova chave?
1. Execute novamente o setup.exe
2. No SQL Server Installation Center, selecione Maintenance, depois Edition Upgrade
a2
3. Clique Next duas vezes, então informe a nova chave
a3
4. Continue com Next e Install, aguarde alguns minutos até concluir.