Debian MariaDB用户权限设置指南
导读:Debian MariaDB 用户权限设置指南 一 环境准备与登录 安装与启动 更新软件源并安装:sudo apt update && sudo apt install mariadb-server -y 启动并设置开机...
Debian MariaDB 用户权限设置指南
一 环境准备与登录
- 安装与启动
- 更新软件源并安装:sudo apt update & & sudo apt install mariadb-server -y
- 启动并设置开机自启:sudo systemctl start mariadb & & sudo systemctl enable mariadb
- 运行安全脚本:sudo mysql_secure_installation(设置 root 密码、删除匿名用户、禁止 root 远程登录等)
- 登录数据库
- 本地 root 登录:sudo mysql -u root -p
- 某些 Debian 9 环境可能出现 ERROR 1698 (28000),可直接用系统 root 执行 sudo mysql 进入;如需密码登录,可参考 /etc/mysql/debian.cnf 中的凭据或改用 sudo 方式。
二 用户与权限核心操作
- 创建用户(按来源主机区分)
- 本地仅:CREATE USER ‘app’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;
- 指定网段:CREATE USER ‘app’@‘192.168.1.%’ IDENTIFIED BY ‘StrongPass!’;
- 任意主机(谨慎):CREATE USER ‘app’@‘%’ IDENTIFIED BY ‘StrongPass!’;
- 授予权限(最小权限原则)
- 单库全部:GRANT ALL PRIVILEGES ON mydb. TO ‘app’@‘192.168.1.%’; *
- 单库读写:GRANT SELECT, INSERT, UPDATE, DELETE ON mydb. TO ‘app’@‘localhost’; *
- 全局只读(谨慎):GRANT SELECT ON . TO ‘readonly’@‘%’;
- 管理类(谨慎):GRANT CREATE USER, CREATE DATABASE ON . TO ‘admin’@‘localhost’;
- 刷新权限:FLUSH PRIVILEGES;
- 查看与撤销
- 查看权限:SHOW GRANTS FOR ‘app’@‘192.168.1.%’;
- 撤销权限:REVOKE INSERT, UPDATE ON mydb. FROM ‘app’@‘localhost’; *
- 删除用户:DROP USER ‘app’@‘%’;
- 角色(MariaDB 10.2+)
- 创建角色:CREATE ROLE ‘read_role’;
- 给角色授权:GRANT SELECT ON mydb. TO ‘read_role’; *
- 授予用户:GRANT ‘read_role’ TO ‘app’@‘localhost’; 。
三 远程访问与网络配置
- 修改绑定地址
- 编辑:sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
- 将 bind-address = 127.0.0.1 改为 bind-address = 0.0.0.0(或注释该行以监听所有地址)
- 可选:更改端口(如 3306 → 33606),注意防火墙与安全组策略
- 重启服务:sudo systemctl restart mariadb
- 防火墙与云安全组
- 开放 3306(或自定义端口),仅允许可信来源网段
- 创建远程用户并授权
- 示例:CREATE USER ‘remote’@‘203.0.113.10’ IDENTIFIED BY ‘StrongPass!’;
- 授权:GRANT ALL PRIVILEGES ON mydb. TO ‘remote’@‘203.0.113.10’; *
- 刷新:FLUSH PRIVILEGES;
- 连接测试
- 远程:mysql -u remote -p -h YOUR_SERVER_IP -P 3306。
四 安全加固与最佳实践
- 禁止 root 远程登录,应用使用专用账户与最小权限
- 避免使用 ‘%’ 通配,优先限定为 localhost 或明确的 IP/网段
- 使用强密码策略(长度 ≥ 12,包含大小写字母、数字与符号)
- 定期清理无用账户与过期权限,变更后及时 FLUSH PRIVILEGES;
- 远程仅开放必要端口,配合防火墙/安全组白名单。
五 常见问题与故障排查
- 登录被拒
- 核对用户名与 Host 是否匹配(如 ‘app’@‘localhost’ 与 ‘app’@‘%’ 不同)
- 确认密码正确,必要时重置:ALTER USER ‘app’@‘localhost’ IDENTIFIED BY ‘NewPass!’; FLUSH PRIVILEGES;
- 忘记 root 密码
- 停止服务:sudo systemctl stop mariadb
- 无权限模式启动:sudo mysqld_safe --skip-grant-tables &
- 登录并修改:UPDATE mysql.user SET password=PASSWORD(‘NEW-PASSWORD’) WHERE User=‘root’; FLUSH PRIVILEGES;
- 关闭无权限进程并正常启动:sudo mysqladmin -u root -p shutdown 后 sudo systemctl start mariadb
- 权限未生效
- 执行:FLUSH PRIVILEGES;
- 复核账户 Host 与授权范围是否一致
- 远程连不通
- 核对 bind-address、端口、防火墙/云安全组、用户 Host 是否为客户端 IP 或网段。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian MariaDB用户权限设置指南
本文地址: https://pptw.com/jishu/751645.html
