MySQL kimlik bilgilerini Linux komut satırından test etmek ister misiniz?


Yanıtlar:


5

@ 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();
  • USER (), MySQL'de nasıl kimlik doğrulaması yapmaya çalıştığınızı bildirir
  • CURRENT_USER (), MySQL'de nasıl kimlik doğrulamanıza izin verildiğini bildirir

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=tcpkomut 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 myuserise 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 rootkullanı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.


13
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 1Geçersiz bağımsız değişkenlerde otomatik çıkış yapmak için sonuna ekleyebilirsiniz . Ayrıca /dev/nullotomatik olarak oluşturulan MySQL hata mesajını beğenmezseniz stderr'i yönlendirmek isteyebilirsiniz .


6

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.


2
Programlı olarak kontrol etmek istiyorum. Doğru ya da yanlış döndüren bir şey gibi.
Jake Wilson

2
mysql --user=user_name --password=your_password dbname

Sorunuz bu kadar basit mi yoksa test etmeniz gereken özel bir durum var mı?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.