Skip to content

Commit dff4e48

Browse files
author
Allen Lai
committed
WL#8548 InnoDB: Transparent data encryption
Fixed bug#22842093 ENCRYPTED TABLES BECOME INACCESSIBLE AFTER UPGRADE TO MYSQL 5.7.12
1 parent ac92aff commit dff4e48

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

storage/innobase/os/os0file.cc

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8700,16 +8700,31 @@ Encryption::get_master_key(ulint master_key_id,
87008700
ret = my_key_fetch(key_name, &key_type, NULL,
87018701
reinterpret_cast<void**>(master_key), &key_len);
87028702

8703+
if (key_type) {
8704+
my_free(key_type);
8705+
}
8706+
8707+
/* For compitable with 5.7.11, we need to try to get master key with
8708+
server id when get master key failure. */
8709+
if (ret || *master_key == NULL) {
8710+
memset(key_name, 0, ENCRYPTION_MASTER_KEY_NAME_MAX_LEN);
8711+
sprintf(key_name, "%s-%lu-%lu", ENCRYPTION_MASTER_KEY_PRIFIX,
8712+
server_id, master_key_id);
8713+
8714+
ret = my_key_fetch(key_name, &key_type, NULL,
8715+
reinterpret_cast<void**>(master_key),
8716+
&key_len);
8717+
if (key_type) {
8718+
my_free(key_type);
8719+
}
8720+
}
8721+
87038722
if (ret) {
87048723
*master_key = NULL;
87058724
ib::error() << "Encryption can't find master key, please check"
87068725
" the keyring plugin is loaded.";
87078726
}
87088727

8709-
if (key_type) {
8710-
my_free(key_type);
8711-
}
8712-
87138728
#ifdef UNIV_ENCRYPT_DEBUG
87148729
if (!ret && *master_key) {
87158730
fprintf(stderr, "Fetched master key:%lu ", master_key_id);

0 commit comments

Comments
 (0)