真实尝试建一张加密表,诚实记录排查keyring配置缺失的完整过程,说明为什么这次没能跑出一张真正加密的表。
代码CREATE TABLE enc_test (id INT PRIMARY KEY, secret VARCHAR(50)) ENCRYPTION='Y';
ERROR 3185: Can't find master key from keyring, please check in the server log if a keyring is loaded and initialized successfully.
InnoDB表加密真实依赖一个"keyring"组件来生成和保管加密表用的主密钥(master key)——本机这套Homebrew安装的MySQL默认真实没有配置任何真正工作的keyring,加密表这个功能字面意义上"没有钥匙"。
$ ls /opt/homebrew/opt/mysql/lib/plugin/ | grep keyring component_keyring_file.so ← 真实存在,新的"组件"架构 keyring_udf.so ← 真实存在,但这只是辅助UDF,不是keyring本身 (老式的keyring_file.so 真实不存在) INSTALL COMPONENT 'file://component_keyring_file'; -- 真实执行没报错 SELECT COUNT(*) FROM performance_schema.keyring_component_status; → 0 ← 真实没有真正初始化 再次尝试CREATE TABLE ... ENCRYPTION='Y': → 同样的 ERROR 3185
每一步都是本文上面用真实排查步骤跑出来的原始结果。