MySQL 安全管理

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

查看全部用户
select user,host,authentication_string from user;sql

查看当前用户的权限
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';ide

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

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

2.角色管理
建立角色:角色名称与用户账户名称很是类似,而且由格式的用户部分和主机部分组成,主机部分能够省略,默认为%
CREATE ROLE 'dev';资源

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

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

使用角色分配为用户分配权限
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;

相关文章
相关标签/搜索