03、MySQL安全管理和特性解析
本节主要讲MySQL的安全管理、角色使用、特定场景下的数据库对象、各版本特性以及存储引擎
03、MySQL安全管理和特性解析1、 用户和权限管理2、 MySQL角色管理3、 MySQL密码管理4、 用户资源限制5、 忘记root密码处理办法6、 SQL MODE详解7、 视图、存储过程、触发器的使用8、 MySQL5.5、5.6、5.7、8.0各个版本的特性5.5特性MySQL 5.6的特性MySQL 5.7的特性MySQL 8.0 新特性2、MySQL加列三种算法是什么?区别是什么?COPY 算法INPLACE 算法INSTANT 算法3、假如入你是DBA,一个新业务研发考虑使用5.6,请你说服他们使用 MySQL8.09、 MySQL各个存储引擎介绍1、InnoDB存储引擎和MyISAM存储引擎区别和适用场景?2、TokuDB有哪些应用场景?3、适用MEMORY存储引擎要注意哪些问题?4、CSV存储引整有哪些适用场景?5.为什么从MySQL5.5开始,MySQL默认的存储引擎改成了InnoDB?6.假如你管理的业务线,有多张MyISAM表,你会怎么处理?
1、 用户和权限管理
创建/删除用户
某个同事要申请一个haohao库的远程只读用户,他的IP是192.168.1.3 可移执行: CREATE USER 'haohao_r'@'192.168.1.3' IDENTIFIED BY 'password'; 如果是客户端多个网段可移植执行: CREATE USER 'haohao_r'@'192.168.1.%' IDENTIFIED BY 'password'; 查用户 select user,host from mysql.user; 删除用户 DROP USER 'haohao'@'192.168.1.%';
用户授权
GRANT insert,delete,select,update ON haohao.* TO 'haohao'@'localhost'; 如果要给力某列授权就执行: CREATE USER haohao_r_1@localhost IDENTIFIED BY 'password'; grant select(id,name) on haohao.grant_test to haohao_r_1@localhost;
查用户权限
show grants for haohao_r_1@localhost;
回收权限
REVOKE INSERT ON haohao.* FROM 'haohao'@'localhost';
2、 MySQL角色管理
创建角色
CREATE ROLE 'app_developer'; 给角色授权 GRANT select,update,delete,insert ON app_db.* TO 'app_developer'; 使用角色,受先创建一个用户: create user 'haohao_role'@'localhost' identified by 'IHB87Edsa'; 然后给用户富余角色,用来替换GRANT SELECT,UPDATE,DELETE,INSERT: grant 'app_developer' to 'haohao_role'@'localhost'; 用户撤销角色 revoke app_developer from 'haohao_role'@'localhost'; 删除角色 drop role app_developer;
3、 MySQL密码管理
修改root密码
ALTER USER user() IDENTIFIED BY 'xxx';
修改普通用户密码
alter user 'haohao'@'localhost' identified by 'xxx'; ALTER USER 'test_user'@'localhost' IDENTIFIED BY 'NewPassword123!';
查看密码相关参数:
show global variables like 'validate_password%';
4、 用户资源限制
创建时限制资源
CREATE USER 'haohao_02'@'localhost' identified by 'Udapadg999a^' WITH MAX_QUERIES_PER_HOUR 500 MAX_UPDATES_PER_HOUR 100 MAX_CONNECTIONS_PER_HOUR 50 MAX_USER_CONNECTIONS 50;
修改现有用户的资源限制
ALTER USER 'haohao'@'localhost' WITH MAX_QUERIES_PER_HOUR 100; 如果要曲线限制,就把值设置成0 ALTER USER 'haohao'@'localhost' WITH MAX_QUERIES_PER_HOUR 0;
重置资源使用计数
FLUSH USER_RESOURCES; 或者 FLUSH PRIVILEGES
5、 忘记root密码处理办法
编辑配置文件
vim /data/mysql/conf/my.cnf 增加 skip-grant-tables 重启mysql /etc/init.d/mysql.server restart
免密方式登录
mysql -uroot -p 执行修改密码报错 alter user user() identified by 'dup