MySQL istemcisinin mylogin.cnf'den şifreyi okumasını nasıl sağlayabilirim?


11

Mysql istemcisi bir etkileşimli olarak verilen parola gerektirmeden bir mysql sunucusuna bağlanmak yapmaya çalışıyorum. Atılan adımlar:

1) Önce bir mylogin.cnf dosyası oluşturun

$ mysql_config_editor set --user=<user> --password --host=<host>
Enter password:

2) Dosya başarıyla oluşturuldu:

$ ls -la .mylogin.cnf
-rw-------. 1 urmt urmt  136 Dec 19 11:01 .mylogin.cnf
$ mysql_config_editor print --all
[client]
user = <user>
password = *****
host = <host>

3) mysql istemcisi kullanarak bağlayın

$ mysql <dbname>
ERROR 1045 (28000): Access denied for user '<user>'@'<host>' (using password: NO)

İstemcinin mylogin.cnf dosyasındaki parolayı yoksaymasını sağlayan bir varsayılan değer / yapılandırma var mı? Kullanıcı ve ana bilgisayar özellikleri dosyadan doğru şekilde okundu.

Komut satırında parolayı girirsem iyi bir şekilde bağlanabiliyorum:

$ mysql -p <dbname>
Enter password: 
Reading table information...
...
mysql> 

MySQL istemci sürümü 5.6.22, MySQL Server sürümü 5.6.22, hem Oracle Linux 6'da. İstemci ve sunucu farklı ana bilgisayarlarda.

Teşekkürler

Yanıtlar:


2

Bunu nasıl yaparsanız yapın, muhtemelen bir yere kaydedilmiş bir parolanız olur. MySQL 5.6 giriş yolu bile motivasyonu olan herkes tarafından kolayca çözülebilir. Bu uyarı, bunun kolay bir çözüm olacağını söyledi.

Ortam betiğinizde (örneğin ~/.profileveya ~/.bashrc)

alias mysql='mysql -uUser -pPasswd -hHostname'

(istediğiniz Kullanıcı, Parola ve Ana Bilgisayar Adını elbette koyarak.)

Kabuk yeniden girişinden sonra, sadece

mysql

... takma adınızı kullanır ve DB'ye bağlanır ve .my.cnfdosyalardaki şifreleri yok sayar .

Güvenlik notu: Sunucunuzda başka kullanıcılar varsa, parolanızı başkaları tarafından kolayca erişilememesi için 700 profil komut dosyanızı chmod 700 ile değiştirmek isteyebilirsiniz. Kök veya sudo içeren herhangi bir yönetici onu hala görebilir; bunun hiçbir yolu yok.


Bu asıl sorun için bir çözüm, ama ben iyiyim. Bu yanıtı gelecekteki okuyucular için feragatname ile kabul etmeliyim ki bunu yapmanın doğru yolu Nawaz cevabıdır, ancak bu bilinmeyen bir nedenden dolayı çevremde işe yaramıyor. Teşekkürler!
Lefteris Koutsoloukas

1
-1 bu OP'nin sorgusuna cevap vermez ve bir dosyada şifre saklamaktan kaçınır. şifre şimdi .mylogin.cnf yerine .profile dosyasında saklanır. Ancak şimdi şifre ps komutu tarafından görüntülenir.
miracle173

@ miracle, lütfen ps'in parolayı göstereceği iddiasını doğrulayın. Sistemlerimde, şifre ps çıktısında xxxxxxx olarak maskelenmiş olarak gösterilir. MySQL istemciniz benimki gibi davranmıyorsa, lütfen hangi mysql sürümünü ve dağıtımını çalıştırdığınızı bildirin. Ve OP'nin asıl sorusuna daha iyi bir cevabınız var mı?
Joshua Huber

2
@joshua: Parola Güvenliği için Son Kullanıcı Yönergeleri : " Komut satırında bir -pyour_passveya --password=your_passseçenek kullanın (...) Bu kullanışlı, ancak güvensiz ."
miracle173

10

önce giriş yolunu ayarlamak için aşağıdaki komutu kullanın

mysql_config_editor set --login-path = lgpath --user = kök -p
parolası

ve sonra mysql giriş yapmak için aşağıdaki komutu kullanın

mysql --login-path = lgyolu

MySQL giriş yolu seçenekleri hakkında yardım tarafından görülebilir arı

mysql_config_editor set --help


Önerdiğiniz gibi bir giriş yolu belirlemeye çalıştım, ancak maalesef aynı davranışa sahip: $ mysql_config_editor print --all [lgpath] kullanıcı = <kullanıcı> şifre = ***** ana bilgisayar = <host> $ mysql --login -path = lgpath HATA 1045 (28000): '<user>' @ '<host>' kullanıcısı için erişim reddedildi (parola kullanarak: HAYIR)
Lefteris Koutsoloukas

3

OP ile aynı sorunu yaşadım, ancak bu konudaki cevaplar beni şaşırttı. Vinay Mandala'nın bağlantısı aslında benim için çalıştı. Netlik için burada tekrar yayınlandı.

Benim sorunum:

ERROR 1045 (28000): Access denied for user '<user>'@'<host>' (using password: NO)

mysql_config_editorParoladaki özel karakterleri düzgün işlemediğini kanıtlar .

Çözüm:

Sizden mysql_config_editorparola istendiğinde, parolayı çift ​​tırnak işareti (") içine aldığınızdan emin olun . Daha sonra, iyi giriş yapabilirsiniz.


1

Bu hatayı alıyordum, hariç (şifre kullanarak: EVET)

Giovanni tarafından belirtildiği gibi, parola bir "#" nedeniyle oldu. İstendiğinde, geçici bir çözümün şifrenizin etrafına tırnak işaretleri koymak olduğunu buldum. Aynı kısıtlama .my.cnf kullanan düz metin parolalarda da vardır.


0

Nawaz yanıtı doğrudur. Ekleyecek çok az şeyim var. Varsayılan dosyanın bozuk olması durumunda, yeni bir yapılandırma dosyası oluşturmak için MYSQL_TEST_LOGIN_FILE ortam değişkeni ile bazı denemeler yapmanızı öneririm. Dosyaları --no-defaultsatlamak için de kullanın .cnf. Parola karakter içeriyorsa #, mysql login-pathçalışmaz.

$ export MYSQL_TEST_LOGIN_FILE=$HOME/mylogin.cnf

$ mysql_config_editor set --login-path=mytest --host=127.0.0.1 --port=5622 --user=mytest --password
Enter password:

$ ls -l $MYSQL_TEST_LOGIN_FILE
-rw------- 1 mysql mysql 288 Feb 27 14:25 mylogin.cnf

$ mysql --no-defaults --login-path=mytest test

Bu ortam değişkeni ayarlanmadı. Ben ayarladım ama aynı davranışı aldım. Mylogin.cnf dosyasındaki parola yoksayıldı.
Lefteris Koutsoloukas

mysqlKomutu çalıştıran kullanıcının olduğundan emin misiniz mysql? Değilse, sahibini değiştirin mylogin.cnfve çalışması gerekir :)
Iazel

0

Orijinal posterle benzer bir sorunla karşılaşıyorum. Şifrede düzgün şifrelenmemiş / şifresi çözülmeyen karakterlerle ilgili olduğundan şüpheleniyorum.

Onaylamak için parolayı basit bir şeye değiştirmeyi deneyin ve bu sorunun giderilip giderilmediğine bakın.


Aynı sorunu yaşadım. Plazgoth'un işaret ettiği gibi, şifrede özel bir karakterim vardı ve işe yaramadı. Benim için ne işe yaradı bu yazı kullanıcı bglad önerisi
Vinay Mandala

0

Bir kabuk betiği ile bu sorunu yaşadım. Betiğim $ HOME değerini değiştiriyordu ve bu --login-path = *** 'ın yok sayıldığına neden oldu. $ HOME değerini değiştirmeyi bıraktığımda çalışmaya başladı.


0

NOT linux kullanıcısınınpath altında çalıştırmaya çalışıyorsanız - Sadece kullanamazsınız . Kök IE olarak giriş yapmalısınız rootsudo

user@server:$ sudo su
user@server:$ Enter Password
root@server:$ mysql_config_editor set --login-path=data-main --user=<user> --password --host=<host>
root@server:$ Enter Password
root@server:$ exit
user@server:$ ...

Ayrıca buradaki diğer gönderilerde de belirtildiği gibi . Alfasayısal karakterler dışında herhangi bir şey içeriyorsa , şifrenizin çevresinde çift ​​tırnak kullanmanız gerekir mysql.

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.