什麼是 debian-sys-maint MySQL 使用者(以及更多)?
我已經被預設安裝在從 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 )。