Debian MariaDB权限管理如何做
导读:Debian 上 MariaDB 权限管理实操指南 一 基础安全与初始化 安装后执行安全初始化,按提示完成加固(设置 root 认证方式、移除匿名用户、禁止 root 远程登录、删除 test 库等): 命令:sudo mysql_se...
Debian 上 MariaDB 权限管理实操指南
一 基础安全与初始化
- 安装后执行安全初始化,按提示完成加固(设置 root 认证方式、移除匿名用户、禁止 root 远程登录、删除 test 库等):
- 命令:
sudo mysql_secure_installation
- 命令:
- 加固完成后,建议仅允许 root@localhost 登录,业务账户按需创建并限制来源主机。上述步骤在 Debian 12 的 MariaDB 10.11 环境中通用。
二 用户与权限的核心概念
- 账户由 ‘用户名’@‘主机’ 唯一确定,主机可使用 localhost、IP、域名、%(任意主机) 及通配符;同用户名不同主机属于不同账户。
- 权限按层级生效:user 表 → db 表 → tables_priv 表 → columns_priv 表,越具体的作用域优先级越高;也可通过 GRANT/REVOKE 管理。
- 常用管理语句:CREATE USER、DROP USER、RENAME USER、GRANT、REVOKE、SHOW GRANTS、SET PASSWORD。
- 权限变更通常通过 GRANT/REVOKE 自动刷新;若直接修改权限表,需执行 FLUSH PRIVILEGES 使内存权限表同步。
三 常用操作命令清单
- 登录数据库:
sudo mysql -u root -p - 创建用户(按来源主机限制):
- 本地:
CREATE USER 'app'@'localhost' IDENTIFIED BY 'StrongPass!'; - 指定网段:
CREATE USER 'app'@'192.168.1.%' IDENTIFIED BY 'StrongPass!'; - 任意主机(谨慎):
CREATE USER 'app'@'%' IDENTIFIED BY 'StrongPass!';
- 本地:
- 授予权限(最小权限原则):
- 单库读写:
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app'@'192.168.1.%'; - 全库管理:
GRANT ALL PRIVILEGES ON mydb.* TO 'app'@'192.168.1.%'; - 全局管理(极少使用):
GRANT CREATE USER, CREATE DATABASE ON *.* TO 'admin'@'localhost';
- 单库读写:
- 刷新权限:
FLUSH PRIVILEGES; - 查看权限:
SHOW GRANTS FOR 'app'@'192.168.1.%'; - 撤销权限:
REVOKE ALL PRIVILEGES ON mydb.* FROM 'app'@'192.168.1.%'; - 修改密码:
SET PASSWORD FOR 'app'@'192.168.1.%' = PASSWORD('NewPass!'); - 删除用户:
DROP USER 'app'@'192.168.1.%'; - MariaDB 10.2+ 可用角色简化管理:
- 创建角色:
CREATE ROLE 'read_role'; - 授权角色:
GRANT SELECT ON mydb.* TO 'read_role'; - 授予用户:
GRANT 'read_role' TO 'app'@'192.168.1.%';
- 创建角色:
四 远程访问与网络配置
- 创建专用于远程的账户(例如允许某网段):
CREATE USER 'remote'@'192.168.1.%' IDENTIFIED BY 'StrongPass!'; - 授予该账户对目标库的权限:
GRANT ALL PRIVILEGES ON appdb.* TO 'remote'@'192.168.1.%'; - 修改 MariaDB 配置以监听外部地址:编辑 /etc/mysql/mariadb.conf.d/50-server.cnf(或主配置文件),注释或调整
bind-address = 127.0.0.1为bind-address = 0.0.0.0(或注释该行以监听所有地址)。 - 确保系统防火墙放行 3306/TCP(如使用 ufw:
sudo ufw allow 3306/tcp)。 - 注意:开放远程务必限定来源网段、使用强密码,并仅授予必要权限。
五 排错与最佳实践
- 查看当前连接与来源主机:
SHOW PROCESSLIST;(定位异常来源或长时间会话)。 - 权限不生效时:确认是否对正确的 ‘user’@‘host’ 授权;若直接改表,执行 FLUSH PRIVILEGES;
;注意 REVOKE 必须指明与授予时一致的 作用域(如
mydb.*),否则可能看似“没回收”。 - 忘记 root 密码的应急(仅限本机维护):
- 停止服务:
sudo systemctl stop mariadb - 无权限模式启动:
sudo mysqld_safe --skip-grant-tables & - 登录并重置:
mysql→UPDATE mysql.user SET Password=PASSWORD('NEWPASS') WHERE User='root' AND Host='localhost';→FLUSH PRIVILEGES; - 关闭无权限进程并正常启动:
sudo mysqladmin -u root -p shutdown→sudo systemctl start mariadb
- 停止服务:
- 安全建议:
- 遵循 最小权限原则,避免使用 ALL PRIVILEGES ON .;
- 优先使用 localhost 或明确的 IP/网段,谨慎使用 %;
- 定期审计用户与权限:
SELECT User,Host FROM mysql.user;、SHOW GRANTS FOR 'user'@'host';。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian MariaDB权限管理如何做
本文地址: https://pptw.com/jishu/771500.html
