NodeJS mysql模块将localhost转换为127.0.0.1并导致连接失败

时间:2019-07-23 13:12:08

标签: mysql node.js connection proxysql

我正在使用mysql package连接到设置为连接到MySQL数据库的ProxySQL。在命令行中,可以进行以下操作:

mysql -u demo1 -P6033 --database=database -p

但是,这不起作用。

var connection = mysql.createConnection({
        "host" : "localhost",
        "port": 6033,
        "user": "demo1",
        "password" : "password as above",
        "database": "database"
    })
 connection.connect( (err) => { console.log(err.stack) } )

这是错误消息。

Error: ER_ACCESS_DENIED_ERROR: ProxySQL Error: Access denied for user 'demo1'@'127.0.0.1' (using password: YES)

用户创建为

CREATE USER 'demo1'@'localhost' IDENTIFIED BY 'password';

我尝试将另一个用户添加为'demo'@'127.0.0.1',并为其授予了特权;没用。

如何保留上面的定义并获得mysql来返回成功的连接?

1 个答案:

答案 0 :(得分:0)

已解决!多亏了这样的问题-https://stackoverflow.com/a/50131831/919480

两件事。

  1. 必须告知MySQL使用mysql_native_password。我认为,这与安装MySQL时选择“强密码”有关。
  2. 主机参数不应为localhost,因为在Unix上,它的处理方式有所不同。即,通过插座进行连接。因此,将主机参数设置为127.0.0.1。或者,删除主机参数并使用socketPath

这里也有一些讨论-https://github.com/mysqljs/mysql/issues/2248