Instalação e Configuração no CentOS 7 do phpMyAdmin com o Banco de Dados MariaDB noutro Servidor

Parte 1: MariaDB

O objetivo aqui é que o MariaDB também seja utilizado a partir de um outro servidor com o Apache. Por isso, em uma VM instale o MariaDB com o comando:

yum install mariadb-server
systemctl enable mariadb

Verifique o serviço com os comandos:

systemctl start mariadb
systemctl status mariadb

Em seguida, configure a segurança do BD através do script:

mysql_secure_installation

Um exemplo de saídas durante a configuração encontra-se abaixo. Lembrete: Não há qualquer senha para o usuário “root”. Apenas dê ENTER e cria a senha para o “root”.


Set root password? [Y/n] Y

Remove anonymous users? [Y/n] Y

Disallow root login remotely? [Y/n] n

Remove test database and access to it? [Y/n] Y

Reload privilege tables now? [Y/n] Y

Thanks for using MariaDB!

Insira a linha abaixo no arquivo “/etc/my.cnf” para permitir o acesso ao servidor pela rede via IPv6:

bind-address = ::

No caso do firewall utilize os comandos:

firewall-cmd --get-service | grep mysql
firewall-cmd --add-service=mysql --permanent
firewall-cmd --reload
firewall-cmd –list-all
firewall-cmd --list-services
netstat -nap | grep 3306

No MariaDB crie o banco de dados para o phpMyAdmin (abaixo). Neste caso, será criado um usuário administrador (“administrador”) e um banco de dados “phpMyAdminBD” com a senha ifpe. Copie do subdiretório “sql” do phpMyAdmin o arquivo “create_tables.sql” (“phpmyadmin*/sql/create_tables.sql”) para o servidor do BD, mudando o nome do banco de dados caso seja necessário. Exemplo: “USE phpMyAdminBD;”.

Já no MariaDB crie o banco de dados para o phpMyAdmin (abaixo). Neste caso, será criado um usuário administrador (“administrador”) e um banco de dados “phpMyAdminBD” com a senha “minhasenha”.

root@BD:/home/ifpe#  mysql -u root -p
mysql> CREATE USER 'administrador'@'localhost' IDENTIFIED BY 'minhasenha';
mysql> CREATE DATABASE phpMyAdminBD;
mysql> GRANT ALL PRIVILEGES ON . TO 'administrador'@'%' IDENTIFIED BY 'minhasenha' WITH GRANT OPTION;
mysql> SOURCE ./create_tables.sql
mysql> FLUSH PRIVILEGES;
mysql> exit

Se nenhuma mensagem de erro apareceu (“ERROR …”) termine a configuração do bando de dados adicionado a linha “bind-address = ::” no arquivo “/etc/my.cnf”.

Não esqueça de reiniciar o servidor (“systemctl restart mariadb”)!

Parte 2: Instalação e configuração do Apache para o phpMyAdmin

Para o phpMyAdmin, instale o Apache no servidor web com o comando abaixo:

yum install httpd mod_ssl php php-cli php-common php-gd php-mbstring php-mysql php-pdo php-pear php-process php-soap php-xml php-xmlrpc

Lembrete 1: O phpMyAdmin é uma solução cheia de falhas de segurança por isso não instale-o no mesmo servidor do bando de dados MariaDB.
Lembrete 2: O PHP por padrão no “CentOS 7” é o da versão “5.4.16” por isso o phpMyAdmin utilizado deve ser o da versão “4.4.15.10” ou anterior caso não deseje utilizar o PHP 7.

Para utilizar uma versão mais nova utilize o tutorial sobre como instalar o PHP 7.

Para verificação e configuração do firewall utilize os comandos:

firewall-cmd --get-service | grep http
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload

Também edite o arquivo “/etc/httpd/conf/httpd.conf” para inserindo a linha:

ServerName apache.servers.com.br:80

Isto definirá no Apache qual o nome do servidor. Antes de configurar a webpage do phpMyAdmin lembre-se que todos os domain names utilizados pelo servidor web, incluindo o ServerName, devem ser configurados no Apache.

Após o download do phpMyAdmin, descompacte-o na pasta padrão do Apache “/var/www/html”. O próximo passo é configurar o site criando os arquivos de configuração do website em “/etc/httpd/conf.d/”.Um exemplo de arquivo de configuração do website para porta 80 (“redireciona-phpmyadmin.conf”) é mostrado abaixo:

Um exemplo de arquivo de configuração do website para porta 80 (“redireciona-phpmyadmin.conf”) é mostrado abaixo:

<VirtualHost *:80>
ServerName phpmyadmin.servers.com.br
ServerAlias www.phpmyadmin.servers.com.br
Redirect permanent / https://phpmyadmin.servers.com.br
</VirtualHost>

E, um exemplo de arquivo de configuração do website para porta 443 (“phpmyadmin.conf”) é mostrado abaixo:

<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /var/www/certs/phpmyadmin.crt
SSLCertificateKeyFile /var/www/certs/phpmyadmin.key
ServerName phpmyadmin.servers.com.br
ServerAlias www.phpmyadmin.servers.com.br
DocumentRoot /var/www/html/phpmyadmin
<Directory "/var/www/html/phpmyadmin">
AddDefaultCharset UTF-8
Options FollowSymLinks Multiviews
Indexes AllowOverride All
Require all granted
</Directory>
</VirtualHost>

Crie o certificado digital autoassinado para o servidor web com o comando abaixo:

mkdir /var/www/certs
openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /var/www/certs/phpmyadmin.key -out /var/www/certs/phpmyadmin.crt

Na pasta do phpMyAdmin crie o arquivo “config.inc.php” (abaixo) informando o nome do bando de dados, usuário e senha para este banco. Um exemplo deste arquivo encontra-se moodle da disciplina.

cp config.sample.inc.php config.inc.php

Exemplo de linhas editadas no arquivo “config.inc.php”:

$cfg['blowfish_secret'] = '012345678901234567890123456789012345678901'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

$cfg['Servers'][$i]['host'] = 'maria.servers.com.br';
$cfg['Servers'][$i]['controluser'] = 'administrador';
$cfg['Servers'][$i]['controlpass'] = 'minhasenha';

$cfg['Servers'][$i]['pmadb'] = 'phpMyAdminBD';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

Vale ressaltar que muitas linhas apenas tiveram o símbolo de comentário (“//”) removido da linha. Também crie um diretório “tmp/” dentro do diretório do phpMyAdmin.

Parte 3: Configuração do SELinux par ao phpMyAdmin

Para a configuração do SELinux no servidor web instale os pacotes necessários conforme abaixo:

yum install policycoreutils-python setools-console

Habilite os arquivos de configuração dos websites e o diretório dos websites para utilizar o SELinux:

chcon -u system_u -r object_r -t httpd_config_t /etc/httpd/redireciona-phpmyadmin.conf
chcon -u system_u -r object_r -t httpd_config_t /etc/httpd/phpmyadmin.conf
chcon -R -u system_u -r object_r -t httpd_sys_content_t /var/www/html
chcon -R -u system_u -r object_r -t httpd_sys_rw_content_t /var/www/html/phpmyadmin
chcon -R -u system_u -r object_r -t cert_t /var/www/certs
setsebool -P httpd_can_network_connect_db on

Por fim, não se esqueça habilitar o apache para ser executado na inicialização (“systemctl enable httpd”) e recarregar as configurações (“systemctl reload httpd”).

Para verificar a configuração utilize alguns dos comandos abaixo.

No MariaDB/MySQL:

mysql -u administrador -h ip-do-servidor -p

No Apache:

getsebool -a 
getsebool -a | grep httpd_can_network_connect_db
apachectl configtest
apachectl -k restart
httpd -v
httpd -V
httpd -S
tail /var/log/httpd/error_log

FIM!

Publicado porDiego dos Passos

Olá a todos, eu sou o Diego. :) Atualmente sou professor do IFPE no campus de Jaboatão dos Guararapes. Neste website vocês encontrarão todas as informações relacionadas as atividades exercidas por mim na área de TI. O meu currículo lattes é: http://lattes.cnpq.br/4074265134616142 Contatos pelo e-mail: diego.silva@jaboatao.ifpe.edu.br Este e-mail é somente para atividades profissionais. :)