This article mainly introduces to you the relevant information about Node using Sequlize to connect Mysql error: Access denied for user 'xxx'@'localhost'. The article introduces it in detail through sample code. Friends who need it can refer to it. The following is Come and learn with the editor, I hope it can help everyone.
Preface
I recently encountered a problem at work. The problem is as follows:
Unhandled rejection SequelizeAccessDeniedError: Access denied for user 'lupeng'@'localhost' (using password: YES)
This is an error reported by Node when using Sequlize to connect to Mysql data. The key is to look at the error after the colon. : Access denied. The key is the access denied error, which means there is a problem with the database connection. The database connection access is denied, either because there is no corresponding operation permission, or the account password is wrong.
This locates the problem on two points: access permissions and incorrect account and password. Don’t forget to look for problems in other aspects, as that will only be a waste of time.
1. User permission issues
Permission issues start with the database. After confirming user authorization, whether to refresh the permission list. That is to say, after using the Grant command to authorize a user, you should use the flush privileges command. This is an issue that many people ignore.
If there is no problem with user authorization, try restarting the mysql server. Use the command /etc/init.d/mysql restart to restart the mysql server. The restart command may be different in different Linux versions. I am using the Debain system here.
If the problem is not solved after restarting, then it may not be a problem with the database user permissions.
2. Account password issue
The account password is incorrect. This question sounds ridiculous, but during the development process, many people will ignore it. Why do you say that? I use the config-lite module to configure database parameters, because I switch development in multiple system environments. Using the config-lite module can load different parameter files through simple environment variable configuration. For specific usage, please refer to: Configuration file usage in different environments.
My problem arises here. Open a terminal and run the project npm run test. The test running script is configured in the package.json file NODE_ENV=test supervisor --harmony -i views/ ./bin/www . Open another terminal and run the database synchronization command. The synchronization command is written separately in a js script. The data connection method (general) is quoted in the script. The connection method is as follows:
var Sequelize = require('sequelize'); // 引入数据库配置文件 var sqlConfig = require('config-lite')(__dirname).mysql; var sequelize = new Sequelize(sqlConfig.database, sqlConfig.user, sqlConfig.password, { host: sqlConfig.host, dialect: 'mysql', pool: { max: 10, min: 0, idle: 10000 } }); module.exports = sequelize;
So in synchronizing the database Sometimes, the error is always reported as the title, but I think it is correct. After a final check, I found the problem: the NODE_ENV environment variable in the test script is only valid in the current terminal. If you want to open another terminal to synchronize the database, you need to Set the environment variables in a separate terminal. Otherwise, the loaded database parameters will be inconsistent, which means that the username and password used to connect to the database are incorrect.
Related recommendations:
Solution to PHP connection MySQL error: Fatal error: Call to undefined function mysql_connect()
Solution to the error "No such file or directory" reported when PHP connects to MySQL under Mac
The error message "No such file or directory" reported when PHP connects to mysql
The above is the detailed content of About Node using Sequlize to connect Mysql error: Access denied for user 'xxx'@'localhost'_node.js. For more information, please follow other related articles on the PHP Chinese website!