Mysql
Mysql 8.0 和只讀不能按預期工作
我有一個新的主/從配置正在執行。一切都在愉快地複制。我添加了一個輔助使用者,其角色將是管理數據庫和表。
目前設置了以下權限:
Select_priv: Y Insert_priv: Y Update_priv: Y Delete_priv: Y Create_priv: Y Drop_priv: Y Reload_priv: N Shutdown_priv: N Process_priv: N File_priv: N Grant_priv: N References_priv: Y Index_priv: Y Alter_priv: Y Show_db_priv: Y Super_priv: N Create_tmp_table_priv: Y Lock_tables_priv: Y Execute_priv: Y Repl_slave_priv: N Repl_client_priv: N Create_view_priv: Y Show_view_priv: Y Create_routine_priv: Y Alter_routine_priv: Y Create_user_priv: N Event_priv: Y Trigger_priv: Y Create_tablespace_priv: Y account_locked: N Create_role_priv: N Drop_role_priv: N
特權已被刷新,從屬伺服器以只讀方式啟動。
mysql> select @@read_only; +-------------+ | @@read_only | +-------------+ | 1 | +-------------+ 1 row in set (0.00 sec)
但是我仍然可以與使用者一起在從屬設備上執行寫操作。
mysql> create database foo; Query OK, 1 row affected (0.01 sec) mysql> use foo; Database changed mysql> create table `foobar` ( `x` int ); Query OK, 0 rows affected (0.10 sec) mysql> insert into foobar values (1); Query OK, 1 row affected (0.06 sec) mysql> insert into foobar values (2); Query OK, 1 row affected (0.05 sec) mysql> select * from foobar; +------+ | x | +------+ | 1 | | 2 | +------+ 2 rows in set (0.00 sec) mysql> drop database foo; Query OK, 1 row affected (0.06 sec)
我的理解是,如果沒有 Repl 和 Super priv,我應該無法執行上述操作,還是我做錯了什麼?
本質上,我希望使用此登錄名的腳本和守護程序在我翻轉主伺服器和從伺服器時永遠不會破壞東西。
謝謝。
我跑了SHOW GRANTS;正如 Rick 建議的那樣,我獲得了“CONNECTION_ADMIN”授權。
刪除似乎已修復它:
create database foo; ERROR 1290 (HY000): The MySQL server is running with the --read-only option so it cannot execute this statement
@Rossi,您不必更新您的“CONNECTION_ADMIN”權限以使您的奴隸只讀對像您這樣的超級使用者。
您可以設置super_read_only(可從MySQL 5.6.21獲得)並且您的伺服器將不允許任何更新,即使對於具有 SUPER 權限的使用者也是如此。