关于mysql权限管理


# 用户账户
# MySQL用户账户由用户名和主机名组成,表示一个特定用户从特定主机连接到MySQL服务器。例如,'username'@'hostname'。每个用户账户都有其独立的密码和权限。
# 权限等级
# MySQL的权限分为多个等级,从粗粒度到细粒度:

# 全局权限:影响整个MySQL服务器。存储在 mysql.user 表中。
# 数据库权限:影响特定数据库中的所有对象。存储在 mysql.db 表中。
# 表权限:影响特定数据库中的特定表。存储在 mysql.tables_priv 表中。
# 列权限:影响特定表中的特定列。存储在 mysql.columns_priv 表中。
# 过程权限:影响存储过程和函数。存储在 mysql.procs_priv 表中。

# 权限类型
# MySQL提供了多种权限类型,每种权限控制一种特定的操作。常见的权限包括:
#
# ALL PRIVILEGES: 授予所有权限。
# SELECT: 允许查询表数据。
# INSERT: 允许插入数据到表中。
# UPDATE: 允许更新表中的数据。
# DELETE: 允许删除表中的数据。
# CREATE: 允许创建数据库和表。
# DROP: 允许删除数据库和表。
# INDEX: 允许创建和删除索引。
# ALTER: 允许修改表结构。
# GRANT OPTION: 允许将权限授予其他用户。
管理用户和权限
通过SQL语句可以管理用户和权限,常用的语句有:

# 创建用户:
# CREATE USER 'username'@'hostname' IDENTIFIED BY 'password';
# 比如:(本地账号)CREATE USER 'xiaoming'@'localhost' IDENTIFIED BY '1234';
# 比如:(远程账号)CREATE USER 'xiaoming'@'客户端ip(192.168.45.100)' IDENTIFIED BY '1234';
# 比如:(该用户可以从任何主机连接到MySQL服务器。)CREATE USER 'xiaoming'@'%' IDENTIFIED BY '1234';
# 删除用户:
# DROP USER 'username'@'hostname';
# 授予权限:
# GRANT SELECT, INSERT ON database.table TO 'username'@'hostname';
# 这条语句的作用是授予用户engo1从localhost(本地主机)连接到MySQL服务器时,对所有数据库和所有表的所有权限。
# GRANT ALL ON *.* TO 'engo1'@'localhost';
# GRANT ALL ON *.* TO 'engo1'@'localhost';
# 用户全局权限 (usr: *.*)这将授予用户对所有数据库和所有表的所有权限。
# GRANT ALL PRIVILEGES ON *.* TO 'username'@'host';
# 数据库级别权限 (db: db1.*)这个表示对特定数据库的权限。db1.*表示数据库db1中的所有表。
# GRANT SELECT, INSERT, UPDATE ON db1.* TO 'username'@'host';
# 表级别权限 (tables_priv: db1.t1)这个表示对特定表的权限。db1.t1表示db1数据库中的t1表
# GRANT SELECT, UPDATE ON db1.t1 TO 'username'@'host';
# 列级别权限 (columns_priv: id, name)这个表示对特定表的特定列的权限。id, name表示t1表中的id和name列。
# GRANT SELECT (id, name) ON db1.t1 TO 'username'@'host';
# 撤销权限:
# REVOKE SELECT, INSERT ON database.table FROM 'username'@'hostname';
# 查看权限:
# SHOW GRANTS FOR 'username'@'hostname';
# 修改用户密码:
# ALTER USER 'username'@'hostname' IDENTIFIED BY 'new_password';
posted @ 2024-05-30 01:29  GOZO  阅读(28)  评论(0编辑  收藏  举报