Instalando o MySQL no VPS

Dando continuídade aos nossos artigos sobre o preparo e instalação dos programas que compõe o LEMP em um VPS de 5 dólares da Digital Ocean, você aprenderá como instalar o banco de dados MySQL em seu VPS. Confira nos links abaixo as textos anteriores:

1. Primeiros passos para configurar um VPS para o WordPress
2. Instalando o NGINX no VPS

Mas antes disso, quero explicar que apesar de estar me referindo ao MySQL, estarei explicando a instalação do banco de dados MariaDB, que é compatível com o MySQL. De acordo com a Wikipedia: MariaDB é um banco de dados que surgiu como fork do MySQL, criado pelo próprio fundador do projeto após sua aquisição pela Oracle. O Google está seguindo a mesma trilha de projetos como a Wikipedia e distribuições como a SUSE e trocando o MySQL pelo seu fork MariaDB. O Google também está colaborando com a MariaDB Foundation, incluindo o desenvolvimento de recursos no software que permitam a migração.

De qualquer maneira, instalação é idêntica, bastando trocar o pacote mariadb-server por mysql-server.


Assim como fizemos com o nginx, iremos primeiro adicionar o PPA que irá permitir instalarmos e manter atualizado o banco de dados MariaDB. Por falar em atualizar, a versão a ser instalada será a versão 10.0, que é a versão atual (GA). Esta versão possui as características da versão 5.5 do MariaDB, com diversas features portadas da versão 5.6 do MySQL, além de diversas novas features (e bugs 😉 ).

sudo apt-get install software-properties-common
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db
sudo add-apt-repository 'deb http://mirror.edatel.net.co/mariadb//repo/10.0/ubuntu utopic main'

sudo apt-get update
sudo apt-get install mariadb-server 

Durante a instalação, esta tela será apresentada:
Ubuntu MariaDB root password

Será solicitada uma senha própria para o usuário root do MariaDB. Eu aconselho que você insira uma senha forte, que não seja igual a sua senha do usuário root do Ubuntu. Uma senha com 8 caracteres e 4 números (totalizando tamanho 12) será mediana.

Agora vamos executar dois scripts para finalizar a instalação.

sudo service mysql stop
sudo mysql_install_db
sudo service mysql start
sudo mysql_secure_installation

Quando o script mysql_secure_installation for executado, você responderá uma série de perguntas:

Aqui você irá digitar a senha que você configurou no momento da instalação do MariaDB

Enter current password for root (enter for none):  
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Caso você queira alterar a senha, digite Y na proxima pergunta e insira a nova senha. Caso contrário, digite n.

You already have a root password set, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping. 

Desse ponto em diante, você pode teclar Y para todas as perguntas.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB 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? [Y/n] y
 ... Success!

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? [Y/n] y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
 - Dropping test database...
ERROR 1008 (HY000) at line 1: Can't drop database 'test'; database doesn't exist
 ... Failed!  Not critical, keep moving...
 - 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? [Y/n] y
 ... Success!

Vamos aproveitar o configurar o uso de memória do MariaDB. Por padrão, ele vem configurado para uso em sistemas com alguns gigabytes de RAM. Como estamos instalando-o em um VPS de 5 dólares da Digital Ocean, com pouca RAM disponível, devemos otimiza-lo. Primeiro, vamos fazer uma cópia de reserva do arquivo my.cnf original:

sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf.original

Agora podemos editar o arquivo original:

sudo nano /etc/mysql/my.cnf

Para facilitar, aqui está o arquivo completo que eu estou utilizando em meu VPS. No futuro, eu pretendo voltar a este artigo e expandi-lo sobre a otimização do banco de dados.

[mysqld]
port            = 3306
socket          = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16K
max_allowed_packet = 1M
table_cache = 4
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 64K
 
# Para VPS com pouca memoria, é recomendado que não se use InnoDB
skip-innodb
 
# Para usar InnoDB, remove o # das linhas abaixo
#innodb_data_home_dir = /var/lib/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /var/lib/mysql/
#innodb_log_arch_dir = /var/lib/mysql/

#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
 
[mysqldump]
quick
max_allowed_packet = 8M

[mysql]
no-auto-rehash
#safe-updates

[isamchk]
key_buffer = 8M
sort_buffer_size = 8M

[INNODBchk]
key_buffer = 8M
sort_buffer_size = 8M
 
[mysqlhotcopy]
interactive-timeout

Vamos reinicializar o banco de dados e se tudo estiver certo você verá o seguinte:

sudo service mysql restart
 * Stopping MariaDB database server mysqld                                      [ OK ] 
 * Starting MariaDB database server mysqld                                      [ OK ] 
 * Checking for corrupt, not cleanly closed and upgrade needing tables.


Se ao invés de [ OK ] aparecer [ FAIL ], isso significa que houve algum erro no arquivo my.cnf . Revise-o e tente novamente.

Como o nosso objetivo final será a instalação do WordPress, vamos criar a tabela necessária para a instalação do mesmo. Digite os seguintes comandos. Altere o “root” para o nome de usuário que tiver direitos de acesso ao banco de dados. O switch -p fará o MariaDB pedir a senha para o acesso ao banco de dados.

sudo mysql -u root -p

Atenção: logo abaixo está escrito NOME_DO_BD. Altere para um nome qualquer, mas que sirva para associar as tabelas ao banco de dados. Por exemplo, eu uso como nome blogdoleo. Quando instalarmos o WordPress, as tabelas que ele irá criar ficarão dentro desse banco de dados.

mysql> CREATE DATABASE NOME_DO_BD;
Query OK, 1 row affected (0.00 sec)
mariadb> GRANT ALL PRIVILEGES ON NOME_DO_BD.* TO "NOME_DO_BD"@"localhost" IDENTIFIED BY "senha do MariaDB";
Query OK, 0 rows affected (0.00 sec)
mariadbgt; FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
mariadb> EXIT  
Bye

Pronto, se você estiver seguindo os guias, agora teremos nginx e MariaDB instalados corretamente. No próximo tutorial será explicado a instalação do PHP5-FPM.

E não se esqueçam de contratar o VPS da Digital Ocean por apenas 5 dólares mensais. Com ele você terá :

1. 1 Core disponível só para você usar.
2. 500MB de RAM
3. 20GB de espaço em um SSD. Isso mesmo, em um SSD.
4. 1TB de tráfego
5. E mais importante, a habilidade de instalar tudo o que você quiser, sem limites (exceto do plano) e sem pegadinhas. Nada mais de CPU throtle por excesso de uso da CPU.
Assine agora clicando aqui.