插件窝 干货文章 mysql用户权限设置

mysql用户权限设置

权限 用户 username 授予 578    来源:    2025-03-30

MySQL 用户权限设置指南

MySQL 用户权限管理是数据库安全的重要组成部分。以下是关于 MySQL 用户权限设置的详细说明:

1. 查看现有用户权限

-- 查看所有用户
SELECT User, Host FROM mysql.user;

-- 查看特定用户权限
SHOW GRANTS FOR 'username'@'host';

2. 创建新用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • host 可以是:
    • localhost - 仅本地连接
    • % - 允许任何主机连接
    • 特定 IP 或域名

3. 授予权限

基本语法:

GRANT privilege_type ON database_name.table_name TO 'username'@'host';

常用权限类型

权限 说明
ALL PRIVILEGES 所有权限
CREATE 创建数据库/表
DROP 删除数据库/表
DELETE 删除表数据
INSERT 插入数据
SELECT 查询数据
UPDATE 更新数据
ALTER 修改表结构
INDEX 创建/删除索引
CREATE VIEW 创建视图
SHOW VIEW 查看视图
CREATE ROUTINE 创建存储过程
EXECUTE 执行存储过程
TRIGGER 创建/删除触发器

权限授予示例

-- 授予所有数据库的所有权限
GRANT ALL PRIVILEGES ON *.* TO 'username'@'host';

-- 授予特定数据库的所有权限
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';

-- 授予特定表的SELECT, INSERT权限
GRANT SELECT, INSERT ON database_name.table_name TO 'username'@'host';

-- 授予创建临时表权限
GRANT CREATE TEMPORARY TABLES ON database_name.* TO 'username'@'host';

4. 撤销权限

REVOKE privilege_type ON database_name.table_name FROM 'username'@'host';

5. 刷新权限

每次修改权限后,需要执行:

FLUSH PRIVILEGES;

6. 删除用户

DROP USER 'username'@'host';

7. 修改密码

-- MySQL 5.7.6及以上版本
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';

-- 旧版本
SET PASSWORD FOR 'username'@'host' = PASSWORD('new_password');

8. 最佳实践

  1. 最小权限原则:只授予用户完成工作所需的最小权限
  2. 限制主机访问:尽可能限制用户只能从特定主机访问
  3. 定期审查权限:定期检查并清理不必要的用户和权限
  4. 避免使用root:日常操作使用具有必要权限的普通用户
  5. 使用强密码:为所有用户设置复杂密码

9. 高级权限管理

授予权限并允许用户授予他人权限

GRANT privilege_type ON database_name.table_name TO 'username'@'host' WITH GRANT OPTION;

查看权限表

MySQL权限存储在以下几个系统表中: - mysql.user - 用户账户和全局权限 - mysql.db - 数据库级权限 - mysql.tables_priv - 表级权限 - mysql.columns_priv - 列级权限 - mysql.procs_priv - 存储过程和函数权限

通过合理设置MySQL用户权限,可以有效保障数据库安全性和数据完整性。