Conectando o MTA a um banco MySQL com dbConnect
Com o MySQL, seu servidor ganha um banco robusto para contas, economia e propriedades. Veja como conectar do jeito certo.
1. Dados de acesso
Você vai precisar de:
- Host e porta do banco;
- Nome do banco;
- Usuário e senha.
Na hospedagem, essas informações ficam no painel.
2. Um resource só para a conexão
Em vez de cada resource abrir sua própria conexão, crie um resource central (ex.: rp_db) que conecta uma vez e compartilha a conexão.
rp_db/meta.xml:
<meta>
<info author="Voce" name="Banco de dados" version="1.0" type="script" />
<script src="server.lua" type="server" />
<export function="getConnection" type="server" />
</meta>
rp_db/server.lua:
local CONFIG = {
host = "HOST",
porta = 3306,
banco = "NOME_DO_BANCO",
usuario = "USUARIO",
senha = "SENHA",
}
local conexao
addEventHandler("onResourceStart", resourceRoot, function()
local dsn = ("dbname=%s;host=%s;port=%d;charset=utf8mb4"):format(CONFIG.banco, CONFIG.host, CONFIG.porta)
conexao = dbConnect("mysql", dsn, CONFIG.usuario, CONFIG.senha, "share=1")
if conexao then
outputServerLog("[rp_db] Conectado ao MySQL.")
else
outputServerLog("[rp_db] ERRO: não foi possível conectar ao MySQL.")
cancelEvent()
end
end)
function getConnection()
return conexao
end
Mantenha as credenciais fora de scripts de cliente e fora de repositórios públicos. Uma opção é ler de um arquivo de configuração que só existe no servidor.
3. Usando em outros resources
local db = exports.rp_db:getConnection()
dbQuery(function(qh)
local resultado = dbPoll(qh, 0)
-- tratar resultado
end, db, "SELECT id, dinheiro FROM contas WHERE usuario = ?", nomeUsuario)
E no meta.xml do resource que usa:
<include resource="rp_db" />
4. Permissões na ACL
Resources que usam dbConnect podem precisar de permissão na ACL, dependendo da configuração do servidor. Se aparecer "Access denied" no console, conceda o direito necessário apenas ao resource de banco.
5. Charset
Use charset=utf8mb4 (e tabelas utf8mb4) para acentos, emojis e nomes com caracteres especiais funcionarem corretamente.
6. Tratando erros
- Verifique se a conexão foi criada antes de usar;
- Em consultas, trate retorno
falsedodbPoll(erro na query) e registre a mensagem no log.
Hospede seu servidor com a VittHost
Todos os planos MTASA-BR da VittHost incluem 1 banco MySQL, com os dados de acesso no painel Pterodactyl. Servidores no Brasil, proteção DDoS, downloads acelerados por nginx dedicado e teste grátis de 3 dias.