Bancos de Dados

Bancos de Dados

MySQL

MySQL

Criando um acesso remoto ao MySQL

Por padrão, os bancos de dados MySQL são acessados sempre localmente (localhost).

Um exemplo de acesso local é quando você tem um site que faz uso de determinado banco, e ambos (site e banco), estão hospedados no mesmo servidor da Webhost (situação padrão).

Em algumas circunstâncias, pode ser necessário acessar um banco externamente (acesso remoto). Isso geralmente ocorre quando se tem o banco em um lugar, e o site em outro. Por exemplo: você tem seu banco de dados na Webhost e o site que usa este banco encontra-se hospedado em outro local (outro servidor). Neste caso, é necessário portanto, que este site (hospedado em outro servidor) possa acessar este banco (hospedado na Webhost) remotamente.

Outra situação, é quando você deseja usar uma ferramenta de administração externa para gerenciar seu banco, como por exemplo, programas tipo o MySQLFront.

Seja qual for a necessidade, para ambos os casos, é então necessário configurar uma conexão remota ao MySQL.

Veja como fazer isso:

1) Acesse o seu cPanel.

2) Clique no ícone do MySQL Remoto.

3) Lá dentro, coloque o símbolo % no campo Host, e em seguida, clique no botão Add Host:

Assim que tiver feito isso, você terá ativado o acesso remoto ao MySQL de sua conta e o cPanel exibirá a mensagem Host Added - Added Host % to the access list. Então, clique o link Go Back para retornar e conferir se o acesso remoto foi adicionado com sucesso, verificando a existência do símbolo % na seção Access Hosts (logo acima de localhost):

Estando tudo certo, você já poderá agora acessar seu MySQL remotamente.

O endereço do host para uso remoto, será o domínio principal de sua conta sem o http:// e sem o www (exemplo: seudominio.com).

Criando um banco de dados em sua conta

A forma mais simples de adicionar um banco de dados em sua conta é usando o MySQL Wizard (ou Guia de MySQL, dependendo do idioma do seu painel de controle cPanel).

Para fazer isso, entre em seu cPanel e depois entre no Guia:


Guia do MySQL


Dentro do Guia, invente um nome e crie seu banco de dados:


Nomeie o banco de dados

1) Note que nesse espaço irá aparecer o seu login do cPanel.
2) Invente um nome SEM espaços em branco.


Depois, crie um usuário para seu banco de dados:


Crie o usuário do banco de dados

3) Relembrando: nesse espaço irá aparecer o seu login do cPanel.
4) O nome deve ter entre 1 e 7 caracteres, SEM espaços em branco.
5) Use uma SENHA FORTE para o seu usuário


IMPORTANTE!!!

SENHAS FORTES são senhas difíceis de descobrir ou adivinhar. Normalmente, são combinações de letras maiúsculas e minúsculas com números (por exemplo, "Gv5f2AX867", "R7a2MBpsn8", "76934Xz4Ec", etc). Algumas pessoas também incluem símbolos (@, #, $, etc) e sinais de pontuação.

Alguns exemplos de senhas fracas (também chamadas de senhas óbvias): o próprio nome ou sobrenome da pessoa, datas, números de telefones, ou combinações envolvendo o ano e sequências numéricas (por exemplo, "nome123", "nome2009", etc). Esse tipo de senhas JAMAIS deve ser usado, porque são senhas óbvias, simples de serem descobertas.


O próximo passo é dar, ao usuário, autorização para acesso ao banco de dados:


Configure as permissões do usuário

6) Se não tiver certeza de quais permissões deve dar, dê todas elas.


Pronto! Seu banco de dados e o usuário dele estão prontos para serem usados!


Pronto, terminado!

7) Lembre-se agora: os nomes tanto do banco de dados quanto do usuário criado para ele são formados pelo seu login do cPanel + "_" + o nome que você deu. Por exemplo, se seu usuário do cPanel fosse minhaconta, o nome desse banco de dados e do seu usuário seriam "minhaconta_exemplo".


Para usar seu banco de dados em seus scripts e sistemas, basta usar os dados fornecidos nos passos acima. O host do MySQL, para scripts ou sistemas instalados dentro de sua conta de hospedagem, é a palavra "localhost".

Por outro lado, caso você vá usar/acessar esse banco de dados a partir de um script em outro provedor, ou em seu computador, CLIQUE AQUI para ver esta página do Manual, explicando como se faz acesso remoto ao MySQL.

Criando um usuário para um banco de dados

Para criar um usuário para acesso a um determinado banco de dados, siga os seguintes passos:

1) Acesse seu cPanel

2) Na página inicial do cPanel, vá na parte Databases e clique no ícone MySQL Databases:

DB

3) Uma vez dentro da página MySQL Databases, selecione o usuário desejado (que você já deverá ter criado anteriormente) no menu User, e o banco desejado no menu Database (o banco também já deverá existir previamente) e clique no botão Add:

BD

4) Na página seguinte, você poderá determinar quais os privilégios que o usuário em questão poderá ter sobre o banco ao qual foi atrelado.

Se quiser dar ao usuário todos os privilégios, marque a opção ALL PRIVILEGES, conforme ilustra a imagem abaixo.

Caso contrário, vá selecionando os privilégios desejados um a um.

BD

Uma vez que tenha concluído a atribuição dos privilégios, clique no botão Make Changes para salvar.

Estando tudo correto, o cPanel deverá então, exibir uma mensagem, informando que o usuário foi adicionado com sucesso ao banco.

Basta apenas clicar no link Go Back para retornar:

BD

5) Resta agora conferir se, na parte Current Databases, tanto o banco quanto o usuário, estão aparecendo um ao lado do outro, conforme ilustra o exemplo abaixo:

BD

Em caso afirmativo, significa que a operação foi bem sucedida.

Fazendo backup de banco MySQL pelo cPanel

1) Acesse o seu cPanel.

2) Clique no ícone do Gerenciador de Backup.

3) Dentro do Gerenciador de Backup, na seção Download de Backup de Banco de Dados MySQL, é exibida uma listagem com a relação de todos os bancos de dados que existem na sua conta.

Para fazer o backup de um determinado banco, basta apenas clicar sobre o seu nome, e seu navegador se encarregará de fazer o download para o seu computador.

NOTA: o cPanel gera sempre um arquivo compactado no formato gzip (arquivo com extensão .gz).
Você deverá descompactá-lo com um programa específico para esta finalidade (exemplo: Winzip, WinRar, etc) a fim de poder extrair dele, o seu arquivo de backup.

Observação: no exemplo abaixo, destacamos o banco flex1 apenas a título de ilustração.

LOAD DATA LOCAL INFILE

Acesse sua conta por SSH para poder executar os comandos necessários.

(1) Entre dentro da pasta onde está localizado o arquivo que deverá ser importado para dentro de sua tabela:

cd /home/LOGIN-DO-CPANEL

(2) Acesse o prompt de seu banco de dados MySQL:

mysql -u USUARIO-DO-BANCO -p"SENHA-DO-USUARIO-DO-BANCO" NOME-DO-BANCO

(3) Execute o comando LOAD DATA LOCAL INFILE:

LOAD DATA LOCAL INFILE "NOME-DO-ARQUIVO" INTO TABLE NOME-DA-TABELA;

(4) E por fim, digite o comando para sair do prompt do MySQL:

\q

mysql

Na imagem de exemplo acima (a tela de uma conexão SSH), estamos usando um banco chamado tcat6013_teste, um usuário chamado tcat6013_teste, uma tabela chamada tbTeste e um arquivo de importação chamado load_data_local_infile.txt (localizado dentro da pasta /home/tcat6013).

Reparar tabelas de bancos MySQL

Para reparar as tabelas de um banco MySQL, acesse este banco pelo phpMyAdmin e, no final da tela, clique no link Check All (note que, neste momento, todos os "quadradinhos" ao lado de cada tabela, serão selecionados) e, em seguida, selecione no menu a direita, a opção Repair table:

Reparando tabelas de bancos MySQL

Agora basta aguardar a operação ser concluída (o tempo varia de acordo com o tamanho do banco).

Script para backup de banco de dados MySQL

Script para backup de banco de dados MySQL

AttachmentSize
bkp_mysql.sh389 bytes

String de conexão Java/JSP

Abaixo segue exemplo de string de conexão JDBC

jdbc:mysql://localhost:3306/BANCO?autoReconnect=true

Triggers no MySQL

Criando triggers no MySQL

Este tutorial ensina a como criar triggers no MySQL e a como verificar depois, a sua existência.


ATENÇÃO - Ao seguir os procedimentos deste tutorial, faça as devidas substituições:

  • LOGIN = pelo seu usuário principal do cPanel/FTP
  • SENHA = pelo senha do seu usuário principal do cPanel/FTP
  • BANCO = pelo nome completo do banco de dados a ser criado durante a etapa #2 deste tutorial

OBSERVAÇÃO - tudo que está dentro do espaço negro, são comandos shell, que devem ser dados via SSH.


1) Acesse seu cPanel.

2) Crie um banco de dados de teste e um usuário para ele, com todos os privilégios atribuídos.

3) Acesse o phpMyAdmin de seu cPanel.

4) No phpMyadmin, acesse o banco de dados recém-criado clicando sobre seu nome, no menu a esquerda, e no lado direito da tela, clique na aba "SQL":

-

5) Copie a instrução SQL abaixo:

CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b4 INT DEFAULT 0
);

 

delimiter |

CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;
|

delimiter ;

INSERT INTO test3 (a3) VALUES
(NULL), (NULL), (NULL), (NULL), (NULL),
(NULL), (NULL), (NULL), (NULL), (NULL);

INSERT INTO test4 (a4) VALUES
(0), (0), (0), (0), (0), (0), (0), (0), (0), (0);

INSERT INTO test1 VALUES
(1), (3), (1), (7), (1), (8), (4), (4);

E cole dentro do campo pertinente (destacado em amarelo na imagem abaixo).

Na sequência, clique no botão "Go".

-

O resultado, se bem sucedido, mostrará a mensagem "Your SQL query has been executed successfuly":

-

Pronto, você criou tabelas e triggers em seu banco de dados!

Confirmando a existência de triggers no banco de dados

1) Acesse sua conta por SSH.

2) Conecte-se ao console do MySQL, com o seguinte o comando:

mysql -u LOGIN -p"SENHA"

2.1) Selecione o banco criado neste tutorial:

use BANCO

2.2) Agora, digite o comando para exibir os triggers existentes no banco:

show triggers;

2.3) Para sair do prompt do MySQL, digite o comando:

\q

Veja abaixo, um exemplo real, dos comandos explicados acima, executados no console do MySQL:

-

PostgreSQL

PostgreSQL

Alterar o encoding de um banco PostgreSQL

Não é possível alterar o encoding de um banco PostgreSQL já existente.

O encoding somente pode ser definido no momento em que o banco está sendo criado.

Também não é possível definir o encoding através do cPanel ou do phpPgAdmin, pois os mesmos não oferecem esta opção.

Portanto, para se ter bancos com encodings específicos, é necessário solicitar sua criação ao nosso Atendimento.

Assim sendo, por favor, entre em contato conosco e forneça:

1) O nome do banco em questão (deverá ser um banco novo e VAZIO!).

2) O encoding desejado para o banco.

Corrigindo permissões de um banco

Muitas vezes, um banco de dados PostgreSQL do cPanel, perde as permissões relacionadas ao owner (dono) do banco, ficando a maioria delas, atribuída ao usuário "postgres", ao invés do usuário do cPanel ou do usuário criado especificamente para aquele banco.

Para corrigir isso, proceda da seguinte forma:

1) Faça um backup (dump) do banco em questão.

2) Duplique este dump (por segurança).

3) Abra a cópia duplicada com um um editor de texto puro (como o Bloco de Notas do Windows) e substitua todas as ocorrências da palavra "postgres" (sem as aspas) pelo seu login do cPanel.

IMPORTANTE: marque no programa utilizado para esta finalidade as opções pertinentes para que sejam diferenciadas as letras maiúsculas e minúsculas e para que as substituições ocorram apenas em palavras individuais.

4) Feitas as devidas alterações salve o dump.

5) Crie um novo banco (de teste) em seu cPanel (sem nenhum usuário designado) e importe para ele este dump alterado.

6) Teste este banco e se estiver tudo OK, você poderá então deletar o banco original (bem como o de testes também) para poder recriá-lo vazio (isso será necessário caso queira continuar usando o mesmo NOME do banco original em suas aplicações). Caso recrie o banco original, importe então para ele o dump já testado e o banco estará funcional novamente, com as permissões corrigidas.

ERROR: language "plpgsql" does not exist

Se ao tentar criar uma função com PLPGSQL se deparar com o seguinte erro:

ERROR: language "plpgsql" does not exist

Entre em contato com o Atendimento solicitando a instalação da linguagem PL/pgSQL em seu banco de dados PostgreSQL (não esqueça de informar o nome do banco ao fazer a solicitação).

Fazendo backup de banco de dados PostgreSQL

O cPanel não dispõe, por padrão, de uma ferramenta para backup de bancos de dados PostgreSQL. Entretanto, você pode fazer seus backups de uma forma bem simples, seguindo as instruções abaixo:

1) No Bloco de Notas, crie um arquivo chamado:

.pgpass

Examente assim mesmo, com um pontinho na frente do nome.

Nota: se não conseguir criar um arquivo com esse nome, crie algo do tipo "x.pgpass" e siga adiante com as instruções.

2) Dentro desse arquivo, ponha uma linha assim:

localhost:5432:BANCO:LOGINCPANEL:SENHACPANEL

Repare com atenção que, no exemplo acima, há alguns dados de sua conta que você deve fornecer, que são:

LOGINCPANEL - seu login do cPanel

SENHACPANEL - sua senha do cPanel

BANCO - o nome do banco de dados cujo backup você quer fazer

Envie seu arquivo para sua conta, por FTP, e coloque na raiz, ou seja, FORA da pasta "public_html".

Nota: se você teve que usar no arquivo o nome "x.pgpass", mude para apenas ".pgpass" logo depois que já tiver enviado. Uma vez que ele esteja dentro do seu FTP, você conseguirá usar esse nome.

3) Em seu programa de FTP, mude as permissões do arquivo (chmod) para 600.

4) No seu cPanel, vá na parte de "Tarefas Agendadas" (ou "Cron Jobs", dependendo do idioma do cPanel):

Cron Jobs

Na próxima tela, escolha a opção de cima, "Standard":

Standard

4) A seguir, adicione o comando para criação de backups, desta forma:

O comando na cron

Comando:

pg_dump -U LOGINCPANEL BANCO > /home/LOGINCPANEL/teste.sql

Repare com atenção que, no exemplo acima, há alguns dados de sua conta que você deve fornecer, que são:

LOGINCPANEL - seu login do cPanel

BANCO - o nome do banco de dados cujo backup você quer fazer

seuemail@aqui -  coloque aqui o seu email, para que uma mensagem seja enviada para você no caso de algo dar errado.

Pronto! Seus backups serão feitos automaticamente à meia-noite, diariamente.

Claro, você pode mudar quando os  backups acontecerão à vontade. No exemplo acima, usamos meia-noite, diariamente. Mas veja que você pode escolher outras opções, de acordo com suas necessidades.

Resolução de Problemas

Esta é uma seção de TROUBLESHOOTING, ou seja, auxilia na identificação e solução de problemas variados.

Bancos MySQL não estão sendo criados por scripts ou pelo phpMyAdmin

Infelizmente, não é possível criar bancos MySQL através do phpMyAdmin ou de scripts.

O Painel de Controle cPanel somente permite a criação de bancos de dados através de sua própria ferramenta: o Gerenciador de Banco de Dados MySQL.

Erro de Maximum execution time no phpMyAdmin

Se ao tentar inserir dados (tabelas, etc) em seu banco de dados com o phpMyAdmin se deparar com um erro semelhante ao abaixo:

Fatal error: Maximum execution time of 300 seconds exceeded in /usr/local/cpanel/base/3rdparty/phpMyAdmin/libraries/import/sql.php on line 129

Verifique a sintaxe SQL dos dados que está tentando inserir, pois este problema geralmente ocorre em função de erro de sintaxe.