一、库权限控制
基本的MySQL用户:
1.用户:只拥有登录mysql系统的权限,但是没有访问具体的数据库或数据表的权限;需要使用CREATE USER创建。
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';
2.数据库用户:拥有访问数据库的权限,但是不具备管理数据库的权限;需要使用GRANT授权给指定的用户。
GRANT SELECT, INSERT, UPDATE ON mydatabase.* TO 'user'@'localhost' IDENTIFIED BY 'password';
3.管理员:拥有管理MySQL的权限,可以授权给其他用户;可以使用GRANT授权,通过WITH GRANT选项允许其他用户授权。
GRANT CREATE, ALTER, DROP, GRANT OPTION ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
4.ROOT:具有最高权限的管理员,拥有所有数据库和表的权限;ROOT可以管理其他管理员与用户。
基本的权限操作:
1. 创建一个新的MySQL用户:
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'password';
2. 分配SELECT,INSERT,UPDATE权限:
GRANT SELECT,INSERT,UPDATE ON mydatabase.* TO 'user'@'localhost' IDENTIFIED BY 'password';
3. 分配所有权限:
GRANT ALL PRIVILEGES ON mydatabase.* TO 'user'@'localhost' IDENTIFIED BY 'password';
4. 将用户的权限回收:
REVOKE ALL PRIVILEGES ON mydatabase.* FROM 'user'@'localhost';
二、表权限控制
MySQL表权限是指对MySQL数据库中表的访问控制。通过设置表权限,可以限制用户对表的操作,保护数据的安全性和完整性。
- SELECT:允许用户读取一行或多行数据
- INSERT:允许用户向数据表插入一行或多行数据
- UPDATE:允许用户修改数据表中的数据,并且可以选择一个或多个列进行更新
- DELETE:允许用户从数据表中删除一行或多行数据
- CREATE:允许用户创建新的数据表或者数据库
- ALTER:允许用户修改数据表结构
- DROP:允许用户删除数据表或者整个数据库
- INDEX:允许用户创建索引
- REFERENCES:允许用户创建外键
- ALL:允许用户进行所有操作
- 创建用户:
在MySQL中创建用户是设置表权限的第一步。可以使用CREATE USER语句创建用户。
# 创建名为"testuser"的用户,并授予SELECT权限:
CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
- 授权:
# GRANT表示授权,
# SELECT和INSERT为授权的操作,
# database.table指定要授权的数据库和表,
# 'user'@'localhost'表示要被授权的用户名和主机名。
GRANT SELECT,INSERT ON database.table TO 'user'@'localhost';
如果想授权全部操作,则可以使用ALL关键字
# ALL PRIVILEGES授权了该用户在指定数据库中进行所有操作的权限。
# database.*授权该用户对指定数据库的所有表和视图都具有完全的权限。
#FLUSH PRIVILEGES命令用于刷新权限,以确保MySQL的权限系统已更新。
GRANT ALL PRIVILEGES ON database.* TO 'user'@'localhost';
FLUSH PRIVILEGES;
- 显示mysql所有用户以及权限
# user表示用户名,
# host表示用户所在的主机,
# authentication_string表示该用户的加密密码或者密码哈希值。
SELECT user, host, authentication_string FROM mysql.user;
- 查看每个用户的具体权限
SHOW GRANTS FOR 'user'@'localhost';
- 撤销表权限:
在MySQL中,使用REVOKE语句撤销用户对表的权限。
REVOKE SELECT ON database.table FROM 'user'@'localhost';