0

我正在使用该mysql连接到设置为连接到 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返回成功的连接?

4

1 回答 1

0

解决了!感谢这个 SO 问题 - https://stackoverflow.com/a/50131831/919480

两件事情。

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

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

于 2019-07-24T06:01:08.647 回答