MySQL-权限管理

7/11/2023 MySQL

# 权限分类

# 1. 数据操作权限

  • SELECT: 允许用户查询数据。
  • INSERT: 允许用户插入新数据。
  • UPDATE: 允许用户更新现有数据。
  • DELETE: 允许用户删除数据。

# 2. 数据定义权限

  • CREATE: 允许用户创建新的数据库、表、索引、视图、触发器等。
  • DROP: 允许用户删除数据库、表、索引、视图、触发器等。
  • ALTER: 允许用户修改数据库、表的结构,例如添加或删除列、更改列的数据类型等。

# 3. 数据控制权限

  • INDEX: 允许用户创建或删除索引。
  • REFERENCES: 允许用户创建外键约束。

# 4. 系统管理权限

  • GRANT OPTION: 允许用户授予或撤销其他用户的权限。
  • SHUTDOWN: 允许用户关闭MySQL服务器。
  • PROCESS: 允许用户查看服务器上正在运行的进程信息。
  • FILE: 允许用户读取、写入和执行服务器上的文件。
  • SUPER: 提供一些高级权限,如关闭线程、杀死连接、设置全局变量等。

# 5. 其他权限

  • EXECUTE: 允许用户执行存储过程和函数。
  • SHOW DATABASES: 允许用户查看所有数据库的名称。
  • TRIGGER: 允许用户管理触发器。
  • CREATE ROUTINE: 允许用户创建存储过程和函数。
  • ALTER ROUTINE: 允许用户修改存储过程和函数。
  • EVENT: 允许用户管理事件调度器。

# 授权命令

授权示例

GRANT privileges ON database.table TO 'username'@'hostname';
1

授权user用户所有权限

grant all privileges on *.* to user@"%";
1

授权自定义函数执行权限

grant execute on function select_all_subcolumn to 'root'@'%'
1

查询系统中有哪些用户

select host,user from mysql.user
1

创建用户,并授权所有权限

CREATE USER 'username'@'192.168.1.100' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'192.168.1.100';
1
2
3

查询、修改函数的definer

select db, name, type, definer from mysql.proc where db = "aicms_sa_20210425" and name = "select_all_parentcolumn";

update mysql.proc set definer = "root@localhost" where db = "aicms_sa_20210425" and name = "select_all_parentcolumn";
1
2
3