Skip to main content

MySQL Root Şifresini Yenilemek

MySQL'e giriş için "root" şifrenizi unuttuysanız veya "root" şifrenizi yenilemek istiyorsanız aşağıdaki adımları takip edebilirsiniz.


MySQL'i durdurun.

İşlemlere başlamadan önce MySQL'i aşağıdaki komut ile durdurun.


Şimdi ise MySQL'i durdurmamız gerekir. Bunun için aşağıdaki komutu çalıştırın. Farklı linux dağıtımlarında bu komut biraz değişebilmektedir.

$ sudo systemctl stop mysql.service veya
sudo service mysql stop veya
sudo service mysqld stop veya
sudo /etc/init.d/mysqld stop gibi


Şimdi ise MySQL işlemi tarafından kullanılacak olan socket dosyasını ve bu dosyanın yer alacağı klasörü oluşturup gerekli izinleri verelim.

$ sudo mkdir -p /var/run/mysqld
$ sudo chown mysql:mysql /var/run/mysqld


MySQL'i şifresiz çalıştırın.

Bu aşamada MySQL'i şifresiz olarak çalıştıracağız. Ancak bu durum güvenlik açısından oldukça tehlikeli bir durumdur ve sunucumuz herhangi bir kişinin erişimine açık hale gelecektir. Bu yüzden buradan sonraki kısımları olabildiğince hızlı yapmamız gerekir.


MySQL'i şifresiz çalıştırmak için aşağıdaki komutu istemcide (terminalde) çalıştıralım.

$ sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &


İşlemin çalıştığından emin olalım.

$ jobs
[1]+ Running mysqld --skip-grant-tables --skip-networking &


Şimdi MySQL sunucusune şifresiz giriş yapalım.

$ mysql -u root


Mevcut ayrıcalıkları iptal edelim.

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)


"root" şifresi "mysql" veritabanında saklanır. Bu yüzden "mysql" veritabanını kullanmaya başlayalım.

mysql> use mysql;
Database changed


Yeni şifre belirleyin.

"root" kullanıcısı için belirlediğiniz şifreyi aşağıdaki şekilde veritabanına kaydedebilirsiniz.

mysql> UPDATE user SET authentication_string=PASSWORD("şifre") WHERE User='root';
Query OK, 0 rows affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 1


Yukarıdaki şifre yazan yere belirlediğiniz şifreyi yazmalısınız. Diğer kullanıcılar için şifre belirlemek istediğinizde ise root yerine şifresi değiştirilecek kullanıcı adını yazabilirsiniz.


Şimdi ise "root" için plugin'i belirleyelim.

mysql> UPDATE user SET plugin="mysql_native_password" WHERE User='root';
Query OK, 0 rows affected (0.00 sec)


Artık şifre değiştirme işlemi başarıyla tamamlanmıştır. Artık "mysql" veritabanından çıkış yapabiliriz ve MySQL işlemini durdurabiliriz.

mysql> quit
$ sudo pkill mysqld


MySQL işleminin sonlandırıldığından emin olalım.

$ jobs
[1]+ Done mysqld --skip-grant-tables --skip-networking


Artık MySQL sunucusunu başlatabiliriz.

$ sudo systemctl start mysql.service



Not

Yukarıda her defasında "sudo" yazmak istemiyorsanız. linux sunucunuza "root" şifresi ile bağlanmanız gerekir. Kafa karışıklığı olmasın. Her ne kadar ikisi de aynı "root" ismini kullanıyorlarsa da bunlar farklı kullanıcılardır. Biz burada MySQL'in "root" şifresini yenilemek istiyoruz ve bunun için linux sunucumuzun "root" şifresi ile giriş yapıyoruz. İstemcide (terminalde) aşağıdaki komut ile linux sunucuya root olarak bağlanalım ve sorulduğu zaman linux sunucusunun "root" şifresini girelim.

sudo su


Kaynak: https://gist.github.com/syahzul/1b3a8dc17ba799dd9375d55c0f807593