O MySQL Server é um SGBD gratuito que trabalha com base de dados relacionais, sua principal característica é de ser um banco de dados leve e consistente que trabalha com o modelo cliente-servidor, onde o SGBD é o servidor, enquanto qualquer outra aplicação que utiliza-lo é o cliente.
O sistema possui suporte à transações, possibilitando que cada operação realizada seja isolada em blocos protegidos, onde caso ocorra alguma falha ou imprevisto, tudo o que foi feito poderá ser revertido, não realizando quaisquer alterações na base de dados. Sua instalação pode ser realizada em vários sistemas operacionais, pois se trata de uma aplicação multiplataforma.
Para instalar o MySQL server com o no Ubuntu 18.04 execute os comandos abaixo como superusuário (uma linha por vez)
apt-get update && apt install mysql-server
Após o término da instalação, iremos definir uma senha para o root no localhost, digitando os comandos abaixo. Lembre-se de alterar a senha que usamos de exemplo para a sua senha!
mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'SUA-SENHA';
quit
Feito isso, você já terá acesso ao usuário "root" em qualquer aplicação que executar no localhost.
Instalando o phpMyAdmin
O phpMyAdmin é uma ferramenta que permite a administração do seu banco através do navegador. Não é recomendável utilizar esta ferramenta em ambientes de produção devido aos riscos de ataques bruteforce e possíveis vulnerabilidades que a aplicação possuir, prefira sempre conexões através de túneis SSH.
Para instalar o phpMyAdmin, execute o comando abaixo e siga as etapas.
apt install phpmyadmin
- O comando irá lhe perguntar se deseja usar o apache2 ou lighthttp caso você não os tenha instalado anteriormente. Em nosso teste instalamos o apache2.
- Selecione "Yes" quando for questionado se deseja que o banco de dados do phpMyAdmin seja configurado usando o dbconfig-common.
- Informe uma senha para o usuário do phpMyAdmin. Esta senha, por razões de segurança, não deve ser a mesma que a informada ao usuário root. Você não precisará desta senha posteriormente.
- Adicione um link simbólico à pasta do phpMyAdmin no diretório de sites do apache2, para isso, utilize o comando abaixo:
ln -s /usr/share/phpmyadmin /var/www/html
Agora basta acessar o endereço IP de seu servidor com o diretório "/phpmyadmin", por exemplo.
http://167.71.102.227/phpmyadmin
Informe o usuário "root" e sua senha. Esta senha não é a senha do phpMyAdmin.
Removendo o acesso ao phpMyAdmin
Como foi dito anteriormente, deixar o phpMyAdmin acessível em ambientes de produção pode ser muito problemático, portanto para remover seu acesso, basta remover o link simbólico criado anteriormente, usando o comando abaixo:
rm /var/www/html/phpmyadmin
Após utilizar este comando, o phpMyAdmin não estará mais disponível para ser acessado através de seu navegador.
Aumentando a segurança do servidor MySQL
Para garantir uma maior segurança de seu servidor, é altamente recomendável executar o comando "mysql_secure_installation", que irá remover os usuários anônimos, tabelas de testes e remover o acesso remoto ao usuário root.
/usr/bin/mysql_secure_installation
Em seguida, várias perguntas serão realizadas pelo script. Primeiramente, informe a senha do usuário root do MySQL
Securing the MySQL server deployment.
Enter password for user root: [digite a senha do usuário root do MySQL]
O script irá lhe perguntar se deseja ativar o plugin "validate password", que força que os usuários dos banco de dados tenham senhas seguras. Em nosso caso, não ativamos este plugin pois já utilizamos senhas seguras. Selecione "N" e aperte enter.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No: N
Em seguida você será questionado se deseja alterar a senha do root do MySQL, selecione não digitando "N".
Using existing password for root.
Change the password for root ? ((Press y|Y for Yes, any other key for No) : N
Por padrão a instalação do MySQL permite o acesso de usuários anônimos, utilizados somente para testes e que não são necessários para o ambiente de produção. Pressione Y para removê-los.
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Para evitar ataques de força bruta, é altamente recomendável desativar o acesso remoto ao usuário "root", permitindo logins para esta conta somente através do localhost. (isto não afeta o phpMyAdmin, que faz login através do localhost). Pressione Y.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
E por último, a instalação padrão do MySQL vem tabelas de testes que não são necessárias em ambientes de produção, pressione Y para removê-las e Y novamente para aplicar as alterações.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y
Success.
All done!
Agora sua instalação do MySQL estará um pouco mais segura, no entanto, ainda estará vulnerável caso utilize softwares inseguros ou mantenha o phpMyAdmin público na internet.