MySQL kimlik bilgilerini bir Linux sunucusundaki komut satırından nasıl test edersiniz?
MySQL kimlik bilgilerini bir Linux sunucusundaki komut satırından nasıl test edersiniz?
Yanıtlar:
@ Phil'in Cevabı ve @ Mr.Brownstone'un Cevabı sorunuz için yeterli olmalı, bu yüzden ikisi için +1.
Aşağıdakiler için, kullanıcı adıyla giriş yaptığınızı varsayalım myuser
MySQL'e bağlandıktan sonra aşağıdaki sorguyu çalıştırmalısınız:
SELECT USER(),CURRENT_USER();
Bazen farklıdırlar. Bu, neden mysql oturumu açmanıza izin verildiğine ilişkin fikir verebilir.
İşte çalıştırmanız gereken başka bir sorgu:
SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';
Bu size, giriş yapma izninizin nasıl olduğunu gösterecektir myuser
.
Görüyorsanız 'myuser'@'localhost'
, DB Server içinden kimlik doğrulaması yapabilirsiniz.
Görüyor 'myuser'@'127.0.0.1'
ve görmüyorsanız 'myuser'@'localhost'
, yeniden DB Server içinden kimlik doğrulaması yapabilirsiniz, ancak --protocol=tcp
komut satırından belirtmeniz gerekir .
Eğer görürseniz 'myuser'@'%'
, o zaman herhangi bir sunucudan uzak oturumların yapabilirsiniz.
Görüyorsanız 'myuse'r@'10.20.30,%'
, yalnızca 10.20.30.% Netblock üzerinden uzaktan oturum açabilirsiniz.
Kullanıcı için 'mysql.user' öğesinin ne olduğunu gördükten sonra, myuser'ın günlükten diğerine değil bir şekilde oturum açmasına izin vermek veya kısıtlamak isteyebilirsiniz.
İçin şifre eğer sadece kontrol etmek isterseniz myuser
ise whateverpassword
, aşağıdakileri yapabilirsiniz:
SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');
Komut satırından aşağıdaki gibi kontrol edebilirsiniz:
PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`
Yalnızca root
kullanıcımı test etmiyorsanız ve test etmek istiyorsanız, bunu yapabilirsiniz:
PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`
1 alırsanız, kullanıcım için şifre iyi olarak doğrulanır.
mysql -h host -u user -p<whatever> -e"quit"
Bu, programlı olarak sunucuya sorgu göndermek için kullandığınız aynı bağlantı dizesini kullanmanızı sağlar. || exit 1
Geçersiz bağımsız değişkenlerde otomatik çıkış yapmak için sonuna ekleyebilirsiniz . Ayrıca /dev/null
otomatik olarak oluşturulan MySQL hata mesajını beğenmezseniz stderr'i yönlendirmek isteyebilirsiniz .
Aşağıdaki komutu kullanabilirsiniz (PATH'nizde mysql kurduğunuz varsayılarak):
mysql -h ana bilgisayar -u kullanıcı -p
Sadece yerine ev sahibi ve kullanıcıyı doğru değerlerle ve sonra da parola istenmeyecektir.