6 dicas de segurança para o MySQL/MariaDB

O MySQL é, muito provavelmente, o sistema de gestão de base de dados (SGBD) mais usado em todo o mundo, estando disponível em várias versões e para diferentes sistemas operativos. Por outro lado o MariaDB (fork do MySQL) tem tido um crescimento fantástico.

Hoje deixamos 6 dicas de segurança para quem usa o MySQL ou o MariaDB.

Por omissão, depois de instalar o MySQL/MariaDB, a segurança dos serviços não é totalmente garantida. Nesse sentido é preciso realizar alguns ajustes importantes. Aqui ficam as nossas dicas para hoje:

Dica 1 – “Instalação” segura do MySQL

Depois de instalar o MySQL/MariaDB devem executar o script mysql_secure_installation para:

  • Definir uma password para o utilizador root
  • Remover bases de dados de testes
  • Remover utilizadores anónimos
  • Não permitir o acesso remoto ao gestor de base de dados
  • etc.

Durante a configuração, devem seguir os seguintes passos:

  • Enter current password for root (enter for none): # DAR ENTER #
  • Set root password? [Y/n] # DAR ENTER #
  • New password: # Redefinir Password #
  • Re-enter new password: # Redefinir Password #
  • Remove anonymous users? [Y/n] Y
  • Disallow root login remotely? [Y/n] Y
  • Remove test database and access to it? [Y/n] Y
  • Reload privilege tables now? [Y/n] Y

Dica 2 – Permitir apenas o acesso local

Se não usar o script anterior para bloquear o acesso remoto à base de dados, pode fazê-lo através do ficheiro /etc/mysql/mariadb.conf.d/50-server.cnf adicionando, a seguir à secção mysql, o comando:

bind-address = 127.0.0.1

Nota: Caso pretenda definir esta alteração no MySQL, deve ser no ficheiro /etc/mysql/mysql.conf.d/mysql.cnf.

Dica 3 – Mudar o porto de ligação ao MySQL/MariaDB

Por omissão, o porto de ligação ao MySQL/MariaDB é o conhecido 3306. Para mudarem, por exemplo, para 5555, devem ir ao ficheiro /etc/mysql/mariadb.conf.d/50-server.cnf e mudar a variável port.

Dica 4 – Apagar comandos MySQL

Todos os comandos executados na shell do MySQL/MariaDB são guardados no ficheiro ~/.mysql_history.

Para apagar toda a informação desse ficheiro devem usar o comando:

cat /dev/null > ~/.mysql_history

Dica 5 – Mude frequentemente a password de acesso ao MySQL/MariaDB

Para mudar com frequência a password de acesso ao gestor de base de dados basta que use os seguintes comandos:

MariaDB [(none)]> USE mysql;
MariaDB [(none)]> UPDATE user SET password=PASSWORD('YourPasswordHere') WHERE User='root' AND Host = 'localhost';
MariaDB [(none)]> FLUSH PRIVILEGES;

“Cábula” do MySQL

Este artigo visa ajudar aos programadores a fazer as suas tarefas mais facilmente e ajudar a diminuir o tempo de desenvolvimento.Alguns termos encontram-se em brasileiro “a gente” entende-se bem :). Vamos la começar.

A função IN e NOT IN

Usamos IN para fazer consultas quando precisamos que seja retornado todos os registros onde em um determinado campos contenha um dos valores que serão passados no IN.

Usamos NOT IN quando queremos retornar tudo menos os resultados passados no NOT IN

Uso em String:

SELECT sigla, nome, população
FROM cidades
WHERE
Sigla IN(‘PR’, ‘SP’, ‘MG’);
//NOT IN
Sigla NOT IN(‘PR’, ‘SP’, ‘MG’);

Uso numérico:

SELECT nome, email, idade
FROM curriculos
WHERE
idade IN (18, 19, 20)
//NOT IN
idade NOT IN (15, 16, 17)

As funções IF e CASE WHEN

Usamos a função IF no MySQL com a mesma finalidade do que qualquer linguagem de programação, só que na maioria das vezes é mais fácil jogar essa verificação para o banco de dados do que para a linguagem de programação.

Sintaxe:

IF(condição, caso verdadeiro, caso contrário)

SELECT nome, email, IF(sexo =”M”, “Masculino”, “Feminino”)
FROM currículos

A função CASE WHEN:

Usamos a função CASE WHEN no MySQL com a mesma finalidade do que usamos em qualquer çinguagem de programação, so que na maioria da vezes é mais fácil jogar essa verificação para o banco de dados do que para a linguagem de programação.

Sintaxe:
CASE campo
WHEN “valor1” THEN “Novo valor”

Controle de fluxo

SELECT nome, setor
CASE mes_nascimento
WHEN 01 THEN “Janeiro”
WHEN 02 THEN “Fevereiro”
WHEN 03 THEN “Março”
WHEN 04 THEN “Abril”
WHEN 05 THEN “Maio”
WHEN 06 THEN “Junho”
WHEN 07 THEN “Julho”
WHEN 08 THEN “Agosto”
WHEN 09 THEN “Setembro”
WHEN 10 THEN “Outubro”
WHEN 11 THEN “Novembro”
ELSE “Dezembro” END AS mes_nascimento
FROM funcionários

Condições livres

SELECT
CASE
WHEN continente = “América” THEN “Continente americano”
WHEN pais = “Brasil” THEN “Continente sul americano”
WHEN continente = “Mexico” THEN “Continente norte americano”
WHEN estado = “Paraná” THEN “Região Sul”
WHEN estado = “São Paulo” THEN “Região Sudeste”

Funções matemáticas

Trigonometria
pi() = 3.14.15.93
radians(180) = 3.1415926535898
sin(radians(60)) = 0.866025
sqrt(3)/2 = 0.86602540
degrees(asin(sqrt(3)/2)) = 60

Logaritmo e potência

log(2) = 0.693147
exp(1) = 2.718282
power(2,5) = 32.000000
log10(100) = 2.000000
mod(13,7) = 6
13%7 = 6
abs(-42) = 42
sign(0) = 0

Arredondamento

ceiling(2.5) = 3
floor(2.5) = 2
round(2.5) = 2
round(2.51) = 3
truncate(2.5,0) = 2

celing para cima
floor para baixo
round para o inteiro mais próximo
truncate elimina casas decimais

Obs: todas as funções de arredondamento também funcionam para números negativos

Funções de string

concat – concatema strings; pode receber 1-n parâmetros
substring – pega partes de uma string baseado na posição
substring_index – pega partes da string baseado nos delimitadores
instr – encontra strings em outras strigns
replace – modifica strings em outras strings
length – calcula o tamanho da string
like – compara strings utilizando wildcards

substring_index(“diegohellas@hotmail.com”, “@”, 1) = diegohellas
substring_index(“orders.mysql.com”, “.”, -2) = mysql.com
reverse(“orders.mysql.com”) = moc.lqsym.sredro
upper(“mysql”) = MYSQL
lower(“MySQL”) = mysql
rpad(“Diego”, 10, “.”) = diego…..
char(77,121,83,81,76) = MySQL
left(“Diego Felipe Hellas”, 3) = Die
mid(“Diego Felipe Hellas Moreira Alves”, 13,6) = Hellas
rught(‘Diego Hellas“, 6) = Hellas
trim(“Q”, from “QQQQMySQL ABQQQ”) = MySQL AB

Funções de tempo e de data

NOW() e intervalos

SELECT NOW() – irá retornar a data e hora atual do servidor MySQL no formato
aaaa-mm-dd hh:mm:ss

SELECT NOW() + INTERVAL 2DAY – irá retornar a data e hoira do servidor, só que com uma diferença de 2 dias para frente(ex: hoje é 2006-10-07 ele irá retornar 2006-10-09), essa diferença pode ser negativa também, e o intervalo pode ser horas, minutos, segundos, dias, semanas, meses, anos, etc;

Formatando datas com o DATE_FORMAT()

Sintaxe:
DATE_FORMAT(campo, ‘formato desejado’)

Especificador Descrição
%M Nome do mês (January..December)
%W Nome do dia da semana (Sunday..Saturday)
%D Dia do mês com o sufixo em Inglês (1st, 2nd, 3rd, etc.)
%Y Ano, numérico, com 4 dígitos
%y Ano, numérico, com 2 dígitos
%a Nome do dia da semana abreviado (Sun..Sat)
%d Dia do mês, numérico (00..31)
%e Dia do mês, numérico (0..31)
%m Mês, numérico (01..12)
%c Mês, numérico (1..12)
%b Nome do mês, abreviado (Jan..Dec)
%j Dia do ano (001..366)
%H Hora (00..23)
%k Hora (0..23)
%h Hora (01..12)
%I Hora (01..12)
%l Hora (1..12)
%i Minutos, numérico (00..59)
%r Horário, 12 horas (hh:mm:ss [AP]M)
%T Horário, 24 horas (hh:mm:ss)
%S Segundos (00..59)
%s Segundos (00..59)
%p AM ou PM
%w Dia da semana (0=Domingo..6=Sábado)
%U Semana (00..53), onde Domingo é o primeiro dia da semana
%u Semana (00..53), onde Segunda é o primeiro dia da semana
%% Caractere `%’.

Exemplos de utilização:

Lembrando sempre que o MySQL armazena as datas no formato aaaa-mm-dd

Para seleccionar a data no formato que usamos, ou de nossa necessidade:

SELECT nome, DATE_FORMAT(data_nascimento, ‘%d/%m/%Y’) AS data
FROM funcionários

Esse exemplo agora é muito útil, eu sempre uso quando eu tenho um formulário que tem um campo de data e essa data temque ser pesquisada no MySQL, com ela eu evito de ficar transformando a data de dd/mm/aaaa para aaaa-mm-dd

SELECT nome, departamento FROM funcionários
WHERE DATE_FORMAT(data_nascimento, ‘%d/%m/%Y’) = ‘22/11/1986’
Função DATEDIFF

Ela calcula a diferença em dias entre duas datas

SELECT DATEDIFF(’2006-12-31′, ‘2006-01-01′) = 364

Fonte: “Cábula” do MySQL – Pplware

phpMyAdmin 3.4.0 com excelentes novidades

phpMyAdmin 3.4.0 com excelentes novidades

Criado por Pedro Pinto em 13 de Maio de 2011 | 36 comentários

Quem não conhece o phpMyAdmin?

O phpMyAdmin é uma ferramenta gratuita, escrita em PHP, e que permite de forma muito simples fazer a administração das nossas bases de dados através de um simples browser.

Através de um interface bastante intuitivo e organizado, o phpMyAdmin permite a qualquer utilizador fazer um gestão simplificada do MySQL e das respectivas bases de dados.

php_000

Novidades do phpMyAdmin 3.4.0
  • Novo template
  • Editor ENUM/SET
  • Simplificação no processo de exportar e importar bases de dados
  • Gráficos
  • Construtor
  • Em algumas funcionalidades foi introduzida a tecnologia AJAX

Exemplo da janela que permite a definir os privilégios de um utilizador

php_06

Além das características referidas anteriormente, o phpMyAdmin disponibiliza:

  • Suporte para a maioria das funcionalidades do MySQL
  • Permite procurar e apagar base de dados, tabelas, views, campos e índices
  • Criar, copiar, apagar e renomear base de dados, tabelas, campos e respectiva informação
  • Permite executar SQL-statements
  • Gestão de utilizadores e privilégios
  • Gestão de procedimentos e triggers
  • Importação de dados a partir de ficheiros .CSV ou  SQL
  • Exportação para vários formatos: CSV, SQL, XML, PDF, ISO/IEC 26300 – OpenDocument Text and Spreadsheet, Word, Excel, LATEX, entre outros
  • Administração de múltiplos servidores

Como colocar em funcionamento o phpMyAdmin

O phpMyAdmin é muito simples de colocar em funcionamento. Basicamente não necessitamos de instalar, sendo apenas necessário copiar para a directoria de sites do nosso servidor Web.

Vamos a um exemplo. Eu tenho o XAMPP instalado na minha máquina e encontra-se em D:\xampp. Para ter o phpMyAdmin a funcionar, apenas copiei a o mesmo para dentro do directório referido (D:\xampp)

php_02

Em seguida, e depois de arrancarmos os serviços associados ao Apache e MySQL, abrimos o browser e escrevemos: http://localhost/phpmyadmin/.  Aí deve inserir as credenciais de acesso ao MySQL.

php_03Já dentro do phpMyAdmin, são muitas as opções que o utilizador tem à sua disposição. Acesso as Base de dados, execução de código SQL, verificar o estado do serviço (BytesIn/BytesOut e outras estatísticas sobre o tráfego), Variáveis, Mapas de Caracteres, Engines, Privilégios, Replication, Processos, possibilidade de exportar e importar dados, e um mecanismo de sincronização com outros servidores.

php_04

Janela para exportar base de dados:

php_05

O phpMyAdmin é um “must have” que instalo sempre tenho de usar mysql em alguma máquina. A flexibilidade e “visão” simplificada que nos dá sobre as nossas bases de dados, facilita em muito certos trabalhos. Experimentem, há um DEMO aqui.

Artigos relacionados

Licença: Freeware
Sistemas Operativos: Windows/Mac OS X / Linux
Download: phpMyAdmin-3.4.0 [5,61 MB]
Homepage: phpmyadmin