ChatGPT会取代MySQL DBA吗?(译自Percona)

在这里插入图片描述
让权威网站Percona来回答这个很多人都在关心的问题。

原文网址:ChatGPT 不会取代 MySQL DBA - 关于静态加密的问题示例 - Percona 数据库性能博客

作者:Edwin Wang

译者,姚远

ChatGPT是目前科技界最热门的话题,有人甚至说ChatGPT已经通过了谷歌的3级编程面试。我想知道,这是否意味着ChatGPT也准备好取代MySQL DBA?答案是否定的,让我来告诉你为什么。

最近,我们的一位客户正在考虑使用基于文件的密钥环插件加密他们的静态数据。为了使这个过程更安全,他们考虑在MySQL启动后删除本地keyring_file。因此,即使有人获得主机访问权限,数据文件仍然受到保护,因为他们无法访问主密钥,而主密钥用于加密保存静态数据的表的密钥。

让 ChatGPT 尝试 MySQL 管理

让我们看看ChatGPT会如何回答下面的问题。
我问了ChatGPT一个问题:“我们能不能先备份用于静态加密插件的密钥环文件,然后在MySQL启动后删除这个文件?”
来自ChatGPT的回答是:“不,不建议在MySQL运行时删除用于静态加密插件的密钥环文件,因为这可能导致数据损坏或意外结果。密钥环文件是静态加密插件的重要组成部分,用于安全地存储包括密码在内的加密信息。为了安全地对密钥环文件进行更改,建议先停止MySQL服务,再备份密钥环文件,然后再进行必要的修改或删除,完成变更后,最后再次重新启动MySQL服务。没有停止MySQL服务就更改密钥环文件可能会导致数据丢失或损坏,并且可能无法恢复数据。”

乍一看,答案看起来非常正确,如果您没有足够的基于文件密钥环插件的经验,答案似乎非常合理。事实上,这个答案只是部分正确,而且犯了两个错误。
ChatGPT犯的第一个错误是说不能在MySQL正在运行时删除用于静态加密插件的密钥环文件,实际上是可以的。在MySQL运行时删除了密钥环文件后,该插件仍将正常工作,继续加密新表,并解密已经加密表中的数据,而不会损坏或意外行为。
这是因为启动时的密钥环插件已经将keyring_file的全部内容(即密钥ID,密钥用户,密钥类型以及密钥本身)加载到缓存中,除非MySQL重新启动,或者您想轮换(rotate)主密钥(您不会,因为您知道您已经删除了keyring_file),它将不再需要密钥环文件。我们可以通过以下示例进行验证:

当MySQL启动时,它创建了一个空文件/var/lib/mysql/keyring_file。但是,当我们使用 ENCRYPTION=‘Y’ 创建一个表时,我们可以看到文件 /var/lib/mysql/keyring_file 不再为空。这是因为Keyring_file插件创建了一个主密钥,将所有信息放入内存中,并将密钥数据的备份副本保存到文件 /var/lib/mysql/keyring_file 中。

ec2-user@ip-172-31-32-242 ~]$ cat /etc/my.cnf
#encryption at rest
early-plugin-load=keyring_file.so
keyring_file_data=/var/lib/mysql/keyring_file
mysql> create database test;
mysql> show create schema testG
*************************** 1. row ***************************
Database: test
Create Database: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */
[ec2-user@ip-172-31-32-242 ~]$ sudo ls -lhr /var/lib/mysql/
-rw-r----- 1 mysql mysql 0 Feb 9 00:04 keyring_file
mysql> use test;
Database changed
mysql> CREATE TABLE t1 (c1 INT, PRIMARY KEY pk(c1)) ENCRYPTION='Y';
mysql> insert into t1(c1) values(1);
mysql> select * from t1;
+----+
| c1 |
+----+
| 1 |
+----+
mysql> show create table t1G
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`c1` int NOT NULL,
PRIMARY KEY (`c1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ENCRYPTION='Y'
[ec2-user@ip-172-31-32-242 ~]$ sudo ls -lhr /var/lib/mysql/keyring_file
-rw-r----- 1 mysql mysql 187 Feb 9 00:07 /var/lib/mysql/keyring_file
mysql> show variables like '%UUID%';
+---------------+--------------------------------------+
| Variable_name | Value |
+---------------+--------------------------------------+
| server_uuid | ccdb4a6c-9c3b-11ed-805e-0a357402d413 |
+---------------+--------------------------------------+
[ec2-user@ip-172-31-32-242 ~]$ sudo vi /var/lib/mysql/keyring_file
00000000: 4b65 7972 696e 6720 6669 6c65 2076 6572 Keyring file ver
00000010: 7369 6f6e 3a32 2e30 8000 0000 0000 0000 sion:2.0........
00000020: 3000 0000 0000 0000 0300 0000 0000 0000 0...............
00000030: 0000 0000 0000 0000 2000 0000 0000 0000 ........ .......
00000040: 494e 4e4f 4442 4b65 792d 6363 6462 3461 INNODBKey-ccdb4a
00000050: 3663 2d39 6333 622d 3131 6564 2d38 3035 6c-9c3b-11ed-805
00000060: 652d 3061 3335 3734 3032 6434 3133 2d31 e-0a357402d413-1
00000070: 4145 537d 7c7f a42e 8e5a 85ff 2301 cd95 AES}|....Z..#...
00000080: d4b0 9e67 dd5c 3bfe 1cc7 77e2 8d22 57e6 ...g.;...w.."W.
00000090: bb60 c500 0000 0000 454f 4691 068e 5190 .`......EOF...Q.
000000a0: d204 4689 8620 3022 80fb 90af 4b9d 1302 ..F.. 0"....K...
000000b0: 5a7c 84bb 516f 07a8 d1b6 9a0a Z|..Qo......

我们备份并删除了keyring_file文件,但没有重新启动MySQL,MySQL 仍然运行正常,我们可以从加密表中查询数据,也可以创建一个ENCRYPTION=‘Y’ 的新表,一切都和删除keyring_file文件之前相同。

[ec2-user@ip-172-31-32-242 ~]$ sudo mv /var/lib/mysql/keyring_file  /var/lib/mysql/keyring_file_1
[ec2-user@ip-172-31-32-242 ~]$ sudo ls -lhr /var/lib/mysql/keyring_file
ls: cannot access /var/lib/mysql/keyring_file: No such file or directory
[ec2-user@ip-172-31-32-242 ~]$ sudo ls -lhr /var/lib/mysql/keyring_file_1
-rw-r----- 1 mysql mysql 187 Feb  9 00:07 /var/lib/mysql/keyring_file_1
mysql> select * from t1;
+----+
| c1 |
+----+
|  1 |
+----+
mysql> CREATE TABLE t2 (c1 INT, PRIMARY KEY pk(c1)) ENCRYPTION='Y';
mysql> show create table t2G
*************************** 1. row ***************************Table: t2
Create Table: CREATE TABLE `t2` (`c1` int NOT NULL,PRIMARY KEY (`c1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ENCRYPTION='Y'
mysql> insert into t2(c1) values(2);
mysql> select * from t2;
+----+
| c1 |
+----+
|  2 |
+----+

我们重新启动了MySQL,发现MySQL启动时出现错误,提示“[InnoDB] Encryption can’t find master key, please check the keyring is loaded.”。但它在重新启动后创建了另一个空文件 /var/lib/mysql/keyring_file。现在,我们无法对加密表执行任何操作,如果我们不重新启动MySQL,即使我们使用备份文件 /var/lib/mysql/keyring_file_1 来覆盖文件 /var/lib/mysql/keyring_file 也不行。

[ec2-user@ip-172-31-32-242 ~]$ sudo systemctl stop mysql
[ec2-user@ip-172-31-32-242 ~]$ sudo systemctl start mysql
[ec2-user@ip-172-31-32-242 ~]$ mysql -u root -p
mysql> select * from t1;
ERROR 3185 (HY000): Can't find master key from keyring, please check in the server log if a keyring is loaded and initialized successfully.
mysql> select * from t2;
ERROR 3185 (HY000): Can't find master key from keyring, please check in the server log if a keyring is loaded and initialized successfully.
mysql> show create table t1G
ERROR 3185 (HY000): Can't find master key from keyring, please check in the server log if a keyring is loaded and initialized successfully.
mysql> show create table t2G
ERROR 3185 (HY000): Can't find master key from keyring, please check in the server log if a keyring is loaded and initialized successfully.
mysql>
[ec2-user@ip-172-31-32-242 ~]$ sudo cat /var/log/mysqld.log
...
2023-02-09T00:14:56.719139Z 1 [ERROR] [MY-012657] [InnoDB] Encryption can't find master key, please check the keyring is loaded.
2023-02-09T00:14:56.719170Z 1 [ERROR] [MY-012226] [InnoDB] Encryption information in datafile: ./test/t1.ibd can't be decrypted, please confirm that keyring is loaded.
2023-02-09T00:14:56.720098Z 1 [ERROR] [MY-012657] [InnoDB] Encryption can't find master key, please check the keyring is loaded.
2023-02-09T00:14:56.720117Z 1 [ERROR] [MY-012226] [InnoDB] Encryption information in datafile: ./test/t2.ibd can't be decrypted, please confirm that keyring is loaded.
[ec2-user@ip-172-31-32-242 ~]$ sudo ls -lhr /var/lib/mysql/keyring_file
-rw-r----- 1 mysql mysql 0 Feb  9 00:14 /var/lib/mysql/keyring_file
[ec2-user@ip-172-31-32-242 ~]$ sudo mv /var/lib/mysql/keyring_file_1  /var/lib/mysql/keyring_file
[ec2-user@ip-172-31-32-242 ~]$ sudo ls -lhr /var/lib/mysql/keyring_file
-rw-r----- 1 mysql mysql 187 Feb  9 00:07 /var/lib/mysql/keyring_file
mysql> select * from t1;
ERROR 3185 (HY000): Can't find master key from keyring, please check in the server log if a keyring is loaded and initialized successfully.
mysql> select * from t2;
ERROR 3185 (HY000): Can't find master key from keyring, please check in the server log if a keyring is loaded and initialized successfully.

我们用备份文件/var/lib/mysql/keyring_file_1覆盖文件/var/lib/mysql/keyring_file,然后再次重启MySQL。现在一切都恢复正常了。

[ec2-user@ip-172-31-32-242 ~]$ sudo systemctl stop mysql
[ec2-user@ip-172-31-32-242 ~]$ sudo systemctl start mysql
[ec2-user@ip-172-31-32-242 ~]$ mysql -u root -p
mysql> select * from t1;
+----+
| c1 |
+----+
|  1 |
+----+
mysql> select * from t2;
+----+
| c1 |
+----+
|  2 |
+----+

另外,我们不应该对密钥环文件进行任何更改,而是应该通过加密插件来轮换(rotate)密钥,并且我们应该在轮换密钥之前备份密钥。但是,ChatGPT 提供的答案暗示我们可以对密钥环文件进行一些更改,这是非常错误的,这是ChatGPT 犯的第二个错误。

结论

ChatGPT 只能为您的问题提供部分正确,甚至是完全错误的答案,因此仍然需要具备专业知识的DBA来仔细检查其答案的正确性。而搜索引擎提供与您问题的答案相关的链接,DBA依靠自己专业知识来分析这些信息。因此,我们认为,无论是使用ChatGPT和/或搜索引擎,您都必须为MySQL数据库配备DBA。

当我完成这篇博客时,我再次询问了ChatGPT同样的问题,它的回答和之前有些不同(具体答案省略)。第二天,我又得到了另一个不同的答案。
因此,ChatGPT 可能会在不同的时间对同一个问题给出不同的答案。它使ChatGPT更加不可靠,特别是如果你想让它成为你的DBA时。事实上,人们向 ChatGPT 提出问题并在答案旁边投票👍或👎是在帮助 AI 学习。换句话说,我们正在使用一个alpha版本的ChatGPT,并正在帮助它进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/46286.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

被Chatgpt碾压的打工人与大学生,准备反击!

最近一段时间,chatgpt可谓如火如荼,它的出现引发各行各业的震动,有人利用它实现了一夜暴富,有企业将它纳进人才招聘的技能要求中,国内各大厂商也纷纷下场推出自家的AI大模型,从第一代到GPT-4,所…

神坛上的插画师真的高薪且自由吗?

插画师的定义:就是以绘画插画为职业的人,主要工作包括替书籍、杂志、报纸、说明书、小说、教科书等刊物绘制插画、封面,也从事绘画贺卡、海报、广告、喷画、幽默画等。分为电子插画和纯手绘。 那么,手绘插画师的收入怎么样呢?封面一般1千到8百,内页100-500左右。每个公司…

插画师必备的6个宝藏网站

1、pinterest https://www.pinterest.es/ 国外网站,需要梯子,里面有超多优秀插画作品,非常值得收藏。 ​ 2、花瓣网 https://huaban.com/ 国内素材网站,很多设计、插画、摄影等作品,可以拿来做参考。 ​ 3、站酷网…

插画师培训怎么选,5大插画师培训班排名

插画师培训哪里好,给大家推荐5大插画师培训班排名,各有优势和特色,提供大家选择! 一:5大插画师培训班排名 1、轻微课(五颗星) 主打课程有日系插画、游戏原画、古风插画、动漫漫画,以…

ubantu报错: 正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程3228(aptd)

1. 问题描述 有时候终端运行时会进行如下报错: 2. 问题原因 一般出现这种原因是因为文件上锁或者被占用 3. 解决方法 sudo rm /var/cahe/apt/archives/lock sudo rm /var/lib/dpkg/lock运行代码块后,结果如下所示: 出现“…没有那个文件目…

Linux “无法获得锁 /var/lib/dpkg/lock-frontend - open“

问题 在Linux下使用sudo apt install命令时如果出现提示&#xff1a;<mark>无法获得锁 /var/lib/dpkg/lock-frontend - open</mark> 原因 出现这个问题的原因可能是有另外一个程序正在运行&#xff0c;由于它在运行时&#xff0c;会占用软件源更新时的系统锁&…

html 标签置顶,html 标签

a anchor 锚点 超链接Document 百度一下 href属性&#xff1a;超链接指定跳转网页地址 title属性&#xff1a;提示 target属性&#xff1a;_self 在当前页打开_页面 _blank_在新页面打开Document 百度一下 小猿圈 小猿圈 小猿圈 小猿圈 小猿圈 小猿圈 小猿圈 小猿圈 小猿圈 小猿…

android的前端开发环境搭建,Android开发环境搭建

可以在以下任一操作系统上进行Android应用程序开发 - Microsoft Windows XP或更高版本。 带有Intel芯片的Mac OS X 10.5.8或更高版本。 Linux包括GNU C库2.7或更高版本。 所有开发Android应用程序所需的工具都是免费的&#xff0c;可以从网上下载。 以下是开始进行Android应用程…

计算机网络工程师 一共几级,2020年计算机软考网络工程师中级多少分过

原标题&#xff1a;2020年计算机软考网络工程师中级多少分过 计算机软考中级合格线是多少&#xff1f;每年报名软考中级资格考试的考生有很多&#xff0c;那么软考中级的及格分数线是多少呢&#xff1f;每年报名软考中级资格考试的考生有很多&#xff0c;近几年软考中级各资格的…

计算机管理 网络连接服务,WZC服务未开启无法连接网络 解决方法及步骤

而最近同事的电脑上不了网&#xff0c;电脑桌面右下角的无线小电脑打上了红叉(如图1所示),根据了解发现每次开机都这样。重起也没用&#xff0c;只是上次关机前优化了一下电脑。 (图1 桌面右下角的无线小电脑图标) 解决因为未开启WZC服务而引起的无线网络上不了问题&#xff1a…

工商管理系计算机上几门课,工商管理专业学什么 主要课程有哪些

工商管理专业是目前的热门专业之一&#xff0c;那么&#xff0c;工商管理专业主要学习什么课程呢&#xff1f;下面小编整理了一些相关信息&#xff0c;供大家参考&#xff01; 工商管理主要学习内容 工商管理专业是时下比较热火的一个专业&#xff0c;严格来说&#xff0c;这是…

计算机电源 80plus,电源基础篇:电源要如何选择?80PLUS是什么意思?要选全模组吗?...

电源的作用相当于人体的心脏&#xff0c;它的好坏直接决定了电脑能不能正常稳定运行与使用寿命&#xff0c;电源是给各大硬件提供功率的装置&#xff0c;它是将我们的家用交流电转化为低压的直流电&#xff0c;最后再供给其它硬件使用&#xff0c;很多朋友最关心的电脑硬件一般…

内置网页服务器开发,内置服务

什么是内置服务&#xff1f; 内置服务以多种形式展现服务器内部状态&#xff0c;提高你开发和调试服务的效率。brpc通过HTTP协议提供内置服务&#xff0c;可通过浏览器或curl访问&#xff0c;服务器会根据User-Agent返回纯文本或html&#xff0c;你也可以添加?console1要求返回…

连接opc服务器显示没有接口,Matrikon OPC常见问题及解决方案(三)

Matrikon OPC常见问题及解决方案(三) 问题和解决方案(三) 多个HASP连接到并行端口&#xff0c;但只有第一个被识别 问题一&#xff1a;Matrikon有多个HASP硬件密钥连接到并行端口&#xff0c;但软件只能识别第一个。 解决方案&#xff1a;来自同一供应商的HASP密钥无法链接在一…

联想t系列服务器,联想更新2019年款ThinkPad X与T系列笔记本电脑产品

访问购买页面: ThinkPad X390 今年的ThinkPad产品线毫无疑问都提供第八代的英特尔酷睿i7处理器。 ThinkPad X390在12英寸笔记本电脑的机身上采用了13英寸显示屏&#xff0c;因为其边框尺寸减小了50&#xff05;。它还提供全球LTE和英特尔Wi-Fi 6 Gig 通信支持能力。同时包括Thi…

教你用故事打造个人ip人设

那些成功打造个人IP的人都是擅长讲故事的。虽然他们使用的是真人出场形式&#xff0c;并且对着相机讲述故事&#xff0c;但你不知道的是&#xff0c;这背后投入了非常大量的工作。这些个人IP的创作者不是通过简单的搬运或者伪造原创来呈现内容&#xff0c;而是通过逐步串联故事…

ChatGPT生成Python学习路线思维导图,人人可编程的时代来了

大家好&#xff0c;最近开始使用ChatGPT作为自己编程助手&#xff0c;作为先进的大语言模型&#xff0c;彻底改变了编写代码的方式。您可以通过自然语言与ChatGPT进行互动&#xff0c;它可以为您提供定制的学习材料&#xff0c;帮助您根据自己的技能水平和学习进度进行学习。检…

GPT-4接入Office全家桶!Excel到PPT动嘴就能做,微软:重新发明生产力

梦晨 丰色 发自 凹非寺量子位 | 公众号 QbitAI 一觉醒来&#xff0c;工作的方式被彻底改变。 微软把AI神器GPT-4全面接入Office&#xff0c;这下ChatPPT、ChatWord、ChatExcel一家整整齐齐。 CEO纳德拉在发布会上直接放话&#xff1a;今天&#xff0c;进入人机交互的新时代&…

GPT-4 太强了!一夜醒来,Excel 到 PPT 动嘴就能做!

梦晨 丰色 发自 凹非寺 量子位 | 公众号 QbitAI 一觉醒来&#xff0c;工作的方式被彻底改变。 微软把AI神器GPT-4全面接入Office&#xff0c;这下ChatPPT、ChatWord、ChatExcel一家整整齐齐。 CEO纳德拉在发布会上直接放话&#xff1a;今天&#xff0c;进入人机交互的新时代&am…

微软开放搭载GPT-4全新Bing——人人皆可用,不用再排队!

编辑&#xff1a;好困 拉燕 大的来了&#xff01; 就在刚刚&#xff0c;微软突然开放了搭载GPT-4的全新Bing聊天机器人。 划重点——所有人可用&#xff0c;而且再也不用排队等了&#xff01; 我们只需要有一个微软账户&#xff0c;然后打开Bing&#xff0c;或者Edge浏览器&…