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

哎,说到我公司,真是尴尬啊。
我们来谈谈加固这个MySQL8 数据库。
当时我负责维护公司的数据库,很头疼。
我记得那是2 01 9 年,我们公司在某城市的分公司出现了数据库服务器问题,这会影响到整个公司。

然后我就觉得这个数据库的安全性需要加强。
毕竟这是公司的核心数据。
于是我尝试研究这些脚本,试图找到一种自动化加固的方法。

我们先来说一下脚本1 ,它是停用高风险帐户。
当时我们公司有一个默认的匿名用户,密码为空,还有一个测试库,都是隐患。
我在脚本里写了一些东西,直接杀掉那些高危账户。
我记得当我运行该脚本时,命令非常简单,只有一行:chmod+xsecure_mysql_users.sh && ./secure_mysql_users.sh。
所以我使用了 DROPUSERIFEXISTS ''@'localhost';从 mysql.user 中删除,其中authenticate_string='';在脚本中清理所有这些帐户。

因此,我尝试使用脚本 2 来启用审核日志。
这件事非常重要。
谁接触了数据库就必须被记录下来。
我在脚本中将日志格式设置为JSON,这使得用ELK解析更容易。
关键命令是SETPERSISTaudit_log_policy='ALL';,这样可以记录所有操作。

我们来谈谈脚本 3 ,它强制所有用户使用 SSL 连接。
这也是为了防止内网流量被拦截。
我在脚本中为 root 帐户和应用程序用户配置了 SSL,并全局设置了 require_secure_transport=ON 。
这样,连接数据库时就必须使用SSL。

然后是脚本 4 ,它会自动检测并修复权限过多的帐户。
这一点非常关键,因为有时候开发者授权账号的时候,权限太高了。
一旦出现问题,后果不堪设想。
我在脚本中检查了这一点,记录了所有具有过多权限的帐户,然后生成了一份报告。

脚本5 ,自动轮换root密码。
这也是出于安全考虑。
特权帐户的密码不能太简单,也不能长期保持不变。
我在脚本中生成了一个随机的 1 6 位密码,更新了 root 帐户密码,并将其保存到加密文件中。

最后,脚本6 一键生成安全配置报告。
这份报告非常关键,可以让我们知道数据库安全配置是否存在问题。
我检查了脚本中的SSL强制传输、审计日志、高危函数等指标,然后生成了报告。

顺便说一句,我真的很感谢这些脚本,它们对我加强数据库安全帮助很大。
我现在每天定期运行这些脚本以确保数据库安全。
这件事需要自动化,省心省力。

Qt+MySql开发笔记:Qt5.9.3的msvc2017x64版本编译MySql8.0.16版本驱动并Demo连接数据库测试

上周有客户问我如何在Qt5 .9 .3 msvc2 01 7 x6 4 环境下编译mysql8 .0.1 6 驱动并测试数据库连接。
我在这方面确实经历了一段艰难的时期,所以下面我会详细告诉你。

首先需要准备Qt5 .9 .3 msvc2 01 7 x6 4 环境。
安装时请务必检查源代码选项。
然后,从MySQL官网下载mysql-installer-community-8 .0.1 6 .0。

接下来,你需要从downloads.mysql.com/arc下载相应的驱动库...记得选择与你的机器版本对应的文件。

打开QtCreator,用它来操作,别忘了去掉阴影选项。
然后,使用qmake进行配置,然后构建。
如果您遇到任何错误,您需要参考第三步以及我之前编写的第一和第二指南。

在编译过程中,您可能需要更改插件的MySQL库。
将libmysql.dll文件从数据库的lib目录复制到Qt bin目录。
确保打包时包含此文件。

然后,编译您的应用程序并测试数据库连接。
此时,如果您的应用程序尝试使用 ODBC 连接 MySQL 驱动程序,它应该能够连接。

但是不要忘记,您可能还需要远程登录配置。
您将需要使用 mysql 命令行修改用户配置以确保启用远程访问权限。

由于加密方式调整,MySQL8 的加密方式可能略有不同。
为了保证远程连接能够成功,必须切换用户认证方式。

最后,你在编译过程中可能会遇到一些缺点,比如路径问题、库文件版本不匹配等,你得一一排除。

总之,按照上面的步骤,就可以基本完成Qt5 .9 .3 msvc2 01 7 x6 4 版本和mysql8 .0.1 6 驱动的编译和数据库连接测试了。
我还在思考这个问题。
如果以后还有更多的困难,我会和大家分担。

mysql怎么添加root密码

嘿,你问如何在正确的根目录下为MySQL添加密码?让我告诉你,我是在过去一个小时里才做的。

场景:2 02 3 年我在上海办公室的一台Windows 1 0电脑上新安装的MySQL 8 .0.1 6 添加了密码,之前一直是空的,有点不安全。

第 1 步:完成工作 您需要先启动数据库服务。
在Windows系统上,您可以在任务栏中查找“MySQL”任务以查看其是否正在运行状态。
如果没有安装,必须去官网下载合适的版本。
比如我的MySQL版本是8 .0.1 6 ,然后我就安装了。
该服务必须先启动,然后才能继续下一步。

Venarium:我记得当时作业没有启动,所以我必须在作业管理器中手动启动它,否则命令根本不会执行。

第 2 步:打开命令行 对于 Windows 系统,请转到“开始”菜单并搜索“MySQL Command Line Client”并单击它。
或者直接CMD。
Linux系统很简单,只要打开一个终端,输入mysql -u -p root,然后回车即可。
注意,不要在 -p 之后立即输入提示。
稍后系统会要求您输入密码。

场景:我当时用的是CMD,因为Windows下CMD比较方便。

第三步:输入密码加密命令 登录后(如果没有密码,可以直接登录),输入以下SQL行: sql 更改用户“root”@“localhost”,与“密码”相同; 请注意,“您的密码”应替换为您要设置的密码。
我的密码特意设置了一个强密码,auto和小写字母加数字,比较安全。
'root'@localhost 代表用户和链接的来源。
如果你想远程打开就得改成'root'@%',但是改完之后记得回来确认一下。

特别说明:MySQL 8 .0 及以上版本使用此 ALTER user 语法。
旧版本可以使用 SIGN FOR 'root'@'localhost' = SIGN('password');但现在建议使用新语法,旧语法应删除。

场景:当时用的是新语法,感觉这个命令行最清晰。
如果中间卡住了,我检查了半天,发现字符打印不正确。
确实是最微小的东西就能杀人。

第 4 步:查看结果 输入命令并按 Enter 后,MySQL 会给你反馈。
如果查询正常,显示受影响的行或类似“成功”的信息,则表示密码已更改。
如果报告错误,例如语法错误或其他错误,请再次检查命令是否输入正确,或者您使用的 MySQL 版本是否支持此语法。

第五步:测试新密码 命令执行成功后,当前会话退出并输入exit。
然后尝试使用 mysql -u root -p 再次连接。
此时,系统会提示您输入密码。
输入您设置的新密码。
如果输入,则表示该代码有效。
如果不起作用,则意味着代码设置不正确,您必须重新开始。

场景:第一次尝试的时候,我输入了一个非常复杂的密码,但是我的手颤抖地输入了错误,这几乎让我抓狂。
是不是简单的重置一下就可以了?
健康建议: 1 . 您必须妥善保管此root密码,不要意外向任何人透露。
使用低权限用户进行正常操作,如果确实需要更改配置或其他内容,则仅使用 root 用户。
2 . 密码应经常更改。
请勿设置过于简单的密码,如“1 2 3 4 5 6 ”作为第一级保护的密码。
3 、最好为MySQL端口(每年3 3 06 )打开防火墙,这样只有受信任的IPS才能连接。
4 、如果条件允许,可以考虑使用SSL对连接进行加密,这样密码在传输过程中不被截获。

不知何故,如果您尝试这些步骤,通常是可能的。
如果你有什么不明白的,可以问我。

mysql如何从5.7迁移到8.0

升级MySQL时,先备份,然后检查兼容性,选择合适的方法,最后进行测试。
使用 mysqldump 或 PerconaXtraBackup 进行备份、控制字符集和排序规则以及管理已弃用的功能。
先测试测试环境,升级后检查日志、验证数据并更改配置。
备份不能少,每一步都要检查,有问题就回滚。
逻辑迁移比就地升级和回滚更简单。
更新后,应用程序必须兼容新版本。