Vraag Wat is de MySQL-gebruiker van debian-sys-maint (en meer)?


Ik ben verschillende keren gebeten door de gebruiker 'debian-sys-maint' die standaard is geïnstalleerd op de mysql-serverpakketten die zijn geïnstalleerd vanuit de Ubuntu-opslagplaatsen.

Over het algemeen gebeurt er een nieuwe kopie van onze productiedatabase (die niet op Debian / Ubuntu wordt uitgevoerd) voor het oplossen van problemen of nieuwe ontwikkeling en vergeet ik de tabel mysql.user uit te sluiten, waardoor ik de gebruiker van debian-sys-maint kwijtraak.

Als we om wat voor reden dan ook nieuwe mysql-gebruikers toevoegen, moet ik deze in mijn ontwikkelomgeving 'samenvoegen' in plaats van alleen maar over de tabel heen.

Zonder de gebruiker lijkt mijn systeem nog steeds functioneel, maar geplaagd door fouten zoals:

sudo /etc/init.d/mysql restart
Stopping MySQL database server: mysqld...failed.
error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
  • Waarvoor wordt debian-sys-maint gebruikt?
    • Is er een betere manier voor de pakketbeheerders om te doen wat ze proberen te doen?
  • Wat is de gemakkelijkste manier om het te herstellen nadat ik het kwijt ben?
  • Wat is de juiste / minimale reeks privileges voor deze gebruiker?
    • Het lijkt een slecht idee om 'alle rechten toe te kennen aan *. * ...'

Bewerk

Bijkomende vraag - Is het wachtwoord al gehashed in /etc/mysql/debian.cnf of is dit het leesbare wachtwoord? Het maakt uit wanneer je de gebruiker gaat recreëren en ik schijn het bij de eerste poging nooit goed te krijgen.

Bedankt


65
2018-05-19 16:05


oorsprong


Het wachtwoord is plaintext in /etc/mysql/debian.cnf - Brent


antwoorden:


Waarvoor wordt debian-sys-maint gebruikt?

Standaard wordt het gebruikt om de server te vertellen de logboeken te rollen. Het heeft op zijn minst het reload- en shutdownprivilege nodig.

Zie het bestand /etc/logrotate.d/mysql-server

Het wordt gebruikt door de /etc/init.d/mysql script om de status van de server te krijgen. Het wordt gebruikt om de server netjes af te sluiten / opnieuw te laden.

Hier is het citaat uit de 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.

Wat is de gemakkelijkste manier om het te herstellen   nadat ik het kwijt ben?

Het beste plan is om het gewoon niet te verliezen.

U kunt een opdracht als deze gebruiken om een ​​SQL-bestand te maken dat u later kunt gebruiken om het account opnieuw te maken.

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

Is het wachtwoord in   /etc/mysql/debian.cnf hashed al

Het wachtwoord is niet gehasht.


57
2018-05-19 16:10





Je zou ook:

sudo dpkg-reconfigure mysql-server-5.0

Dit geeft je de mogelijkheid om de gebruiker debian-sys-maint opnieuw te maken. Bestaande gebruikers en databases zijn veilig.


19
2017-08-22 15:29



Dit werkte ook op mysql-server-5.5. - serverSentinel


De debian-sys-maint gebruiker is standaard een root equivalent. Het wordt gebruikt door bepaalde onderhoudsscripts op Debian-systemen, en als een neveneffect, kunnen gebruikers met root-toegang op de box het leesbare wachtwoord bekijken in /etc/mysql/debian.cnf (goed of slecht?)

U kunt de gebruiker opnieuw maken door:

GRANT ALL PRIVILEGES on *.* TO `debian-sys-maint`@`localhost` IDENTIFIED BY 'your password' WITH GRANT OPTION;

Net zorg ervoor dat het wachtwoord overeenkomt dat in /etc/mysql/debian.cnf


19
2018-05-19 16:17



Re (goed of slecht) - Als iemand erin slaagt root te worden, kunnen ze het privilege-systeem geheel omzeilen door de server eenvoudig opnieuw op te starten met de juiste opties. Als een aanvaller root wordt, hebt u waarschijnlijk grotere problemen dan dat configuratiebestand. - Zoredache
ook re: goed of slecht - Ik moest op de toegang van debian-sys-maint vertrouwen om het MySQL root-accountwachtwoord opnieuw in te stellen toen het was vergeten. Het was fijn om deze fallback-optie te hebben. - Brent
@Brent: Zie dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html voor het opnieuw instellen van mijn root-wachtwoord. Ik heb deze gebruiker op veel mysql-installaties op Debian uitgeschakeld omdat het bij het opstarten ergernis kan veroorzaken door tabellen te controleren als het grote tabellen zijn. - Nathan
Nathan, bedankt voor die link. Dat is nieuwe info voor mij. Als u een procedure hebt om het debian-sys-maint-account volledig uit te schakelen, waarom neemt u dit hier dan niet op als een afzonderlijk antwoord? Dat zou geweldig zijn! - Brent
een betere subsidie ​​zou alleen maar zijn om de shutdown / start-privileges te geven. - jmtd


Ik wilde gewoon commentaar geven, maar ik denk juiste syntaxis verdient zijn eigen toegang. Hiermee maakt u de debian-sys-maint gebruiker:

mysql> GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'plaintextpassword' WITH GRANT OPTION; FLUSH PRIVILEGES;

Als je nog steeds het bestand /etc/mysql/debian.cnf hebt, gebruik je het wachtwoord gewoon daar.

Kom gerust met meer paranoïde veilige oplossing.


18
2017-11-08 06:29



Het is zo paranoïde als het moet zijn. Dan is er maar één die het bestand moet kunnen lezen /etc/mysql/debian.cnf bestand zijn de Linux root gebruiker. En wanneer iemand dat bestand kan lezen, hebben ze dat al gedaan root toegang tot de machine en kan de MySQL-server stoppen en een eigen systeembeheerder toevoegen. En het script dat MySQL en andere pakketten opstart, kan geen beveiligingsonderhoud en ander onderhoud uitvoeren. Dus ja, het is net zo veilig als het ooit zou moeten zijn. En handig als u het MySQL-beheerderswachtwoord verliest om het te herstellen, zonder dat u het opnieuw hoeft te starten in de onveilige modus. ;-) - Anders
Dat is waar bewerken voor is. - RobinJ


Als u het moet toevoegen debian-sys-maint gebruiker alleen voor logrotate.d doeleinden, zou u moeten niet verlenen ALL PRIVILEGES of de GRANT OPTION - dit is een onnodig groot veiligheidsgat. In plaats daarvan kunt u de gebruiker gewoon toevoegen met de RELOAD privilege zoals dit (ervan uitgaande dat je toegang hebt tot je db als rooten u vervangt xxxxxx door uw wachtwoord)

# add the user with the reload right
GRANT RELOAD on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'xxxxxx'; 

# reload the rights
FLUSH PRIVILEGES;

# double check
select * from mysql.user;

6
2018-02-20 23:14



Dit is het enige beveiligde antwoord waaraan alleen de vereiste machtigingen worden verleend debian-sys-maint. Ik kan ook bevestigen dat het werkt als een charme. Proost! - Jealie
Is het echt een gat in de beveiliging? Als iemand al /etc/mysql/debian.cnf kan lezen, dan hebben ze vermoedelijk root-toegang en kunnen mysql toch opnieuw opstarten met --skip-grant-tabellen. - mc0e
Bedankt. Maar het is niet nodig om dingen twee keer door te spoelen, MySQL weet al wat de opdracht GRANT doet. Zien dev.mysql.com/doc/refman/5.6/en/privilege-changes.html - ygoe
En dit zal niet werken, zoals de debian-sys-maint gebruiker wordt ook gebruikt om de server uit te schakelen. En ook om te controleren op root-gebruikers bij het starten van de mysql-server. U moet dus op zijn minst bepaalde privileges verlenen aan mysql. * En afsluitprivileges. - Anders
@Anders Weet je zeker dat dit de volledige lijst met vereiste beurzen is? Zou je een antwoord kunnen plaatsen op deze vraag die ik net heb gemaakt? - augurar


In plaats van

GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY PASSWORD('your password') WITH GRANT OPTION; FLUSH PRIVILEGES;

I denk

GRANT ALL PRIVILEGES on *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY 'your password' WITH GRANT OPTION; FLUSH PRIVILEGES;

omdat het wachtwoord niet is gehashed ...?


3
2017-08-04 05:39





Zie als een kanttekening hiernaar deze mysqlperformanceblogpost om redenen waarom u debian-specifieke dingen zou willen uitschakelen.


2
2018-05-20 20:33



"Merk op dat dit geen probleem zou moeten zijn met MySQL van Debian Lenny, omdat het wordt geleverd met init-scripts die CHECK TABLE niet uitvoeren op niet-MYISAM-tabellen." - vanaf de gekoppelde pagina - d-_-b


Als ik MySQL 5.6+ gebruik, raad ik aan om de mysql_config_editor opdracht om een ​​invoer voor de gebruiker te maken 'debian-sys-maint'@'localhost' gebruik van het relevante wachtwoord, wat betekent dat het wachtwoord niet in platte tekst op de server hoeft te worden opgeslagen.

mysql_config_editor set --login-path=debian-sys-maint --host=localhost --user=debian-sys-maint --password

Hierna volgt het Debian-specifieke configuratiebestand /etc/mysql/debian.cnf kan worden gewijzigd, zodat de gebruikersnaam en wachtwoordgegevens niet in het bestand worden opgeslagen.

Wijzig ten slotte het logrotate-bestand voor MySQL zodat het de inloggegevens gebruikt die zijn opgeslagen in de ~/.mylogin.cnf bestand in plaats van het debian-specifieke bestand door te vervangen

/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf

met

/usr/bin/mysqladmin --login-path=debian-sys-maint

Ik hoop dat dit helpt :)

Dave


1
2018-01-20 00:17



Maar, zal het doel van de debian-sys-maint  gebruiker hierdoor bereikt worden? Dat pakketten moeten in staat zijn om deze gebruiker / wachtwoord te gebruiken om wat systeemonderhoud te doen zoals root gebruiker in het Linux-domein (niet root gebruiker in MySQL zonder dat de beheerder de root wachtwoord voor MySQL? - Anders
Het werkt voor mij in mijn tests, als u alle wijzigingen uitvoert, zoals het wijzigen van de /etc/mysql/debian.cnf om de wachtwoorden te verwijderen en het logrotate-bestand te wijzigen om naar de gegevens te verwijzen om de beveiligde gegevens te gebruiken. Ik weet niet zeker of de debian-sys-maint-gebruiker voor iets anders wordt gebruikt, maar als dit het geval is, kan dit u een indicatie geven van waar Debian dit gebruikersaccount namens u gebruikt. - Dave Rix