昨日の 日々の覚書: MySQL 5.7では迂闊にperformance_schemaをOFFするとSHOW STATUSが使えない の派生バージョン。
MySQL 5.7.8以降、show_compatibility_56= 0が暗黙のデフォルトになり、SHOW VARIABLESとかはinformation_schemaではなくperformance_schemaを見に行くようになる。performance_schema.*_variablesテーブルにSELECT権限がないとSHOW VARIABLESは転ける。
さて…レプリケーションスレーブを作ろうと思った時、どんな権限を持ったユーザーを作るか。
俺ならこうだ。
mysql> CREATE USER replicator; Query OK, 0 rows affected (0.07 sec) mysql> GRANT replication slave ON *.* TO replicator; Query OK, 0 rows affected (0.01 sec)
ホストの指定がないのとパスワードがからっぽなのはおいておいて、replication slave権限だけ渡す。これで必要十分だ。必要十分 *だった* 。
レプリケーションスレーブは接続時にいくつかのクエリーを叩いてマスターのステータスを確認する。こんな感じに。
2015-07-16T10:02:03.540261Z 17 Connect replicator@172.17.0.13 on using TCP/IP 2015-07-16T10:02:03.541390Z 17 Query SELECT UNIX_TIMESTAMP() 2015-07-16T10:02:03.543327Z 17 Query SHOW GLOBAL VARIABLES LIKE 'SERVER_ID' 2015-07-16T10:02:03.553855Z 17 Query SET @master_heartbeat_period= 30000001024 2015-07-16T10:02:03.555791Z 17 Query SET @master_binlog_checksum= @@global.binlog_checksum 2015-07-16T10:02:03.563154Z 17 Query SELECT @master_binlog_checksum 2015-07-16T10:02:03.563764Z 17 Query SELECT @@GLOBAL.GTID_MODE 2015-07-16T10:02:03.563909Z 17 Query SHOW GLOBAL VARIABLES LIKE 'SERVER_UUID' 2015-07-16T10:02:03.564396Z 17 Query SET @slave_uuid= 'b0a21916-2b9f-11e5-b413-0242ac11000d' 2015-07-16T10:02:03.564717Z 17 Binlog Dump GTID Log: '' Pos: 4 GTIDs: 'b0a21916-2b9f-11e5-b413-0242ac11000d:1-133'
そう、SHOW GLOBAL VARIABLESだ。SELECT @@GLOBAL.GTID_MODEも同じことだ。
つまり、show_compatibility_56= OFFな状態でperformance_schema.global_variablesにSELECT権限のないユーザーでレプリケーションをさせようとすると
mysql> show slave status\G *************************** 1. row *************************** .. Last_IO_Errno: 1142 Last_IO_Error: The slave I/O thread stops because a fatal error is encountered when it try to get the value of SERVER_ID variable from master. Error: SELECT command denied to user 'replicator'@'172.17.0.13' for table 'global_variables' ..
1 row in set (0.00 sec)
こうなる。罠い。
既にバグレポートされてた。
MySQL Bugs: #77732: REGRESSION: replication fails for insufficient privileges
0 件のコメント :
コメントを投稿