Mysql

MySQL複製在mysql上失敗。user更改

  • July 28, 2017

我有一個簡單的 MySQL 5.6 主從設置,每當我對 mysql.user 表進行更改時都會失敗。master 設置為複制兩個數據庫,這兩個數據庫都不是 mysql 數據庫。binlog_format 設置為 ROW。

我在主伺服器上設置了一些 MySQL 使用者,供不同同事對數據庫進行更改,但在從伺服器上我只有一個使用者,即 Web 伺服器。

當我嘗試從主伺服器中刪除冗餘使用者時,從伺服器失敗並顯示以下消息:

Error 'Operation DROP USER failed for 'mysql_user'@'localhost'' on query. Default database: ''. Query: 'DROP USER 'mysql_user'@'localhost''

我不想一直跳過錯誤,因為我會時不時地對 mysql.user 表進行更改,並且很容易忘記檢查複製是否仍在進行。我沒有對複制進行任何監控設置,所以有幾次我對 mysql 表進行了更改,幾個小時內沒有人注意到,這影響了我們的生產 Web 伺服器。

非常感謝任何幫助。

注意你的錯誤資訊的一部分:'mysql_user'@'localhost''

localhost單詞後有兩個引號。當該語句複製時,從數據庫伺服器找不到使用者並且複制停止。MySQL 5.7 有DROP USER IF EXISTS user形式,但在 MySQL 5.6 中你最好不要犯這樣的錯誤,或者更喜歡直接編輯 mysql 數據庫。

更新:當您對將 MySQL 帳戶從主伺服器複製到從伺服器不感興趣時,您可能需要replicate-ignore-db=mysql添加

$$ mysqld $$每個奴隸的部分。我更喜歡在從站進行過濾,因為主站的二進制日誌中的更改對將來的故障排除具有潛在的價值。

引用自:https://serverfault.com/questions/865487