MySQL 9.0正式版本来了!

MySQL 9 .0已经发布; JSON存储解释结果,需要设置变量。
新表支持DDL事件,但需要手动编译文本。
矢量类型是新的,需要改进。
MySQLHeatWave 有矢量搜索。
身份验证插件 mysql_native_password 已被删除,但客户端仍然支持。
企业版支持 JavaScript 存储过程。
修复了文档中详述的 1 2 7 个漏洞。
外壳、设备更新,包括路由器和连接器。

MySQL版本的特点及优缺点

MySQL 5 .7 特点: 1 . JSON支持:方便存储和查询JSON数据,适应现代网络。
2 、多源复制:跨多个数据中心的强数据同步。
3 .性能优化:多线程复制、QueryRewrite等提高效率。
MySQL 5 .7 的优点:
JSON处理功能强大。

复制功能强大。

性能得到显着提高。
MySQL 5 .7 的缺点:
实时大数据处理性能不足。

新功能可能不稳定。
MySQL 8 .0的特点: 1 . 窗口函数:简化复杂的分析查询。
2 . CTE:复杂的查询很容易处理。
3 . 隐形索引:灵活的索引管理。
MySQL 8 .0的优点:
复杂查询效率很高。

索引管理更加灵活。
MySQL 8 .0的缺点:
注意兼容性。

新功能的学习曲线很陡峭。

自己掂量一下。

MySQL 8 还在裸奔?这 6 个脚本,让你的数据库自动“穿上防弹衣”!

当我为一家电子商务公司工作时,这个 MySQL8 安全强化脚本非常方便。
当时他们的系统多次遭到黑客攻击,大量数据丢失。
老板很关心,立即让我出一个自动化加固方案。

脚本1 :自动禁用高风险帐户 这招确实管用。
我记得当时,我发现一个测试数据库还打开着,有默认的用户名等等,黑客就走了进来。
运行脚本后,所有匿名用户都被删除了,测试库也被破坏了,空密码的账户也被清理了。
执行方法就一行命令,chmod+xsecure_mysql_users.sh && ./secure_mysql_users.sh。
看似简单,但效果立竿见影。
主要命令为 DROPUSERIFEXISTS''@'localhost';并从 mysql.user WHEREauthentication_string=''; 中删除。
请放过这些麻烦制造者。

脚本二:一键打开企业级审计日志 这非常重要!由于该电商公司较早被黑客攻击,因此没有日志,也没有攻击过程的痕迹。
现在想起来都后怕。
脚本一执行,立即打开audit_log,日志格式设置为JSON,适合后期用ELK分析。
我还记得他们设置的阈值是1 GB,满了就会自动滚存,而且我还排除了监控账户。
执行方法为mysql-uroot-p关键配置是SET PERSISTaudit_log_policy='ALL';并将变量设置为“audit_log_file”;以确保所有操作均被记录。

脚本 3 :强制所有用户使用 SSL 进行连接 如果内网流量不加密,万一出问题就惨了。
当我为一家金融公司开发系统时,他们的内部网络被黑客入侵,所有密码都被暴露。
该脚本通过全局设置 request_secure_transport=ON 强制 root 和应用程序的所有用户使用 SSL。
验证方法是SHOW STATUS LIKE 'Ssl_cipher';。
如果结果不为空,则说明已经生效。
主要命令是 ALTER USER 'root'@'localhost' REQUIRES SSL;并设置持久 require_secure_transport=ON;。
这次,流量被加密并且更加安全。

脚本4 :自动检测并修复权限过多的帐户 在开发阶段意外地向帐户授予过多授权是一个常见的陷阱。
之前在游戏公司工作的时候,发现一个开发账号权限非常高,随意删除库。
运行脚本时,会找到所有特权过高的帐户,创建报告文件 /tmp/over_privileged_users.txt,并且还支持电子邮件警报。
执行方式为bash check_over_privileged.sh,主要查询为SELECT user, host FROM mysql.user WHERE (Select_priv='Y' AND Insert_priv='Y' AND Drop_priv='Y') OR Super_priv='Y';发现所有这些“超级用户”。

脚本5 :自动轮换root密码 如果特权帐户的密码保持不变,风险非常高。
以前帮政府机构开发系统时,他们规定必须定期更换密码,否则不能续订。
该脚本生成一个随机的 1 6 位密码,并更新root 密码并将其存储在加密的 /root/.mysql_root_pass 文件中。
执行方式为bashrotate_root_password.sh,安全要求为chmod 6 00 /root/.mysql_root_pass,限制文件权限,防止他人查看。

脚本6 :一键生成安全配置报告 这个东西很实用。
之前我帮一家物流公司开发系统的时候,他们要求定期生成安全报告,否则就会被罚款。
运行脚本检查SSL、审计日志、高危功能等关键指标,并生成报告文件/var/log/mysql/security_report_YYYY-MM-DD.txt。
执行方法是bash mysql_security_report.sh。
样本报告内容为===MySQL8 安全配置报告===,一目了然。

自动化运维建议 计划任务:每天通过 cron 运行脚本 4 、脚本 5 和脚本 6 变更管理:将脚本合并到 CI/CD 流程中,并自动将安全配置应用到新环境。
警报集成:将脚本 4 和脚本 6 输出连接到 Prometheus 或 Slack 进行实时监控。

总的来说,这套脚本确实很方便。
它可以系统地解决MySQL8 默认的安全漏洞,满足MSW 2 .0 Level 3 要求,同时降低手动配置错误的风险。
如果你也有MySQL8 ,我强烈建议你尝试一下。