Details
Description
I have a replicated slave with "read_only=1" set in my.cnf
I have a user set up as follows:
CREATE USER 'slave_user'@'localhost' IDENTIFIED BY 'slave_pswd'; |
GRANT ALL ON mydb.* TO 'slave_user'@'localhost' WITH GRANT OPTION; |
If I log in as 'slave_user', I can create a temporary table, write to it, and then drop it successfully:
CREATE TEMPORARY TABLE temp_x (id integer); |
INSERT INTO temp_x values (1); |
DROP TEMPORARY TABLE IF EXISTS temp_x; |
However, if I have not created a temporary table, and I start with:
DROP TEMPORARY TABLE IF EXISTS temp_x; |
I get the error: ERROR 1290 (HY000): The MariaDB server is running with the --read-only option so it cannot execute this statement
I have countless lines of application code which always checks to make sure a temporary table is dropped before creating it to avoid an "already exists" error. Always worked on MySQL 5.6 and lower, on the exact same slave database with read_only. After upgrading to MariaDB 10.1, this problem emerged.
Thanks for the report.
The problem appeared in 5.5.57 with this commit:
commit 9b3360ea4417ed653d5c7eed29f4ef7e80618e43
Author: Sergei Golubchik <serg@mariadb.org>
Date: Tue Jul 18 14:47:40 2017 +0200
BUG#25250768: WRITING ON A READ_ONLY=ON SERVER WITHOUT SUPER PRIVILEGE
simplify.
add a test case.
Test case
--connect (con1,localhost,foo,,)
# Cleanup
--disconnect con1
--connection default