Debian 上 MariaDB 权限设置实操指南
一 环境准备与登录
sudo apt update && sudo apt install mariadb-server -ysudo systemctl start mariadb && sudo systemctl enable mariadbsudo mysql_secure_installation(设置 root 密码、删除匿名用户、禁止 root 远程登录等)sudo mysql -u root -psudo mysql(该版本默认使用 unix_socket 认证),随后建议创建带密码的管理员用户并禁用 root 远程登录。二 用户与权限核心操作
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 shop_%.* TO 'app_rw'@'192.168.1.%';GRANT SELECT ON *.* TO 'readonly'@'localhost';GRANT ALL ON mydb.* TO 'admin'@'localhost' WITH GRANT OPTION;FLUSH PRIVILEGES;SHOW GRANTS FOR 'app'@'192.168.1.%';REVOKE DELETE,UPDATE ON mydb.* FROM 'app'@'192.168.1.%';DROP USER 'app'@'192.168.1.%';CREATE ROLE 'read_role';GRANT SELECT ON mydb.* TO 'read_role';GRANT 'read_role' TO 'app'@'192.168.1.%';。三 远程访问与防火墙
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnfbind-address = 127.0.0.1 改为 bind-address = 0.0.0.0(或注释掉该行)sudo systemctl restart mariadbsudo ufw allow 3306/tcpsudo firewall-cmd --add-port=3306/tcp --permanent && sudo firewall-cmd --reload四 常见场景示例
CREATE USER 'app'@'192.168.1.%' IDENTIFIED BY 'StrongPass!';GRANT SELECT,INSERT,UPDATE,DELETE ON myapp.* TO 'app'@'192.168.1.%';FLUSH PRIVILEGES;CREATE USER 'report'@'192.168.1.50' IDENTIFIED BY 'RptPass!';GRANT SELECT ON analytics.* TO 'report'@'192.168.1.50';FLUSH PRIVILEGES;CREATE USER 'dba'@'localhost' IDENTIFIED BY 'DBAPass!';GRANT ALL PRIVILEGES ON *.* TO 'dba'@'localhost' WITH GRANT OPTION;FLUSH PRIVILEGES;'root'@'%';远程账户尽量限定为 IP 段;为账户设置强密码并定期轮换;变更权限后务必执行 FLUSH PRIVILEGES;。五 忘记 root 密码的恢复步骤
sudo systemctl stop mariadbsudo mysqld_safe --skip-grant-tables --skip-networking &mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass!';UPDATE mysql.user SET Password=PASSWORD('NewStrongPass!') WHERE User='root' AND Host='localhost';FLUSH PRIVILEGES;sudo mysqladmin -u root -p shutdown 然后 sudo systemctl start mariadb