MySQL-用户、权限与安全

1.用户管理

1.1 创建用户

创建用户需要具有CREATE USER权限。
命令:
CREATE USER 用户名 IDENTIFIED BY '密码';
例如:

CREATE USER ben IDENTIFIED BY 'qwe123QWE!@#';

MySQL使用'用户名'@'主机名'来标识一个用户,不指定host的情况下默认为%(所有主机都可以访问)。如果需要指定主机可以是用 用户名@主机名
使用IDENTIFIED AS '密码的hash值',可以避免明文密码的泄露。

1.2 修改用户名、密码

命令:
RENAME USER 旧用户名 TO 新用户名;
例如:

RENAME USER ben TO bforta;

1.3 删除用户

命令:
DELETE USER 用户名;
例如:

DELETE USER bforta;

1.4 设置用户密码有效期

设置过期用户,命令:
ALTER USER 用户名@主机名 PASSWORD EXPIRE;
例如:

ALTER USER ben@localhost PASSWORD EXPIRE;

用户在登录时,需要更改密码,命令:
ALTER USER 用户名@主机名 IDENTIFIED BY '密码';
例如:

ALTER USER ben@localhost IDENTIFIED BY 'qwe123QWE!@#';

每个固定时间修改密码,例如:

# 每个90天修改密码
ALTER USER ben@localhost PASSWORD EXPIRE INTERVAL 90 DAY;

1.5 锁定、解锁用户

例如:

# LOCK锁定,UNLOCK解锁
ALTER USER ben@localhost ACCOUNT LOCK/UNLOCK;

1.6 更改口令

命令:
**SET PASSWORD FOR 用户名 = Password('密码');
例如:

SET PASSWORD FOR bforta = Password('mima');

不指定用户名时,更新当前登录用户的口令。

2. 权限管理

2.1 授予权限

命令:
GRANT 权限 ON 范围 TO 用户;
例如:

GRANT SELECT ON company.* TO ben;

范围的大小:
数据库:数据库名.*
表:数据库名.表名
列:SELECT(列名1,列名2,...) ON 数据库名.表名

ALL 权限代表除了GRANT权限之外的所有权限。

2.2 检查权限

命令:
SHOW GRANTS FOR 用户名;
例如:

SHOW GRANTS FOR ben;

2.3 撤销权限

命令:
REVOKE 权限 ON 范围 FROM 用户名;
例如:

REVOKE SELECT ON employees FROM ben;

关于修改mysql.user表。
修改mysql.user也能够实现创建用户、授予权限的功能。
但是不会像GRANT、REVOKE、SET PASSWORD或RENAME USER等账户管理语句,会将修改立即加载到内存。
需要手动刷新,使用命令:FLUSH PRIVILEGES;

2.4 查看权限

命令:
SHOW GRANTS FOR 用户名;
权限清单:

权限 说明
ALL 除了GRANT OPTION外的所有权限
ALTER 使用ALTER TABLE修改表
ALTER ROUTINE 使用ALTER/DROP PROCEDURE(存储过程)
CREATE 使用CREATE TABLE创建表
CREATE ROUTINE 使用CREATE PROCEDURE创建存储过程
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 使用CALL和存储过程
FILE 使用SELECT INTO OUTFILE和LOAD DATA INFILE(全局权限,导入、导出数据)
GRANT OPTION 使用GRANT和REVOKE权限授予和收回
INDEX 使用CREATE INDEX和DROP INDEX创建和删除索引
INSERT 使用INSERT插入数据
LOCK TABLES 使用LOCK TABLES锁表
PROCESS 使用SHOW FULL PROCESSLIST(查看所有进程)
RELOAD 使用FLUSH
REPLICATION CLIENT 服务器位置的访问
REPLICATION SLAVE 由复制从属使用
SELECT 使用SELECT(读表)
SHOW DATABASES 使用SHOW DATABASES
SHOW VIEW 使用SHOW CREATE VIEW
SHUTDOWN 使用mysqladmin shutdown(用来关闭MySQL)
SUPER 使用CHANGE MASTER、KILL、LOGS、PURGE、MASTER和SET GLOBAL。还允许mysqladmin调试登录
UPDATE 使用UPDATE(修改表)
USAGE 无访问权限

3. 角色管理

3.1 创建角色

命令:
CREATE ROLE 角色名1, 角色名2,...;
例如:

CREATE ROLE 'app_read_only','app_writes','app_developer';

3.2 为角色分配权限、为用户分配角色

例如:

# 角色分配权限
GRANT SELECT ON employees.* TO 'app_read_only';
GRANT INSERT,UPDATE,DELETE ON employees.* TO 'app_writes';

# 为用户分配角色
GRANT 'app_read_only' TO ben@localhost;

角色可以看做一个权限包,其中包含多个权限,方便给用户授予权限。

4. 安全

安全内容后续补全。

posted @ 2020-04-14 17:30  MeTwo  阅读(360)  评论(0)    收藏  举报