v2.5.2
Giriş yap

nodejs mysql hatası

memdhaci
244 defa görüntülendi ve 1 kişi tarafından değerlendirildi

merhaba node js ve mysql öğreniyorum veritabanımdaki tablodaki rowlarımı görmek için böyle bir kod yazdım

const mysql = require('mysql2')

let connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'sifrem',
    database: 'nodedb'
});

connection.connect(function(err){
    if (err) {
        console.log(err)
    }

    connection.query('select * from products', function(err, result) {
        console.log(result);
    });

    console.log('mysql bağlantısı yapıldı')
})

bu şekilde yaptığımda terminalimde ürünler listeleniyor sıkıntı yok fakat aşağıdaki gibi yaptığımda hata alıyorum

ayrı bir config.js dosyası açıyorum

const config = {
    db: {
        host: 'localhost',
        user: 'root',
        password: 'sifrem',
        database: 'nodedb'
    }
}

module.exports = config;

ve ilk yazdığım kodun başını da aşağıdaki gibi değiştiriyorum

const mysql = require('mysql2')
const config = require('./config');

let connection = mysql.createConnection(config);

fakat böyle yapınca çalışmıyor ve aşağıdaki hatayı alıyorum

Ignoring invalid configuration option passed to Connection: db. This is currently a warning, but in future versions of MySQL2, an error will be thrown if you pass an 
invalid configuration option to a Connection
port 3000 started
Error: Access denied for user ''@'localhost' (using password: YES)

  code: 'ER_ACCESS_DENIED_ERROR',
  errno: 1045,
  sqlState: '28000',
  sqlMessage: "Access denied for user ''@'localhost' (using password: YES)",
  sql: undefined

bunun çözümü nedir bilen var mı?

Cevap yaz
Cevaplar (3)
bhebatu
275 gün önce

Merhaba! Sorununuzun çözümü, config.js dosyasında db nesnesini kullanmak yerine direkt olarak bağlantı bilgilerini aktarmaktır. Bunun için aşağıdaki gibi config.js dosyanızı düzenleyebilirsiniz:

const config = {
    host: 'localhost',
    user: 'root',
    password: 'sifrem',
    database: 'nodedb'
};

module.exports = config;

Ve main.js dosyanızı da aşağıdaki gibi düzenleyebilirsiniz:

const mysql = require('mysql2');
const config = require('./config');

let connection = mysql.createConnection(config);

connection.connect(function(err) {
    if (err) {
        console.log(err);
    }

    connection.query('SELECT * FROM products', function(err, result) {
        console.log(result);
    });

    console.log('MySQL bağlantısı yapıldı.');
});

Bu şekilde config.js dosyasından direkt olarak bağlantı bilgilerinizi alarak kodunuzun çalışmasını sağlayabilirsiniz. Umarım bu çözüm işinize yarar! Başka bir sorunuz olursa yardımcı olmaktan mutluluk duyarım.

tayfunerbilen
277 gün önce
let connection = mysql.createConnection(config);

yerine şöyle yapman lazım:

let connection = mysql.createConnection(config.db);
database
277 gün önce

"Access denied for user ''@'localhost' (using password: YES)" mesajından da anlayacağın kadarıyla kullanıcı adı tarafı boş geliyor.
bu konuyu mysql bağlanmıyor değil npm mysql2 modulünü araştır.