我刚刚下载了MariaDB 10.3 for Windows,创建了一个数据库,并尝试使用mysql
库从NodeJS服务器进行连接。
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "root",
password: "MariaDBPass",
database:'DB_NAME',
});
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Result: " + result);
});
});
我在sql上试过,它工作正常,但在windows上它抛出了一个非sql错误:
Client does not support authentication protocol requested by server; consider upgrading MariaDB client
我认为这可能是MySQL 8.0和库(mysql
)之间的不兼容。我已经尝试更改用户,如下所示:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'
但它说
存在SQL语法错误
对如何解决这个问题有什么想法吗?
发布于 2019-06-05 18:16:04
我不知道这会有多大帮助,但使用以下设置:
下面的代码和我预期的一样:
var mysql = require('mysql');
var con = mysql.createConnection({
host: "localhost",
user: "some_user",
password: "some_password",
database: 'testdb'
});
let sql = "select * from test_table";
con.connect(function(err) {
if (err) throw err;
console.log("Connected!");
con.query(sql, function (err, result) {
if (err) throw err;
console.log("Result: " + JSON.stringify(result));
});
});
我得到如下输出:
[{"id":1,"name":"Mike Smith"},{"id":2,"name":"Joe Brown"}]
要创建我创建的用户(使用MariaDB mysql.exe,使用根用户):
use testdb;
create user 'some_user'@'localhost' identified by 'some_password';
grant all privileges on testdb.* to 'some_user'@'localhost';
这可能有点宽松,但对于测试连接来说,这是可以的。
我还可以连接到root用户。
如果您希望设置root用户密码,请尝试:
use mysql;
update user set password=PASSWORD('password') where user='root'and host='localhost';
flush privileges;
我创建了一个简单的数据库'testdb‘和表'test_table’,其中有几行用于查询。
如果可以的话,我建议您升级您的mysql模块版本。也许还可以看看Node.js版本。
https://stackoverflow.com/questions/56457626
复制相似问题