-- Rode como root do MySQL:  mysql -u root -p < deploy/mysql-seguranca.sql   (troque nomes e senhas!)
-- 1) No arquivo do MySQL (/etc/mysql/mysql.conf.d/mysqld.cnf) deixe:  bind-address = 127.0.0.1
--    e reinicie:  systemctl restart mysql      (o banco deixa de aceitar conexões da rede)
-- 2) Confira:  ss -tlnp | grep 3306   -> deve mostrar 127.0.0.1:3306 (e não 0.0.0.0)

-- Usuário do dia a dia do app: só lê e grava dados (não altera estrutura, não apaga tabelas)
CREATE USER IF NOT EXISTS 'atm_app'@'localhost' IDENTIFIED BY 'TROQUE_POR_SENHA_FORTE_1';
GRANT SELECT, INSERT, UPDATE, DELETE ON atm_db.* TO 'atm_app'@'localhost';

-- Usuário só para as migrações dos scripts (use durante a migração; depois pode trancar/remover)
CREATE USER IF NOT EXISTS 'atm_migra'@'localhost' IDENTIFIED BY 'TROQUE_POR_SENHA_FORTE_2';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER, INDEX, REFERENCES ON atm_db.* TO 'atm_migra'@'localhost';

-- Usuário só de backup (leitura)
CREATE USER IF NOT EXISTS 'atm_backup'@'localhost' IDENTIFIED BY 'TROQUE_POR_SENHA_FORTE_3';
GRANT SELECT, SHOW VIEW, TRIGGER, LOCK TABLES, EVENT ON atm_db.* TO 'atm_backup'@'localhost';

-- Tabela de sessões criada antes, para o app não precisar de permissão CREATE (depois: SESSION_CRIAR_TABELA=false)
USE atm_db;
CREATE TABLE IF NOT EXISTS sessions (
  session_id varchar(128) COLLATE utf8mb4_bin NOT NULL,
  expires int(11) unsigned NOT NULL,
  data mediumtext COLLATE utf8mb4_bin,
  PRIMARY KEY (session_id)
) ENGINE=InnoDB;

-- Limpeza de contas perigosas (confira o que existe antes:  SELECT user, host FROM mysql.user;)
DELETE FROM mysql.user WHERE user = '';                                                    -- usuários anônimos
DELETE FROM mysql.user WHERE user = 'root' AND host NOT IN ('localhost', '127.0.0.1', '::1'); -- root remoto
FLUSH PRIVILEGES;
-- Depois: no .env do app use DB_USER=atm_app / DB_PASS=...; para migrar, rode os scripts com atm_migra.
