0

在我的开发环境中,我已经安装了 MySQL 8.0 并相应地构建了应用程序,但是在产品服务器上,MySQL 版本是 5.7,我的应用程序无法连接到数据库。

我使用这个mysql2包是因为我需要 Async API ( mysql2/promise),它在mysql. 我什至尝试使用添加了 Async APImysql-await的端口mysql,但是在对数据库进行身份验证后,它只是无法创建表。

这是什么原因造成的?MySQL 8.0 和 MySQL 5.7 中使用了不同的身份验证方法吗?如果是这样,那么 5.7 使用什么方法以及如何配置mysql2连接中使用的身份验证方法?

我像这样连接到数据库:

db = await mysql.createConnection({
    host: mysql_host,
    user: mysql_user,
    password: mysql_pass,
    database: mysql_db
})

并创建这样的表:

await db.query(
    "CREATE TABLE IF NOT EXISTS form (ID int NOT NULL AUTO_INCREMENT, \
    Name varchar(255), \
    Email varchar(255), \
    Phone varchar(15), \
    Address varchar(255), \
    Occupation varchar(50), \
    PRIMARY KEY (ID))")
4

1 回答 1

0

是的,两者都有不同的身份验证方法。而要解决这个问题,更好的选择是要么将开发 MySQL 8 更改为 MySQL 5.7,要么将生产 MySQL 5.7 更改为 MySQL 8,否则,您可能会在生产中遇到更多错误。

于 2021-10-10T13:44:29.040 回答