MySQL için şifremi nasıl silebilirim? Veritabanına bağlanmak için bir parola istemiyorum. Sunucum Ubuntu çalıştırıyor.
MySQL için şifremi nasıl silebilirim? Veritabanına bağlanmak için bir parola istemiyorum. Sunucum Ubuntu çalıştırıyor.
Yanıtlar:
Şahsen, bunun yerine bir şifre ayarlamak ve /root/.my.cnf içine kaydetmek daha iyi olduğunu düşünüyorum:
İlk:
mysqladmin -u root password 'asdfghjkl'
Ardından root'un .my.cnf dosyasını düzenleyin:
[client]
password = asdfghjkl
Emin olun chmod 0600 .my.cnf.
Şimdi bir şifreniz var, ancak artık sizden istenmiyor. Varsayılan MySQL sunucu kurulumum, bu gibi .my.cnf dosyasına kaydedilen her MySQL sunucusu için tamamen rastgele benzersiz bir şifredir.
mv ./+%Y%m%dMysqldump ve gzip arasında eksik . $ Db.sql $ OUTPUT`
Evet, daha az parola iyi bir şey olabilir. Ancak veritabanını herkes için açmayın.
unix_socket aracılığıyla:
grant usage on *.* to 'root'@'localhost' identified via unix_socket;
Bu, yerel olarak oturum açmış bir kök kullanıcı için şifresiz mysql erişim sağlar. Btw. bu son ubuntu / debian sürümlerinde varsayılan değerdir.
some_user@box: mysql -u root # denied
root@box: mysql # good
some_user@box: sudo mysql # good, if "some_user" has sudo rights.
Açıklayıcı slaytlar: https://www.slideshare.net/ottokekalainen/less-passwords-more-security-unix-socket-authentication-and-other-mariadb-hardening-tips .
MySQL için ayarlanmış bir parolanız varsa MySQL kök Parolasını Kurtar bölümündeki talimatları izleyin ve ardından parolanızı null olarak ayarlayın:
5.7.6 ve üstü için
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'
5.7.5 ve öncesi için
update user set password=PASSWORD("") where User='root';
* bunun etkili olması için DB'nin yeniden başlatılması gerekir (bağlantıdaki talimatları inceleyin)
sudo service mysql restart
unix_socketEklenti biraz daha farklı bir şeyi yapar.
IDENTIFIED VIA unix_socketİfadesi yalnızca mariadb içindir.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket;
MySQL için de aynı şey başarılır IDENTIFIED WITH auth_socket.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED WITH auth_socket;
Sadece iki kelimeden oluşan bir fark, ama gerçekten aynı değiller.