Files
apitdn/fluig_rag_docs/Plataforma Documentação técnica/Configuração/Configuração de Banco de Dados/Configuração de banco de dados MySQL.md
T

292 lines
13 KiB
Markdown
Raw Normal View History

2026-05-06 13:35:47 -03:00
---
title: Configuração de banco de dados MySQL
source: https://tdn.totvs.com/pages/viewpage.action?pageId=257623464
path: \Plataforma Documentação técnica\Configuração\Configuração de Banco de Dados\Configuração de banco de dados MySQL.md
---
Fique atento!
Esta página é válida para atualizações **1.6** e **superiores** do TOTVS Fluig.
Caso possua uma atualização anterior acesse: [Como configurar o banco de dados MySQL na release 1.5.13 ou inferior?](https://tdn.totvs.com/pages/viewpage.action?pageId=128681321)
- [Versões homologadas do MySQL](#ConfiguraçãodebancodedadosMySQL-VersõeshomologadasdoMySQL)
- [Passo a passo para configuração do MySQL](#ConfiguraçãodebancodedadosMySQL-PassoapassoparaconfiguraçãodoMySQL)
- [Criação do usuário e concessão de privilégios](#ConfiguraçãodebancodedadosMySQL-Criaçãodousuárioeconcessãodeprivilégios)
- [Parâmetro de conexão](#ConfiguraçãodebancodedadosMySQL-Parâmetrodeconexão)
- [Case sensitive](#ConfiguraçãodebancodedadosMySQL-Casesensitive)
- [Engines](#ConfiguraçãodebancodedadosMySQL-Engines)
- [Memória](#ConfiguraçãodebancodedadosMySQL-Memória)
- [Criação de tabelas](#ConfiguraçãodebancodedadosMySQL-Criaçãodetabelas)
- [Confirmar alterações](#ConfiguraçãodebancodedadosMySQL-Confirmaralterações)
- [Criação do banco de dados com codificação UTF-8](#ConfiguraçãodebancodedadosMySQL-CriaçãodobancodedadoscomcodificaçãoUTF-8)
- [Download do driver](#ConfiguraçãodebancodedadosMySQL-Downloaddodriver)
- [Otimizando a performance do banco de dados MySQL](#ConfiguraçãodebancodedadosMySQL-OtimizandoaperformancedobancodedadosMySQL)
# Versões homologadas do MySQL
---
Para verificar as versões homologadas do MySQL acesse a [Matriz de Portabilidade](http://tdn.totvs.com/display/fluig/Matriz+de+Portabilidade).
# Passo a passo para configuração do MySQL
---
As configurações apresentadas abaixo devem ser realizadas antes da criação do banco de dados da plataforma.
Atenção!
A **atualização** para versão **MySQL 8.0**, ou seja, quando já existe um banco criado em versões anteriores, é um processo complexo que envolve diversas configurações e requer muita atenção.
Recomendamos consultar um especialista em banco de dados para executar esses procedimentos devido a complexidade das configurações.
Contudo, listamos alguns materiais de apoio que indicamos a leitura antes de prosseguir com a atualização:
- <https://dev.mysql.com/doc/refman/8.0/en/upgrading.html>
- <https://dev.mysql.com/blog-archive/inplace-upgrade-from-mysql-5-7-to-mysql-8-0/>
Importante!
Por questões de segurança é altamente recomendável efetuar a encriptação da senha conforme o procedimento informado na documentação [encriptação de senha do banco de dados](http://tdn.totvs.com/x/Oh4WGw).
## Criação do usuário e concessão de privilégios
---
Para a criação de um novo usuário em banco de dados MySQL usamos a instrução CREATE USER, conforme sintaxe abaixo:
```
CREATE USER 'sha2user'@'localhost'
IDENTIFIED WITH caching_sha2_password BY 'password';
```
Onde:
- sha2user: Nome do usuário que será criado;
- localhost: Host que irá acessar;
- password: Senha do usuário que será criado;
Após criado o usuário é necessário conceder os privilégios de sistema necessários para ele, conforme sintaxe abaixo:
```
GRANT all ON fluig.* TO 'sha2user'@'localhost';
```
Onde:
- sha2user: Nome do usuário criado anteriormente;
- localhost: Host do usuário criado anteriormente;
## Parâmetro de conexão
---
Nessa etapa, é realizada uma configuração específica para a versão do **MySQL 8.0.**Para as demais versões do MySQL permanece o que foi configurado por padrão.
Caso a configuração seja para a versão **MySQL 8.0**, é necessário alterar o parâmetro de conexão no arquivo de configurações.
Para isso:
- Acesse o diretório **\appserver\standalone\configuration** e edite o arquivo **standalone.xml**.
- Localize as *tags* **<connection-url>**.
- O parâmetro dessa *tag* deve ser alterado de: **?useSSL=false** para **?allowPublicKeyRetrieval=true&amp;useSSL=false**.
- Acesse o diretório **\appserver\domain\configuration** e edite o arquivo **domain.xml**.
- Localize as *tags* **<connection-url>**.
- O parâmetro dessa *tag* deve ser alterado de: **?useSSL=false** para **?allowPublicKeyRetrieval=true&amp;useSSL=false**.
## *Case sensitive*
---
Por padrão, *aliases* de tabelas são *case sensitive* no Unix, mas não são no Windows. Para evitar problemas causados por esta característica, no MySQL é necessário adicionar a variável de sistema **lower\_case\_table\_names**no arquivo de configuração do MySQL.
**MySQL em versões anteriores a 8.0**
Se você utiliza o banco de dados MySQL em versões anteriores a 8.0, basta incluir essa variável no arquivo **my.ini** (Windows) ou **my.cnf** (Linux)**.**
```
lower_case_table_names=1
```
**MySQL na versão 8.0**
Se você utiliza o banco de dados MySQL na versão 8.0, no **Windows** você não precisa efetuar nenhuma configuração. A variável *lower\_case\_table\_names*já vem configurada por padrão com o valor 1.
No **Linux**, é OBRIGATÓRIO realizar essa configuração na instalação do servidor MySQL, alterando a variável *lower\_case\_table\_names* para o valor 1.
Por se tratar de uma variável de sistema, que não pode ser alterada posteriormente, é muito importante configurá-la corretamente na instalação.
Para mais informações sobre o uso e configuração do *case sensitive* na versão 8.0, [consulte aqui](https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html).
## *Engines*
---
Além disso é necessário confirmar que as tabelas serão criadas corretamente no banco de dados. Para isso, no *Command Line Client* do MySQL verifique a *engine* utilizada informando o comando: 
```
SHOW ENGINES\G
```
Localize a *engine* InnoDB, conforme a imagem abaixo:
![](..\..\..\images\mysql.png)
Se a *engine* InnoDB não for apresentada como *Default*, o parâmetro *default\_storage\_engine*também deve ser adicionado ao arquivo, conforme segue:
**Arquivo de configuração do MySQL (Normalmente Linux: my.cnf / Windows: my.ini**
```
default_storage_engine=InnoDB
```
## Memória
---
Também é possível definir a quantidade de memória a ser usada pelo MySQL. Em um servidor dedicado, a boa prática é alocar de 75% a 80% da memória disponível para o banco de dados:
**Arquivo de configuração do MySQL (Normalmente Linux: my.cnf / Windows: my.ini**
```
innodb_buffer_pool_size=<valor em bytes>
```
- Por exemplo, para alocar 128 MB de memória teríamos: innodb\_buffer\_pool\_size=134217728.
## Criação de tabelas
---
Caso sejam criados formulários com muitos campos, sendo a maioria deles do tipo TEXT, o MySQL pode restringir a criação de tabelas em que o tamanho somado dos campos ultrapasse o limite permitido.
Recomendamos efetuar as seguintes configurações no banco de dados para solucionar essa restrição:
**Arquivo de configuração do MySQL (Normalmente Linux: my.cnf / Windows: my.ini**
```
innodb_log_file_size=512M #Somente para MySQL em versões anteriores a 8.0
innodb_log_buffer_size=800M
innodb_strict_mode=0
```
## Confirmar alterações
---
Após realizar as configurações expostas nos passos anteriores, é necessário reiniciar o MySQL e confirmar a aplicação das alterações.
Para verificar se a configuração *case sensitive* foi efetuada com sucesso, execute o comando SQL abaixo. Se no resultado a coluna *value*possuir o valor 1 a configuração está correta.
```
SHOW GLOBAL VARIABLES LIKE 'lower_case_table_names';
```
Confirme também a alteração do *Engine* para InnoDB, caso tenha adicionado o parâmetro *default\_storage\_engine*ao arquivo*:*
```
SHOW ENGINES\G
```
Se a*engine* InnoDB aparecer como*Default*a configuração foi aplicada com sucesso.
Importante!
- ***Timezone***: o banco de dados MySQL possui validação de *timezone*, sendo assim, para a instalação da plataforma com MySQL, é necessário que o servidor onde está instalada a plataforma tenha o *timezone* válido (reconhecido pelo MySQL).
- **SSL**: se for necessário usar SSL, é preciso alterar o parâmetro *useSSL* para *true*. Esse parâmetro é encontrado na *string* de conexão dentro do arquivo ***standalone.xml*** (**a partir da 2.0**) ou do ***domain.xml*** (**da 1.6 até 1.8.2**)*.*
# Criação do banco de dados com codificação UTF-8
---
A plataforma necessita de uma base de dados com *charset* **UTF-8**. Para criar o banco com esta característica utilize o seguinte comando SQL, substituindo "nome\_do\_banco" pelo nome do banco a ser criado:
**MySQL em versões anteriores a 8.0**
```
CREATE DATABASE nome_do_banco CHARACTER SET utf8 COLLATE utf8_general_ci;
```
**MySQL na versão 8.0**
```
CREATE DATABASE nome_do_banco CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
```
Atenção!
A partir da versão 8.0 o charset utf8 e collate utf8\_general\_ci estão descontinuados e em breve não poderão ser mais utilizados.
Caso esteja atualizando para a versão 8.0, ou seja, já tenha um banco criado com o charset utf8 e collate utf8\_general\_ci, é necessário planejar a conversão do banco e tabelas para o charset utf8mb4 e collate utf8mb4\_general\_ci.
Recomendamos consultar um especialista em banco de dados para executar esses procedimentos. Existem ferramentas que realizam essa conversão e também comandos SQL que podem ser executados manualmente em seu banco de dados.
Atenção!
A partir da release 2.0 do TOTVS Fluig, será obrigatório a utilização do MySQL na versão 8. Em uma atualização, caso as **tabelas padrão** do produto não se encontrem com o charset utf8mb4 e collate utf8mb4\_general\_ci, o TOTVS Fluig efetuará a conversão automaticamente na primeira inicialização, não sendo necessário nenhuma conversão manual.
Para tabelas customizadas e tabelas ML\*, a conversão não será realizada automaticamente. Caso seja necessário, essa alteração deverá ser realizada manualmente.
Nota:
Não há um padrão para "nome\_do\_banco", cada cliente pode colocar o nome que desejar, por exemplo: *fluig*, *fluig-homologacao* ou *minhaempresa*.
# *Download* do *driver*
---
Para utilização do banco de dados MySQL, é necessário fazer o download do *driver* MySQL separadamente.
Por isso, antes de iniciar a instalação/atualização da plataforma, siga os passos a seguir:
**01**. Faça o download do *driver* diretamente no [site do MySQL](http://dev.mysql.com/downloads/connector/j/);
Fique atento!
O driver do MySQL deve estar na mesma versão do banco MySQL que você tem instalado. Para saber quais são as versões homologadas acesse a [Matriz de Portabilidade](http://tdn.totvs.com/display/fluig/Matriz+de+Portabilidade).
**02**. No campo **Select Platform** acione a opção **Platform Independent**;
**03**. Clique no botão **Download**ao lado da versão em arquivo ZIP;
**04**. Clique em ***No thanks, just start my download*** e será iniciado o download de um arquivo chamado **mysql-connector-java-XX.Y.ZZ.zip** ou **mysql-connector-j-XX.Y.ZZ.zip**, onde XX.Y.ZZ é a versão atual do *driver*;
**05**. Descompacte o arquivo baixado. Será criada uma pasta chamada **mysql-connector-java-XX.Y.ZZ** ou **mysql-connector-j-XX.Y.ZZ.zip***;*
**06**. Nesta pasta há um arquivo chamado ***mysql-connector-java-XX.Y.ZZ-bin.jar** ou **mysql-connector-j-XX.Y.ZZ.jar***. Esse arquivo é o *driver*.
Durante a instalação da plataforma, será necessário indicar o caminho onde o *driver* do MySQL foi armazenado.
Como atualizar?
A atualização do Fluig não permite atualizar o *driver* pelo instalador. Esse procedimento deve ser executado manualmente, seguindo os passos abaixo:
**01**. Acesse a pasta *<instalação Fluig>\appserver\modules\com\mysql\main.*
**02**. Exclua o arquivo *mysql-connector-java.jar* dessa pasta.
**03**. Copie o arquivo *mysql-connector-java-XX.Y.ZZ-bin.jar ou mysql-connector-j-XX.Y.ZZ.jar* (baixado do site e descompactado) para a pasta *<instalação Fluig>\appserver\modules\com\mysql\main.*
**04**. Renomeie o arquivo copiado (*mysql-connector-java-XX.Y.ZZ-bin.jar ou mysql-connector-j-XX.Y.ZZ.jar)* para *mysql-connector-java.jar.*
# Otimizando a performance do banco de dados MySQL
---
Atenção!
O limite default do banco **MySQL** para campos tipo *text* é de 195. Dentro deste padrão são realizados todos os testes com formulários no Fluig.
**Não recomendamos** a alteração do parâmetro **innodb\_log\_file\_size** para exportação de campos, pois pode comprometer o desempenho da aplicação.
Quando trabalhamos com um volume elevado de dados e usuários, o banco de dados pode apresentar problemas de baixo desempenho. Um investimento em capacidade física dos servidores é sempre bom, porém há momentos que o *tuning*irá representar ganhos expressivos de performance.
Para mais informações sobre *tunning* e otimização de performance do MySQL consulte a documentação oficial disponível em [MySQL Optimization](http://dev.mysql.com/doc/refman/5.5/en/optimization.html).