MySQL Root Şifresi Sıfırlama

Burak
5 sene önce

ilk olarak sudo service mysql stop komutu mysql servisini durdurun. daha sonra mysql servisini yetkiler tablosunu kontrol etmeyecek şekilde başlatın. bu işlem için de sudo mysqld_safe --skip-grant-tables & komutu yeterli.

burada eğer ‘mysqld_safe Directory ‘/var/run/mysqld’ for UNIX socket file don’t exists.’ hatası alırsanız sunucunuzda /var/run/mysqld klasörü olmadığı içindir. sudo mkdir /var/run/mysqld komutu ile klasörü oluşturun. daha sonra sudo chown mysql:mysql /var/run/mysqld komutu ile de mysql işleminin klasör üzerinde işlem yapabilmesi için izin verin.

https://stackoverflow.com/questions/42153059/mysqld-safe-directory-var-run-mysqld-for-unix-socket-file-dont-exists

yukarıda sudo mysqld_safe --skip-grant-tables & komutunun sonundaki & işareti işlemin arka planda çalışması anlamına geliyor. bu yüzden terminal ekranınız komut sanki tamamlanmamış gibi duracak ve burak@ubuntu:gecerliklasor yazmayacak ancak mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql gibi bir şey yazıyorsa sorun yok demektir.

artık mysql veritabanımızda şifresiz olarak oturum açabiliriz. mysql -uroot komutu ile mysql’e bağlanın.

  1. FLUSH PRIVILEGES;
  2. ALTER USER 'root'@'localhost' IDENTIFIED BY 'yenisifre';
  3. eğer 2. adımdaki komut çalışmazsa UPDATE mysql.user SET authentication_string = PASSWORD('yenisifre') WHERE User = 'root' AND Host = 'localhost'; komutu da aynı işe yarar.
  4. komutlarda bir aksilik yoksa ekranda Query OK, 0 rows affected (0.00 sec) yazıyor olmalı.

şunu da belirtmek gerekiyor: yukarıda yazılan SQL kodu sizin işinize yaramayabilir. örneğin kendi kullandığım SQL sunucumda root@localhost kullanıcısı yerine user@ipadresi (user kullanıcısının sadece uygulama sunucusundan (@ipadresi) gelen isteklere cevap vermesi için) kullanıcısı var. bilmeniz gereken yukarıdaki işlemi sonrası artık SQL sunucunuzda oturum açmış olduğunuz ve istediğiniz SQL komutunu kullanabildiğiniz. burada SQL ile ilgili oldukça güzel dersler var ve örnek veriler üzerinde çalışabiliyorsunuz.

şifreniz yenisifre olarak ayarlandı. son olarak mysql servisini yeniden başlatmanız gerekli ancak sudo service mysql start komutu mysqld (sudo mysqld_safe --skip-grant-tables & komutu ile açmıştınız) çalıştığı için burada işe yaramaz, önce bu işlemi sonlandırmanız gerekli. sudo cat /var/run/mysqld/mysqld.pid komutu ile çalışan mysql uygulamasının id’sini öğrenin. daha sonra bu id numarası (1905 olduğunu varsayalım) ile sudo kill 1905 komutunu kullanarak servisi durdurun. sudo service mysql start komutu ile mysql servisini başlatın. artık yeni şifreniz ile giriş yapabilirsiniz.