在我的开发环境中,我安装了MySQL 8.0并相应地构建了应用程序,但在prod服务器上,MySQL版本为5.7,我的应用程序无法连接到数据库。
我使用mysql2
程序包是因为我需要异步API(mysql2/promise
(,而它在mysql
中不可用。我甚至尝试使用mysql-await
,它是mysql
的一个端口,添加了Async API,但在对数据库进行身份验证后,它无法创建表。
是什么原因造成的?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))")
是的,两者都有不同的身份验证方法。为了解决这个问题,更好的选择是用MySQL 5.7更改开发MySQL 8,或者用MySQL 8更改生产MySQL 5.7,否则,您可能会在生产中面临更多的错误。