it-swarm.asia

Debian-sys-maint MySQL kullanıcısı (ve daha fazlası) nedir?

Ubuntu depolarından yüklenen mysql-sunucu paketlerine varsayılan olarak yüklenen 'debian-sys-maint' kullanıcısı tarafından birkaç kez ısırıldım.

Genellikle sorun giderme veya yeni geliştirme için üretim veritabanımızın (Debian/Ubuntu üzerinde çalışmayan) yeni bir kopyasını çekiyorum ve mysql.user tablosunu hariç tutmayı ve böylece debian-sys-maint kullanıcısını kaybetmeyi unutuyorum.

Herhangi bir nedenden dolayı yeni mysql kullanıcıları eklersek, bunları tabloyu kaplamak yerine geliştirme ortamımda 'birleştirmem' gerekir.

Kullanıcı olmadan sistemim hala işlevsel görünüyor, ancak aşağıdaki gibi hatalarla uğraştı:

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 ne için kullanılır?
    • Paket sahiplerinin yapmaya çalıştıkları şeyi yapmaları için daha iyi bir yol var mı?
  • Kaybolduktan sonra geri yüklemenin en kolay yolu nedir?
  • Bu kullanıcı için doğru/asgari ayrıcalık grubu nedir?
    • '*. * ...' a tüm ayrıcalıkları tanımak kötü bir fikir gibi görünüyor.

Düzenle

Ek soru - /etc/mysql/debian.cnf içindeki şifre zaten karma mı yoksa düz metin şifre mi? Kullanıcıyı yeniden oluşturduğunuzda önemlidir ve ilk denemede asla doğru şekilde görünmüyorum.

Teşekkürler

69
Joe Holloway

Debian-sys-maint ne için kullanılır?

Bunun için kullanılan önemli bir şey, sunucuya günlükleri yuvarlamasını söylemektir. En azından yeniden yükleme ve kapatma ayrıcalığına ihtiyaç duyuyor.

/etc/logrotate.d/mysql-server dosyasına bakın

Sunucunun durumunu almak için /etc/init.d/mysql Komut dosyası tarafından kullanılır. Sunucuyu incelikle kapatmak/yeniden yüklemek için kullanılır.

İşte README'den alıntı.

* 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.

Kaybolduktan sonra geri yüklemenin en kolay yolu nedir?

En iyi plan sadece kaybetmemek. Şifreyi gerçekten kaybederseniz, başka bir hesap kullanarak sıfırlayın. Mysql sunucusundaki tüm yönetici ayrıcalıklarını kaybettiyseniz, kök parolayı sıfırlamak için yönergeleri izleyin, ardından debian-sys-maint 'U onarın.

Hesabı yeniden oluşturmak için daha sonra kullanabileceğiniz bir SQL dosyası oluşturmak için böyle bir komut kullanabilirsiniz.

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

/Etc/mysql/debian.cnf içindeki şifre zaten karma mı?

Parola yüklendiğinde karma/şifrelenmez, ancak mysql'nin yeni sürümlerinin artık kimlik bilgilerini şifreleme yolu vardır (bkz: https://serverfault.com/a/75036 ).

58
Zoredache

debian-sys-maint kullanıcı varsayılan olarak a kök eşdeğeri şeklindedir. Debian sistemlerinde belirli bakım komut dosyaları tarafından kullanılır ve yan etki olarak, kutuda kök erişimine sahip kullanıcıların /etc/mysql/debian.cnf (iyi veya kötü?)

Kullanıcıyı şu yollarla yeniden oluşturabilirsiniz:

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

Sadece şifrenin eşleştiğinden emin olun /etc/mysql/debian.cnf

22
Brent

Sadece yorum yapmak istedim, ama sanırım doğru sözdizimi kendi girişini hak ediyor. Bu, debian-sys-maint kullanıcıyı oluşturur:

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

Hala /etc/mysql/debian.cnf dosyanız varsa, oradaki parolayı kullanmanız yeterlidir.

Daha fazlasını bulmaktan çekinmeyin paranoyak güvenli çözüm.

19
d-_-b

Ayrıca yapabilirdin:

Sudo dpkg-reconfigure mysql-server-5.0

Bu size debian-sys-maint kullanıcısını yeniden oluşturma seçeneği sunacaktır. Mevcut kullanıcılar ve veritabanları güvenlidir.

19
Spoom

debian-sys-maint kullanıcı sadece logrotate.d amaçlar, değil hibe ALL PRIVILEGES ya da GRANT OPTION - Bu gereksiz bir dev güvenlik deliği. Bunun yerine, kullanıcıyı RELOAD ayrıcalığına sahip olarak ekleyebilirsiniz (db'nize root olarak eriştiğinizi varsayarsak ve xxxxxx'i şifrenizle değiştirirseniz)

# 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;

2019 Güncellemesi

Bu cevap güncel olmayabilir - lütfen aşağıdaki güçlü görüşlere bakın.

6
Mark Chackerian

debian-sys-maint gerekli izinler

Diğer yanıtlar, debian-sys-maint kullanıcısı için gereken minimum izinler kümesi dışında her şeyi yeterince ele almıştır. Buradaki cevapların çoğu bu açıdan yanlış ve aslında tehlikelidir. Debian-sys-maint ayrıcalıklarını (hibe seçeneği dahil) aşağıdaki okuma ve anlamadan azaltmayın:

Debian bakıcısı kullanıcıya kaprisli bir şekilde tüm ayrıcalıkları vermedi. İşte gerekli olan, nerede ve neden. Bu ayrıcalıklardan bazıları başkalarının üst kümeleridir, ancak bir şeyleri özelleştirmek ve gereksinimlerini kaldırmak istiyorsanız bunları bağımsız olarak listeleyeceğim:

  • kapatma ve yeniden yükle, /etc/init.d/mysql tarafından yapılan kapanma veya bir veritabanı oluşturma için yeterince şaşırtıcı değil
  • mysql.user üzerinde seçin, veritabanı başlatıldığında yapılan sağlık kontrolleri için gereklidir ve bir kök kullanıcı olduğundan emin olun. Her başlatmayı /us/mysql/debian-start (/etc/init.d/mysql olarak adlandırılır) ile /usr/share/mysql/debian-start.inc.sh dosyasındaki check_root_accounts işlevindeki gerçek kodla yapın.
  • çökmüş tabloları kontrol etmek için gerekli info_schema.tables, global select öğesini seçin. Her başlatmayı /us/mysql/debian-start (/etc/init.d/mysql olarak adlandırılır) ile /usr/share/mysql/debian-start.inc.sh dosyasındaki check_for_crashed_tables işlevindeki gerçek kodla yapın
  • genel tüm ayrıcalıklar, bir güncelleme veya Debian yükseltmesi yoluyla yeni bir MySQL sürümü yüklüyse/yükseltildiğinde tabloları yükseltmek için gereklidir. Her başlatmayı /us/mysql/debian-start (/etc/init.d/mysql olarak adlandırılır) ile /usr/share/mysql/debian-start.inc.sh dosyasındaki upgrade_system_tables_if_necessary işlevindeki gerçek kodla bitirir - aslında MySQL ikili mysql_upgrade'i çağırır - işlev adıyla kandırılmayın (yükseltme_sistemi_tablosları_if_normali), bu tüm tablolara potansiyel olarak dokunabilir - aşağıya bakın

Sonuncusu, elbette, imtiyazlar için temel gereksinimdir. Mysql_upgrade için man sayfası şunu belirtir:

mysql_upgrade, MySQL Server'ın geçerli sürümüyle uyumsuzluk açısından tüm veritabanlarındaki tüm tabloları inceler. mysql_upgrade ayrıca eklenmiş olabilecek yeni ayrıcalıklardan veya özelliklerden yararlanabilmeniz için sistem tablolarını da yükseltir.

Mysql_upgrade bir tablonun olası bir uyumsuzluğa sahip olduğunu bulursa, bir tablo denetimi gerçekleştirir ve sorun bulunursa bir tablo onarımı dener.

WARNING debian-sys-maint'in sahip olduğu ayrıcalıkları azaltmaya karar verirseniz, gelecekteki debian güvenlik güncellemelerini elle işlemeye hazır olduğunuzdan emin olun ve/veya MySQL'e dokunan yükseltmeler. MySQL paketlerinde debian-sys-maint ayrıcalığına sahip bir güncelleme gerçekleştirirseniz ve mysql_upgrade sonuç olarak tamamlanamazsa, veritabanınızı tanımsız (okuma bozuk) durumda bırakabilir. Bir güncelleme gelinceye kadar ayrıcalıkların azaltılmasıyla ilgili herhangi bir günlük sorun olmayabilir, bu yüzden güvenli olduğunu düşünmek için zararlı etkileri olmayan ayrıcalıkları zaten azaltmış olmayın.

3
Kurt Fitzner

Onun yerine

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

Bence

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

parola karma olmadığı için ...?

3
Sean

MySQL 5.6+ kullanırken, mysql_config_editor Komutunu kullanarak kullanıcı için 'debian-sys-maint'@'localhost' İçin ilgili şifreyi kullanarak bir giriş oluşturun, yani şifrenin düz metin olarak saklanması gerekmez. sunucusu.

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

Bundan sonra, debian'a özgü yapılandırma dosyası /etc/mysql/debian.cnf Değiştirilebilir, böylece kullanıcı adı ve şifre bilgileri dosyada saklanmaz.

Son olarak, MySQL için logrotate dosyasını değiştirerek debian'a özgü dosya yerine ~/.mylogin.cnf Dosyasında saklanan oturum açma bilgilerini kullanacak şekilde değiştirin.

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

ile

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

Bu yardımcı olur umarım :)

Dave

2
Dave Rix

Bunun bir yan notu olarak, debian'a özgü şeyleri devre dışı bırakmak isteyebileceğiniz nedenlerden dolayı bu mysql performans blog yazısı adresine bir göz atın.

2
Jon Topper