Linux

什麼是 debian-sys-maint MySQL 使用者(以及更多)?

  • August 13, 2019

我已經被預設安裝在從 Ubuntu 儲存庫安裝的 mysql-server 軟體包上的“debian-sys-maint”使用者咬了好幾次。

通常情況下,我提取了我們的生產數據庫(不在 Debian/Ubuntu 上執行)的新副本以進行故障排除或新開發,並且忘記排除 mysql.user 表,因此失去了 debian-sys-maint 使用者。

如果我們出於某種原因添加新的 mysql 使用者,我必須將它們“合併”到我的開發環境中,而不是僅僅覆蓋表。

在沒有使用者的情況下,我的系統似乎仍然可以正常執行,但會出現以下錯誤:

sudo /etc/init.d/mysql restart
Stopping MySQL database server: mysqld...failed.
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
  • debian-sys-maint 是做什麼用的?

    • 包維護者有沒有更好的方法來做他們想做的事情?
  • 失去後最簡單的恢復方法是什麼?

  • 該使用者的正確/最小權限集是什麼?

    • “授予 . … 的所有權限”似乎是個壞主意

編輯

附加問題 - /etc/mysql/debian.cnf 中的密碼是否已經散列或者這是明文密碼?當你去重新創建使用者時很重要,而且我似乎從來沒有在第一次嘗試時就做對了。

謝謝

debian-sys-maint 是做什麼用的?

它用於的一件主要事情是告訴伺服器滾動日誌。它至少需要重新載入和關閉權限。

查看文件**/etc/logrotate.d/mysql-server**

腳本使用它/etc/init.d/mysql來獲取伺服器的狀態。它用於優雅地關閉/重新載入伺服器。

這是 README.Debian 的引述

* MYSQL WON'T START OR STOP?:
=============================
You may never ever delete the special mysql user "debian-sys-maint". This user
together with the credentials in /etc/mysql/debian.cnf are used by the init
scripts to stop the server as they would require knowledge of the mysql root
users password else.

失去後最簡單的恢復方法是什麼?

最好的計劃就是不要失去它。如果您確實失去了密碼,請使用其他帳戶重置密碼。如果您失去了 mysql 伺服器上的所有管理員權限,請按照指南重置 root 密碼,然後修復debian-sys-maint.

您可以使用這樣的命令來建構一個 SQL 文件,以後可以使用該文件重新創建帳戶。

mysqldump --complete-insert --extended-insert=0 -u root -p mysql | grep 'debian-sys-maint' > debian_user.sql

/etc/mysql/debian.cnf 中的密碼是否已經散列

密碼在安裝時沒有經過散列/加密,但新版本的 mysql 現在可以加密憑據(請參閱:https ://serverfault.com/a/750363 )。

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