温馨提示×

MariaDB在Debian上的权限如何设置

小樊
41
2025-12-17 02:38:39
栏目: 云计算

在 Debian 上设置 MariaDB 权限的完整步骤

一 基础安全与初始化

  • 安装并启动服务:
    • 执行:sudo apt update && sudo apt install mariadb-server -y
    • 检查状态:sudo systemctl status mariadb(应显示 active/running)
  • 运行安全初始化脚本,按提示完成:
    • 执行:sudo mysql_secure_installation
    • 建议选择:设置/确认 root 密码、删除匿名用户、禁止 root 远程登录、移除测试库、重载权限表
    • 说明:Debian 12 上常见为使用 unix_socket 认证保护本地 root,若选择设置密码,后续可用密码登录

二 创建用户与授予权限

  • 登录数据库:sudo mysql -u root -p
  • 常用授权范式(按需选择其一或组合):
    • 为应用创建最小权限用户(推荐)
      • 创建数据库:CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
      • 创建用户:CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'StrongPass!';
      • 授予权限:GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON appdb.* TO 'appuser'@'localhost';
    • 只读账号:
      • GRANT SELECT ON appdb.* TO 'reader'@'localhost' IDENTIFIED BY 'R0Pass!';
    • 允许远程应用连接(不建议对 root 开放远程):
      • CREATE USER 'appuser'@'%' IDENTIFIED BY 'StrongPass!';
      • GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'%';
    • 使权限生效:FLUSH PRIVILEGES;
  • 说明:MariaDB 的账户由“用户名+主机”共同确定,'root'@'localhost''root'@'%' 是不同账户;生产环境不建议开放 root 远程访问

三 远程访问与防火墙

  • 修改绑定地址(仅当需要远程访问时):
    • 编辑:sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
    • [mysqld] 段设置:bind-address = 0.0.0.0
    • 重启服务:sudo systemctl restart mariadb
  • 防火墙放行 3306 端口(如使用 UFW):sudo ufw allow 3306/tcp
  • 远程连接测试:mysql -h <服务器IP> -u appuser -p
  • 安全建议:优先使用 SSH 隧道内网/VPC 访问;若必须公网,限制来源 IP、使用强密码/证书并仅授予必要权限

四 常用维护与排错

  • 查看用户与主机:SELECT user, host FROM mysql.user;
  • 查看某用户权限:SHOW GRANTS FOR 'appuser'@'localhost';
  • 撤销权限:REVOKE ALL PRIVILEGES ON appdb.* FROM 'appuser'@'localhost';(随后 FLUSH PRIVILEGES;
  • 修改密码(示例):ALTER USER 'appuser'@'localhost' IDENTIFIED BY 'NewStrongPass!';
  • 忘记 root 密码的恢复思路(维护窗口内操作):
    • 停止服务:sudo systemctl stop mariadb
    • 以跳过权限检查方式启动:sudo mysqld_safe --skip-grant-tables --skip-networking &
    • 登录并修改密码:mysqlALTER USER 'root'@'localhost' IDENTIFIED BY 'NewRootPass!';FLUSH PRIVILEGES;
    • 关闭安全模式并重启:sudo mysqladmin shutdownsudo systemctl start mariadb
  • 配置修改后未生效多为未重启或缓存未刷新,执行 sudo systemctl restart mariadbFLUSH PRIVILEGES;

0