解决方案:检查OCI密钥环配置,确保JSON格式正确。编辑my.cnf文件,添加或修正keyring_oci_config参数,使用正确的vault_id和private_key_path。重启MySQL服务后,执行ALTER KEYRING SET_KEYRING_COMPONENT=mysql_keyring_oci;命令测试。远程处理时,验证网络连通性和OCI凭证有效性。故障代码MY-013947通常因JSON解析失败引起,修复步骤:1. 备份配置文件;2. 使用jq工具验证JSON语法;3. 更新OCI SDK版本;4. 清除keyring缓存并重启。
CSDN博客讨论
今天遇到MySQL启动报错:ER_KEYRING_OCI_PARSE_JSON,原因是keyring_oci插件的JSON配置有问题。配置文件里有个逗号多余了,删掉后正常了。远程服务器上处理类似问题,建议用ssh登录后直接cat查看my.cnf,确保JSON字符串没转义错误。
Stack Overflow热议
Encountered MY-013947 error when setting up MySQL keyring with OCI. The issue was malformed JSON in the keyring_oci_config. Solution: Use a JSON validator online, paste your config, fix syntax, then reload. For remote setups, ensure the vault endpoint is reachable via telnet.
Oracle社区论坛
在OCI Vault集成MySQL时,JSON解析失败报ER_KEYRING_OCI_PARSE_JSON。检查了private_key内容,必须是完整PEM格式,不能有换行问题。解决方案是base64编码密钥并嵌入JSON。热议中有人提到热重载配置,但官方不支持,只能重启实例。
GitHub Issue讨论
MySQL 8.0.33 on OCI throws MY-013947 on keyring init. Fixed by updating the keyring_oci.json file with correct compartment_ocid and vault_ocid from OCI console. Remote fix: scp the corrected json to server, then mysql -e "INSTALL PLUGIN keyring_oci SONAME 'keyring_oci.so'".
知乎经验分享
远程处理MySQL JSON解析错误,ER_KEYRING_OCI_PARSE_JSON。登录服务器,ps -ef | grep mysqld找进程,kill掉,重启前用vim编辑/etc/my.cnf,检查keyring_file_data里的JSON,用echo命令测试解析。很多人说这是OCI Vault权限问题,多半是tenant_ocid写错了。
Reddit DBA线程
Hot discussion on MY-013947: JSON parse fail in OCI keyring. Common fix - escape double quotes properly in config. For remote clusters, use ansible playbook to push config changes. Avoid inline JSON if possible, point to external file.
FAQ
Q: ER_KEYRING_OCI_PARSE_JSON怎么快速定位问题?
A: 用jq命令行工具解析JSON配置,jq . your_config.json,如果报错就改语法。
Q: 远程服务器修复需要停服务吗?
A: 是的,重启MySQL是最可靠方式,动态加载不支持keyring变化。
Q: MY-013947是权限问题吗?
A: 不一定是,80%是JSON格式,20%是OCI API密钥过期。
Q: Windows上怎么处理这个错误?
A: 用PowerShell测试Invoke-RestMethod到OCI Vault,确认连通,再修my.ini里的JSON。