Skip to content

权限管理

sh
#导入数据库ems

# 配置mysql的路径
# 右击“此电脑”--属性 ---高级系统---环境变量----选择Administrator的用户变量中path ---编辑----新建---输入"C:\Program Files\MySQL\MySQL Server 5.6\bin"

#/*9.2.2创建用户  */
# 使用CREATE USER语句创建2个新用户,用户名分别为test1和test2、密码分别为123和456
CREATE USER 'test1'@'localhost' IDENTIFIED BY '123', 'test2'@'localhost' IDENTIFIED BY '456';

# 查询mysql.user表中用户test1的数据
SELECT HOST, USER FROM mysql.user WHERE USER = 'test1';

#/*多学一招:使用GRANT语句创建用户  */
# 基于MySQL 5.7.33版本,使用GRANT语句创建一个新用户,用户名为test3、密码为789,并授予该用户对数据库ems中的员工表emp有查询权限
GRANT SELECT ON ems.emp TO 'test3'@'localhost' IDENTIFIED BY '789';

# 查询mysql.user表中用户test3的数据
SELECT HOST, USER FROM mysql.user;

#/*9.2.3删除用户  */
# 用DROP USER语句删除用户test1
DROP USER 'test1'@'localhost';

# 使用DELETE语句删除用户test2
DELETE FROM mysql.user WHERE HOST='localhost' AND USER = 'test2';

#/*9.2.4修改用户密码  */
# 使用root用户连接数据库后创建普通用户ems_test
CREATE USER 'ems_test'@'localhost' IDENTIFIED BY '123';
FLUSH PRIVILEGES;

# 使用SET语句修改用户ems_test的密码,新密码为789
SET PASSWORD FOR 'ems_test'@'localhost' = PASSWORD('789');

#/*9.3.2授予权限  */
# 对ems_test用户授予数据库ems的员工表emp的SELECT权限,以及对empno和ename字段的插入权限
GRANT SELECT,INSERT(empno, ename) ON ems.emp TO 'ems_test'@'localhost';

#/*9.3.3查看权限  */
# 查看用户ems_test的授予表级权限
SELECT db,table_name,table_priv,column_priv FROM mysql.tables_priv WHERE USER = 'ems_test';

# 查看用户ems_test的授予列级权限
SELECT db,table_name,column_name,column_priv FROM mysql.columns_priv WHERE USER = 'ems_test';

# 使用SHOW GRANTS语句查看用户ems_test的权限信息
SHOW GRANTS FOR 'ems_test'@'localhost';

#/*9.3.4收回权限  */
#对ems_test用户在ems.emp表中字段empno和ename的INSERT权限进行收回
REVOKE INSERT(empno, ename) ON ems.emp FROM 'ems_test'@'localhost';
FLUSH PRIVILEGES;

# 从mysql.columns_priv中查看ems_test用户的列权限
SELECT db,table_name,column_name,column_priv FROM mysql.columns_priv WHERE USER = 'ems_test';

# 收回用户ems_test的所有权限
REVOKE ALL PRIVILEGES  ON ems.emp FROM 'ems_test'@'localhost';

# 使用SHOW GRANTS语句查看用户ems_test的权限信息
SHOW GRANTS FOR 'ems_test'@'localhost';