> 数据库 > MySQL >

MySQL 安全管理

1.用户管理
MySQL将帐户存储在系统数据库mysql的user表,MySQL用户名最长可达32个字符

查看所有用户
select user,host,authentication_string from user;

查看当前用户的权限
show grants;

查看gg用户权限
show grants for gg;

添加用户,%是通配符,代表任何ip
CREATE USER 'finley'@'%' IDENTIFIED BY 'password';
添加权限
GRANT ALL PRIVILEGES ON . TO finley@'%' WITH GRANT OPTION;
修改密码
alter user gg@'%' identified by '111111';

撤销权限
revoke all on . from finley@'%';
删除用户
drop user finley;

刷新权限
FLUSH PRIVILEGES;
mysqladmin -u root -p flush-privileges
mysqladmin -u root -p reload

2.角色管理
创建角色:角色名称与用户帐户名称非常相似,并且由格式的用户部分和主机部分组成,主机部分可以省略,默认为%
CREATE ROLE 'dev';

为角色??分配权限,与为用户帐户分配权限的语法相同
GRANT ALL ON . TO 'dev';

撤销角色权限
revoke all on . from dev;

使用角色分配为用户分配权限
CREATE USER 'dev1'@'localhost' IDENTIFIED BY 'dev1pass';
GRANT 'dev' TO 'dev1'@'localhost';

撤销用户权限
REVOKE dev FROM 'dev1'@'localhost';

删除角色
drop role 'dev';

3.资源限制
设置帐户资源限制
CREATE USER 'francis'@'localhost' IDENTIFIED BY 'frank'
WITH MAX_QUERIES_PER_HOUR 20 帐户每小时可以发出的查询数
MAX_UPDATES_PER_HOUR 10 帐户每小时可以发布的更新次数
MAX_CONNECTIONS_PER_HOUR 5 帐户每小时可以连接到服务器的次数
MAX_USER_CONNECTIONS 2; 帐户与服务器同时连接的数量

修改现有帐户的限制
ALTER USER 'francis'@'localhost' WITH MAX_QUERIES_PER_HOUR 100;

要将所有帐户的当前计数重置为零
FLUSH USER_RESOURCES
FLUSH PRIVILEGES
mysqladmin -u root -p flush-privileges
mysqladmin -u root -p reload

4.密码管理
手动过期帐户密码:还可以连接数据库,但是没有权限,修改密码后之前的权限生效
ALTER USER 'gg'@'%' PASSWORD EXPIRE;
flush privileges;

密码过期策略
[mysqld]
default_password_lifetime=180
default_password_lifetime=0

SET PERSIST default_password_lifetime = 180; 半年后过期
SET PERSIST default_password_lifetime = 0; 永不过期

要求密码每90天更改一次:
CREATE USER 'gg'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;
ALTER USER 'gg'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;

禁用密码到期:
CREATE USER 'gg'@'%' PASSWORD EXPIRE NEVER;
ALTER USER 'gg'@'%' PASSWORD EXPIRE NEVER;

禁止重复使用365天以前的最后6个密码
[mysqld]
password_history=6
password_reuse_interval=365

SET PERSIST password_history = 6;
SET PERSIST password_reuse_interval = 365;

允许重用之前,至少需要更改5个密码:
CREATE USER 'jeffrey'@'localhost' PASSWORD HISTORY 5;
ALTER USER 'jeffrey'@'localhost' PASSWORD HISTORY 5;

在允许重用之前至少需要365天:
CREATE USER 'jeffrey'@'localhost' PASSWORD REUSE INTERVAL 365 DAY;
ALTER USER 'jeffrey'@'localhost' PASSWORD REUSE INTERVAL 365 DAY;

结合这两种类型的重用限制:
CREATE USER 'jeffrey'@'localhost'
PASSWORD HISTORY 5
PASSWORD REUSE INTERVAL 365 DAY;
ALTER USER 'jeffrey'@'localhost'
PASSWORD HISTORY 5
PASSWORD REUSE INTERVAL 365 DAY;

双密码支持,8.0.14版本以后
建立 新的主密码,将当前密码保留为辅助密码
ALTER USER 'gg'@'%' IDENTIFIED BY '111111' RETAIN CURRENT PASSWORD;

删除辅助密码
ALTER USER 'gg'@'%' DISCARD OLD PASSWORD;



(责任编辑:IT)