以下是CentOS下MySQL权限设置的核心技巧,涵盖用户管理、权限分配及安全配置:
创建用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
-- 例:允许本地登录
CREATE USER 'dev'@'localhost' IDENTIFIED BY '123456';
-- 例:允许远程登录(将'localhost'改为'%')
CREATE USER 'dev'@'%' IDENTIFIED BY '123456';
注:FLUSH PRIVILEGES;需在修改后执行使生效。
授予权限
GRANT ALL PRIVILEGES ON *.* TO '用户名'@'主机名';
GRANT SELECT, INSERT, UPDATE ON 数据库名.* TO '用户名'@'主机名';
GRANT SELECT, DELETE ON 数据库名.表名 TO '用户名'@'主机名';
撤销权限
REVOKE 权限 ON 对象 FROM '用户名'@'主机名';
-- 例:撤销对db1库的所有权限
REVOKE ALL PRIVILEGES ON db1.* FROM 'dev'@'localhost';
角色管理(MySQL 8.0+)
-- 创建角色并授予权限
CREATE ROLE 'role_name';
GRANT SELECT, INSERT ON db1.* TO 'role_name';
-- 将角色赋予用户
GRANT 'role_name' TO '用户名'@'主机名';
远程访问控制
/etc/my.cnf,设置bind-address=0.0.0.0允许远程连接(需配合防火墙)。GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' IDENTIFIED BY '密码';
安全增强配置
UPDATE mysql.user SET host='localhost' WHERE user='root';
FLUSH PRIVILEGES;
GRANT ALL PRIVILEGES ON *.* TO '用户'@'主机名' REQUIRE SSL;
查看权限
-- 查看当前用户权限
SHOW GRANTS;
-- 查看指定用户权限
SHOW GRANTS FOR '用户名'@'主机名';
删除用户
DROP USER '用户名'@'主机名';
定期审计
mysql命令行或工具(如auditd)监控异常登录和权限滥用。ALL PRIVILEGES,按需分配最小必要权限。firewall-cmd)限制IP段。参考来源: