8.权限管理
1.用户的权限
用户的权限:指的是一个数据库用户可以对数据进行操作的能力,最简单的例子是:能飞对表进行增删改查等操作。
调用的数据库:MySQL中的User表格。
本质:对MySQL.User进行增删改查。
(1)查看数据库中的用户数据
use mysql;
select * from user;
(2)创建新的用户:
-- 创建用户:create user 用户名 identified by '密码';
create user Edwin identified by '987654';
/*
注意:
必须拥有mysql数据库的全局CREATE USER权限,或拥有INSERT权限。
只能创建用户,不能赋予权限。
用户名,注意引号:如 'user_name'@'192.168.1.1'
密码也需引号,纯数字密码也要加引号
要在纯文本中指定密码,需忽略PASSWORD关键词。要把密码指定为由PASSWORD()函数返回的混编值,需包含关键字PASSWORD
*/
-- 修改密码:1.修改当前登录用户密码
set password = password('112233445566');
-- 修改密码:2.修改指定的用户密码
set password for Edwin = password('998877665544');
-- 删除用户
drop user Edwin;
(3)重命名和赋予权限:
-- 用户重命名:rename user 旧名 to 新名;
rename user Edwin to EdwinD;
-- 用户授权:grant + 权限类型 + on (作用的)库.表 to 用户名
-- 权限类型:all privileges-全部权限,除了给别的用户赋予权限,其他都能干。
grant all privileges on *.* to EdwinD;
-- 撤销权限:revoke 权限名 on (作用的)库.表 from 用户名
revoke all privileges on *.* from EdwinD;
(4)查看权限:
-- 查看权限:获得某个用户的权限赋予代码。
show grants for EdwinD;
-- GRANT ALL PRIVILEGES ON *.* TO 'EdwinD'@'%' IDENTIFIED BY PASSWORD '*24CC39FC2BFEE6A7FD5271776FAA33F7FF351258'
-- 查看root权限:获得某个用户的权限赋予代码。
show grants for root@localhost;
-- GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY PASSWORD '*A4B6157319038724E3560894F7F932C8886EBFCF' WITH GRANT OPTION
-- WITH GRANT OPTION是root最特殊的一项,
(5)权限列表(参考)
-- 权限列表
ALL [PRIVILEGES] -- 设置除GRANT OPTION之外的所有简单权限
ALTER -- 允许使用ALTER TABLE
ALTER ROUTINE -- 更改或取消已存储的子程序
CREATE -- 允许使用CREATE TABLE
CREATE ROUTINE -- 创建已存储的子程序
CREATE TEMPORARY TABLES -- 允许使用CREATE TEMPORARY TABLE
CREATE USER -- 允许使用CREATE USER, DROP USER, RENAME USER和REVOKE ALL PRIVILEGES。
CREATE VIEW -- 允许使用CREATE VIEW
DELETE -- 允许使用DELETE
DROP -- 允许使用DROP TABLE
EXECUTE -- 允许用户运行已存储的子程序
FILE -- 允许使用SELECT...INTO OUTFILE和LOAD DATA INFILE
INDEX -- 允许使用CREATE INDEX和DROP INDEX
INSERT -- 允许使用INSERT
LOCK TABLES -- 允许对您拥有SELECT权限的表使用LOCK TABLES
PROCESS -- 允许使用SHOW FULL PROCESSLIST
REFERENCES -- 未被实施
RELOAD -- 允许使用FLUSH
REPLICATION CLIENT -- 允许用户询问从属服务器或主服务器的地址
REPLICATION SLAVE -- 用于复制型从属服务器(从主服务器中读取二进制日志事件)
SELECT -- 允许使用SELECT
SHOW DATABASES -- 显示所有数据库
SHOW VIEW -- 允许使用SHOW CREATE VIEW
SHUTDOWN -- 允许使用mysqladmin shutdown
SUPER -- 允许使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connections。
UPDATE -- 允许使用UPDATE
USAGE -- “无权限”的同义词
GRANT OPTION -- 允许授予权限
/* 表维护 */
-- 分析和存储表的关键字分布
ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE 表名 ...
-- 检查一个或多个表是否有错误
CHECK TABLE tbl_name [, tbl_name] ... [option] ...
option = {QUICK | FAST | MEDIUM | EXTENDED | CHANGED}
-- 整理数据文件的碎片
OPTIMIZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, tbl_name] ...
参考文献
《【狂神说Java】MySQL最新教程通俗易懂》
视频连接:https://www.bilibili.com/video/BV1NJ411J79W
《狂神说MySQL07:权限及如何设计数据库》
原文连接
2020.05.19