2012-11-18 18 views
5

Bir mysql db erişimi için basit bir düğüm örneği çalıştırmaya çalışıyorum ve şu hatayı alıyorum Hata: ER_ACCESS_DENIED_ERROR:'root'@'ubuntu.local kullanıcısı için erişim reddedildi '(şifre kullanarak: EVET)node.js kullanılarak mysql veritabanına erişme konusunda yardıma ihtiyacınız var

var mysql  = require('mysql'); 
var connection = mysql.createConnection({ 
    host  : '192.168.0.12', 
    user  : 'root', 
    password : 'password', 
    database : 'app' 
}); 

connection.connect(); 

connection.query('SELECT * from users', function(err, rows, fields) { 
    if (err) throw err; 

    console.log('The solution is: ', rows[0]); 
}); 

connection.end(); 

yukarıdaki önceden, yanlış yapıyor olabilir ne olduğu sayesinde node.js.Any önerileri kullanarak mysql erişim için kodudur.

+1

mysql konsolundan bağlanabilir misiniz? 'mysql -h 192.168.0.12 -u root -p app' (istek sonrası şifreyi girin) –

+0

'muhtemelen' localhost 'setine ihtiyacım var –

+0

nope Yapamam, bana verdiğin komutu çalıştır, ama eğer ip addr'i değiştirirsem localhost ile komut satırından çalışır, ancak düğüm komut dosyasında aşağıdaki hata-bağlantısı ECONNREFUSED alırsınız.Düğümün çalıştığı aynı sunucuda – anonymous123

cevap

8

Aynı hatayı aldığım benzer bir sorun yaşadım. Yanıt, benim için farklı bir bağlantı noktası kullandığım için sona erdi. Varsayılan olarak, MySQL 3306 bir liman beklediğini, ama ben benim veritabanı bağlantısına bir liman tanımını ekledi olarak MySQL sunucusu bağlantı noktası kısa sürede 8889. olarak belirtilmiş MAMP, kullanıyordum, bu iyiydi:

var connection = mysql.createConnection({ 
    port: 8889, 
    user: 'root', 
    password : 'password', 
    database : 'my_database' 
}); 

NOT: Bu Mac için MAMP kullanıyor, ubuntu veya Windows üzerinde denemediniz.

3

Aynı sorunu alıyorum. Ben nodejs içinde mysql modülü üzerinden bağlanmak mümkün değildi, ancak terminalde mysql istemci üzerinden bağlanmak mümkün oldu (mysql -u root -p1111 -h localhost mydb)

Anlaşıldı, mysql modülü dönüştürür " localhost "için 127.0.0.1. Bu, (mysql -u root -p1111 -h 127.0.0.1 mydb) üzerinden çalışmaz. Bkz. Issue 734 Bkz.

Dolayısıyla, MySQL'de 127.0.0.1 için bir parola ayarladım ve bu sorunu çözdüm. konsolu üzerinden mysql

Talimatlar

Bağlan:

mysql -u root -p mysql 

Ve

SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('Add-Your_password-here'); 

Source

+0

'mysql -u root -p mysql' çalıştırıldığında bu hatayı alın 'Kullanıcı' root '@' localhost 'için erişim reddedildi (parola kullanın: YES) ' – jose920405

-1

Aslında çözüm düşündüğünüzden daha kolaydır çalıştırın. Ana bilgisayar bağlantısı için ana bilgisayarı 127.0.0.1 olarak değiştirin.

+5

Değişen neden hakkında biraz daha fazla bilgi verebilir misiniz? "127.0.01" ana bilgisayar veritabanı bağlantısı giderir? Çünkü OP bir veritabanı sunucusuyla ilişkili görünen bir IP adresi kullanıyor. –

1

Uzun süredir bu sorun üzerinde çalıştım ve yaptığım tüm forumlar arasında, basit bir çözüm benim sorunumu çözdü. Şifrem bazı özel karakterlerle oldu. "Tekli" gibi basit bir şekilde değiştirdim ve mükemmel çalışıyor. Muhtemelen nodejs mysql modülünde bir kodlama problemi olabilir ... Umarım sizden bazılarına yardım ederdim ...

+0

Benimle şifre oldu: [A-Za-z0-9 \.] {64} benim için çalıştı, – Myonara

0

Benzer bir problemim vardı, nodejs projem. Kbux.js'yi querybuilder için kullanıyordum. yapılandırması.

Bu sorun, ana bilgisayar değeri 127.0.0.1 olarak değiştirdiğimde ana bilgisayar değeri 127.0.0.1 olduğunda ortaya çıkıyor, sorun ortadan kalkıyor.

var knex = require('knex')({ 
    client: 'mysql', 
    connection: { 
     **host: 'localhost',** 
     user: 'userNew', 
     password: 'password', 
     database: 'appDb' 
    } 
}); 
İlgili konular