Veritabanı şifrenizi mi unuttunuz? En iyimizin başına gelir. MySQL veya MariaDB veritabanınızın kök şifresini unuttuysanız veya kaybettiyseniz , sunucuya erişiminiz ve sudo
ayrıcalıklara sahip bir kullanıcı hesabınız varsa yine de erişim kazanabilir ve şifreyi sıfırlayabilirsiniz .
Not: Yeni Ubuntu 20.04 kurulumlarında, varsayılan MySQL veya MariaDB yapılandırması, genellikle, sistemin kök hesabından bağlantı yaptığınız sürece, bir parola sağlamadan veritabanına erişmenize (tam yönetici ayrıcalıklarıyla) izin verir . Bu senaryoda, parolayı sıfırlamak gerekli olmayabilir. Veritabanı kök parolanızı sıfırlamaya geçmeden önce , sudo mysql
komutla veritabanına erişmeyi deneyin . Yalnızca, kimlik doğrulama için varsayılan yapılandırma değiştirilmişse ve bu, erişim reddedildi hatasıyla sonuçlanıyorsa , bu öğreticideki adımları izleyin.
İçindekiler
Adım 1 — Veritabanı Sürümünü Belirleme ve Sunucuyu Durdurma
Ubuntu 20.04, MySQL veya MariaDB’yi çalıştırır; bu, MySQL ile tamamen uyumlu, popüler bir drop-in yedeğidir. root
Hangisini yüklediğinize bağlı olarak parolayı kurtarmak için farklı komutlar kullanmanız gerekecek , bu nedenle hangi veritabanı sunucusunu çalıştırdığınızı belirlemek için bu bölümdeki adımları izleyin.
Sürümünüzü aşağıdaki komutla kontrol edin:
1 | $ mysql --version |
MariaDB çalıştırıyorsanız, çıktıda sürüm numarasının önünde “MariaDB” ifadesini görürsünüz:
1 | mysql Ver 15.1 Distrib 10.3.25-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2 |
MySQL kullanıyorsanız şöyle bir çıktı göreceksiniz:
1 | mysql Ver 8.0.22-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu)) |
Çalıştırdığınız veritabanını not edin. Bu, bu öğreticinin geri kalanında izlenecek uygun komutları belirleyecektir.
Kök parolasını değiştirmek için veritabanı sunucusunu kapatmanız gerekir. MariaDB kullanıyorsanız, bunu aşağıdaki komutla yapabilirsiniz:
1 | $ sudo systemctl stop mariadb |
MySQL için, aşağıdakileri çalıştırarak veritabanı sunucusunu kapatın:
1 | $ sudo systemctl stop mysql |
Veritabanı durdurulduğunda, kök parolasını sıfırlamak için güvenli modda yeniden başlatabilirsiniz.
Adım 2 — Veritabanı Sunucusunu İzin Kontrolleri Olmadan Yeniden Başlatma
MySQL ve MariaDB’yi izin denetimi olmadan çalıştırmak, geçerli bir parola sağlamadan kök ayrıcalıklarıyla veritabanı komut satırına erişmeyi sağlar. Bunu yapmak için, veritabanının kullanıcı ayrıcalık bilgilerini depolayan hibe tablolarını yüklemesini durdurmanız gerekir . Bu biraz güvenlik riski olduğundan, diğer istemcilerin geçici olarak savunmasız sunucuya bağlanmasını önlemek için ağı da devre dışı bırakmak isteyebilirsiniz.
Hangi veritabanı sunucusunu kurduğunuza bağlı olarak, hibe tablolarını yüklemeden sunucuyu başlatma şekli farklılık gösterir.
MariaDB’yi Hibe Tabloları Olmadan Başlayacak Şekilde Yapılandırma
MariaDB sunucusunu hibe tabloları olmadan başlatmak systemd
için, MariaDB sunucu arka plan programı için ek parametreler ayarlamak üzere birim dosyasını kullanacağız .
MariaDB tarafından başlangıçta kullanılan MYSQLD_OPTS ortam değişkenini ayarlayan aşağıdaki komutu yürütün. --skip-grant-tables v
e --skip-networking
seçenekler özellikler hibe tabloları yüklerken ya ağ olmadan başlatmak için mariadb söyle:
1 | $ sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking" |
Ardından MariaDB sunucusunu başlatın:
1 | $ sudo systemctl start mariadb |
Bu komut herhangi bir çıktı üretmeyecek, ancak yeni ortam değişkeni ayarlarını dikkate alarak veritabanı sunucusunu yeniden başlatacaktır.
ile başladığına emin olabilirsiniz sudo systemctl status mariadb
.
Artık bir parola sağlamadan MariaDB kök kullanıcısı olarak veritabanına bağlanabilmelisiniz :
1 | $ sudo mysql -u root |
Hemen bir veritabanı kabuğu istemi göreceksiniz:
1 | MariaDB [(none)] |
Artık veritabanı sunucusuna erişiminiz olduğuna göre, kök parolayı Adım 3’te gösterildiği gibi değiştirebilirsiniz .
MySQL’i Hibe Tabloları Olmadan Başlayacak Şekilde Yapılandırma
MySQL sunucusunu hibe tabloları olmadan başlatmak için, MySQL’in sistem yapılandırmasını, başlatma sırasında sunucuya ek komut satırı parametreleri iletecek şekilde değiştireceksiniz.
Bunu yapmak için aşağıdaki komutu yürütün:
1 | $ sudo systemctl edit mysql |
Bu komut, nano
düzenleyicide MySQL’in hizmet geçersiz kılmalarını düzenlemek için kullanacağınız yeni bir dosya açacaktır . Bunlar MySQL için varsayılan hizmet parametrelerini değiştirir.
Bu dosya boş olacak. Aşağıdaki içeriği ekleyin:
1 2 3 | [Service] ExecStart= ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking |
İlk ExecStart
ifade varsayılan değeri temizlerken, ikincisi systemd
, hibe tablolarının yüklenmesini ve ağ oluşturma yeteneklerini devre dışı bırakma parametreleri dahil olmak üzere yeni başlatma komutunu sağlar.
Basın CTRL-x
, ardından dosyayı çıkmak için Y
daha sonra, yaptığınız bu değişiklikleri kaydetmek için ENTER
dosya adını onaylayın.
systemd
Bu değişiklikleri uygulamak için yapılandırmayı yeniden yükleyin :
1 | $ sudo systemctl daemon-reload |
Şimdi MySQL sunucusunu başlatın:
1 | $ sudo systemctl start mysql |
Komut çıktı göstermeyecek, ancak veritabanı sunucusu başlayacaktır. Hibe tabloları ve ağ iletişimi etkinleştirilmeyecektir.
Kök kullanıcı olarak veritabanına bağlanın:
1 | $ sudo mysql -u root |
Hemen bir veritabanı kabuğu istemi göreceksiniz:
1 | mysql |
Artık sunucuya erişiminiz olduğuna göre, root şifresini değiştirebilirsiniz .
Adım 3 — Kök Parolayı Değiştirme
Veritabanı sunucusu artık sınırlı bir modda çalışıyor; hibe tabloları yüklenmez ve etkinleştirilmiş ağ desteği yoktur. Bu, bir parola sağlamadan sunucuya erişmenizi sağlar, ancak verileri değiştiren komutları yürütmenizi engeller. Kök parolasını sıfırlamak için, sunucuya erişim elde ettiğinize göre artık hibe tablolarını yüklemelisiniz.
Veritabanı sunucusuna şu FLUSH PRIVILEGES
komutu vererek hibe tablolarını yeniden yüklemesini söyleyin :
1 | mysql FLUSH PRIVILEGES; |
Artık root şifresini değiştirebilirsiniz . Kullandığınız yöntem, MariaDB veya MySQL kullanıp kullanmadığınıza bağlıdır.
MariaDB Parolasını Değiştirme
MariaDB kullanıyorsanız, kök hesabın parolasını ayarlamak için aşağıdaki ifadeyi yürütün ve new_password
hatırlayacağınız güçlü bir yeni parolayla değiştirdiğinizden emin olun :
1 | MariaDB [(none)] ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; |
Parolanın değiştiğini belirten bu çıktıyı göreceksiniz:
1 | Query OK, 0 rows affected (0.001 sec) |
MariaDB, özel kimlik doğrulama mekanizmalarının kullanılmasına izin verir, bu nedenle, MariaDB’ninkök hesaba atadığınız yeni parola için varsayılan kimlik doğrulama mekanizmasını kullanacağından emin olmak için aşağıdaki iki ifadeyi yürütün :
1 2 | MariaDB [(none)] UPDATE mysql.user SET authentication_string = '' WHERE user = 'root'; MariaDB [(none)] UPDATE mysql.user SET plugin = '' WHERE user = 'root'; |
Her ifade için aşağıdaki çıktıyı göreceksiniz:
1 | Query OK, 0 rows affected (0.001 sec) |
Şifre şimdi değiştirildi. Tip exit
mariadb konsolunu çıkıp normal modda veritabanı sunucusunu yeniden başlatmak için 4. Adıma devam etmek.
MySQL Parolasını Değiştirme
MySQL için, root kullanıcısının şifresini değiştirmek için aşağıdaki ifadeyi yürütün ve new_password
hatırlayacağınız güçlü bir şifre ile değiştirin . MySQL, özel kimlik doğrulama mekanizmalarının kullanılmasına izin verir, bu nedenle aşağıdaki ifade ayrıca MySQL’in yeni parolayı kullanarak kök kullanıcının kimliğini doğrulamak için varsayılan kimlik doğrulama mekanizmasını kullanmasını sağlar:
1 | mysql ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'new_password'; |
Parolanın başarıyla değiştirildiğini belirten bu çıktıyı göreceksiniz:
1 | Query OK, 0 rows affected (0.001 sec) |
Şifre şimdi değiştirildi. Yazarak MySQL konsolundan çıkın exit
.
Veritabanını normal çalışma modunda yeniden başlatalım.
Adım 4 — Veritabanı Sunucunuzu Normal Ayarlara Döndürme
Veritabanı sunucusunu normal modunda yeniden başlatmak için, ağ oluşturmanın etkinleştirilmesi ve hibe tablolarının yüklenmesi için yaptığınız değişiklikleri geri almanız gerekir. Yine, kullandığınız yöntem, MariaDB veya MySQL kullanıp kullanmadığınıza bağlıdır.
MariaDB için MYSQLD_OPTS
daha önce ayarladığınız ortam değişkeninin ayarını kaldırın :
1 | $ sudo systemctl unset-environment MYSQLD_OPTS |
Ardından, aşağıdakileri kullanarak hizmeti yeniden başlatın systemctl
:
1 | $ sudo systemctl restart mariadb |
MySQL için, değiştirilmiş systemd yapılandırmasını kaldırın:
1 | $ sudo systemctl revert mysql |
Aşağıdakine benzer bir çıktı göreceksiniz:
1 2 | Removed /etc/systemd/system/mysql.service.d/override.conf. Removed /etc/systemd/system/mysql.service.d. |
Ardından değişiklikleri uygulamak için systemd yapılandırmasını yeniden yükleyin:
1 | $ sudo systemctl daemon-reload |
Son olarak, hizmeti yeniden başlatın:
1 | $ sudo systemctl restart mysql |
Veritabanı şimdi yeniden başlatıldı ve normal durumuna geri döndü. Bir parola ile kök kullanıcı olarak oturum açarak yeni parolanın çalıştığını doğrulayın :
1 | $ mysql -u root -p |
Bir şifre girmeniz istenecektir. Yeni parolanızı girin ve beklendiği gibi veritabanı istemine erişim kazanacaksınız.
Çözüm
MySQL veya MariaDB sunucusuna yönetici erişimini geri yüklediniz. Seçtiğiniz yeni parolanın güçlü ve güvenli olduğundan emin olun ve güvenli bir yerde saklayın.