Javascript Node.js脚本 var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "z", password:

Javascript Node.js脚本 var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "z", password: ,javascript,mysql,node.js,ubuntu,Javascript,Mysql,Node.js,Ubuntu,Node.js脚本 var mysql = require('mysql'); var con = mysql.createConnection({ host: "localhost", user: "z", password: "" }); con.connect(function(err) { if (err) throw err; console.log("Connected!"); con.query("use mysql;", f

Node.js脚本

var mysql = require('mysql');

var con = mysql.createConnection({
    host: "localhost",
    user: "z",
    password: ""
});

con.connect(function(err) {

    if (err) throw err;
    console.log("Connected!");

    con.query("use mysql;", function(err, result) {
        if (err) throw err;
        console.log(result);
    });

    con.query("select * from user limit 1;", function(err, result) {
        if (err) throw err;
        console.log(result);
    });

});

您需要确保您使用的用户名与主机名下用于连接的ip地址相匹配

我也遇到了同样的问题,但使用的是

require('mariadb')
,本质上是一样的。所以我的答案应该适用于这两个司机

问题有两个方面:

  • host:'localhost',user:'user'
    总是在数据库上解析为
    'user'@'127.0.0.1'
    。所以不要使用localhost,而是使用127.0.0.1

  • 客户端和服务器之间的密码加密方案不兼容,显然节点客户端使用的是

    mysql\u native\u密码

以下是解决方案:(来自

mysql
命令行客户端)

瞧,现在从节点连接,一切正常:

const mariadb = require('mariadb'); // or require('mysql');

const pool = mariadb.createPool({
    host: 'localhost',  // or host: '127.0.0.1'
    user: 'root',
    password: 'password',
    database: 'mydatabase',  // don't forget the database
    port: 3306,
    connectionLimit: 5
});

参考资料:


问题不在于mysql用户身份验证。您只需要授予节点应用程序访问mysql数据库的权限。 我之前也遇到过同样的问题。我添加了运行我的节点应用程序的端口号。现在它可以正常工作了

var mysql = require('mysql');

 var con = mysql.createConnection({
  host: hostname,
  user: "root",
  password: "rootPassword"
 });

 con.connect(function(err) {
  if (err) throw err;
  console.log("Connected!");
 });

用户:“root”也被写为用户名:“root”。注意拼写

const mysqlConnection = mysql.createConnection({
host: "localhost",
user: "root",
password: "Pass@123",
database: "employees",
port:"3000",
multipleStatements: true

}))


我正在使用mysql版本“mysql”:“^2.18.1”。

在nodejs中使用dotenv连接到mysql的代码

          .env file

          NODE_ENV=DEVELOPMENT
          DB_HOST=localhost
          DB_USER=root
          DB_PASSWORD=password
          DB_NAME=test

              
           db.js file


           const util = require("util");
           const mysql = require("mysql2");

           const pool = mysql.createPool({
           host: process.env.DB_HOST,
           user: process.env.DB_USER,
           password: process.env.DB_PASSWORD,
           database : process.env.DB_NAME,
           uri: process.env.DB,
           waitForConnections: true,
           connectionLimit: 10,
           queueLimit: 2,
            });

我在mac上也遇到了同样的错误,但每当我在windows机器上运行相同的代码时,它都运行得非常好,没有任何错误。 花了两天时间,我找到了解决办法

以下是我遵循的步骤

  • 到终端中的项目文件夹并运行“sudo su-”命令
  • e、 g.Avi MBP:projectDirectory avisurya$sudo su-

  • 它将作为密码 e、 g.密码:输入您的mac用户密码

  • 现在你将在根 e、 g.Avi MBP:~根#

  • 现在再次转到项目目录 e、 g.Avi MBP:~root#cd/Users/avisurya/projectDirectory

  • 现在启动节点应用程序 e、 g.在我的例子中是“node server.js”


  • 我通过在连接配置中添加套接字路径解决了这个问题。有关更多详细信息,您可以

    我今天也遇到了同样的问题,我就是这么做的。您可能不需要选择其他密码,只需确保js文件中的密码正确即可

    • 通过以下方式转到mysql bash:
    • 通过以下方式更改根用户的密码:
    • 通过
      Ctrl+D退出mysql
    • 确保您的js代码中有相同的密码
    • 在bash中:
    • 输入您选择的密码 您应该能够看到mysql的欢迎消息

    • 退出并在bash中再次运行节点连接代码:


    确保您使用了正确的密码

    确保您的配置文件中没有错误,我也很难对其进行排序,但却发现我一直试图使用错误的连接参数进行连接。。 错误代码是:

    require('dotenv').config()
        let  config= {
            client: 'mysql2',
            connection: {
                host:process.env.MYSQL_HOST,
                user:process.env.MYSQL_USER,
                database:process.env.MYSQL_PASS, // here
                password:process.env.MYSQL_DB,   //here
                multipleStatements: true
            }
        }
    
    module.exports= require('knex')(config);
    

    更正:

    require('dotenv').config()
        let  config= {
            client: 'mysql2',
            connection: {
                host:process.env.MYSQL_HOST,
                user:process.env.MYSQL_USER,
                password:process.env.MYSQL_PASS, // here
                database:process.env.MYSQL_DB,   //here
                multipleStatements: true
            }
        }
    
    module.exports= require('knex')(config)
    

    接下来我要做的是为你的应用程序创建一个不同的用户进行对话。无论如何,这是你应该做的事情,在你的mysql实例中可能有一些限制,限制了你如何以根用户身份连接——可能是套接字还是tcp。我也试过了。创建新用户并授予所有权限。我收到了同样的错误:“拒绝访问'newUser'@'localhost'。我喜欢你在这个问题中描述细节的方式。太好了!奇怪的是,我使用了更新的版本2.13.0,但我有同样的问题…”我每次尝试运行javascript时都会收到拒绝访问的错误,但是当我通过终端连接到mySQL时,我绝对没有问题。“有什么想法吗?2.10.2也有同样的问题。mySQL版本是5.7.2.16.0仍然有同样的问题。有时与“localhost”和“127.0.0.1”冲突。图书馆使用127.0.0.1进行连接,不允许使用“localhost”“MYSQL用户我不认为端口是问题所在-服务器的响应是拒绝访问。它的根和不工作。请删除我有这个问题的答案。对于mac上的用户,您可以执行
    sudo lsof-iTCP-sTCP:LISTEN-n-P | grep 3306
    列出使用端口3306的任何进程(首先停止docker容器)。我不得不使用
    brew services stop mysql
    来停止主机上的mysqld进程(杀死它只会让它以不同的PID重新启动)。它帮助我编写了use而不是USERFACTY,如果你只关心ASCII的话,这应该不是一个真正的问题。你只需要适当地逃离它们。一个很好的参考是console.log('\xB2\xDB')特殊字符:很好!这也解决了我的问题。我使用的是vertrigo服务器。为什么要将节点端口而不是mysql端口放在服务器上?这起作用了,我对其原因感到震惊。
    var mysql = require('mysql');
    var con = mysql.createConnection({
      host: "localhost",
      user: "root",
      password: ""
    });
    
    con.connect(function(err) {
      if (err) throw err;
      console.log("Connected!");
    });
    
    ps axu | grep 3306
    
    docker run --name=<name> -e MYSQL_ROOT_PASSWORD=<password> -p 3307:3306 -d mysql
    
    docker exec -it <name> mysql -u root -p
    
     const connection = mysql.createConnection({
        host: 'localhost',
        user: 'root',
        password: 'password',
        database: 'database',
        port: 3307
     });
    
     connection.connect();
    
    var mysql = require('mysql');
    var connection = mysql.createConnection({
        host: 'localhost',
        user: 'root'
    });
    
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY 'password';
    
    mysql> CREATE USER 'new_user'@'%' IDENTIFIED BY 'password';
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'new_user'@'%' WITH GRANT OPTION;
    
      var connection = mysql.createConnection({
        host     : 'The mysql IP',
        port     : 'The mysql Port',
        user     : 'new_iser',
        password : 'new_user_pass',
        database : 'database-name'
      }); 
    
    var mysql = require("mysql");
    var con = mysql.createConnection({
      host: "127.0.0.1",
      user: "your_username",
      password: "password",
      database: "your_db_name"
    });
    
    Access denied for user 'your_username'@'blah.blah.blah.yourisp.com'
    
    const Sequelize = require('sequelize')
    const db = {}
    const sequelize = new Sequelize('ochiengsDatabase', 'ochienguser', ' 
    mydbpassword', {
    host: 'localhost',
    dialect: 'mysql',
    operatorsAliases: false,
    
    // Do the mySQL Stuff
    var con = mysql.createConnection({
      host: 'localhost',
      user: 'user',
      password: 'mypwd',
      database: 'database',
      port: 3306,
      debug: true
    });
    
    //MYSQL Statement
    
    RENAME USER 'myuser'@'localhost' TO 'myuser'@'127.0.0.1';
    
    var mysql = require('mysql');
    var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'password'
    
    CREATE USER 'z'@'localhost' IDENTIFIED BY '';
    GRANT ALL PRIVILEGES ON * . * TO 'z'@'localhost';
    
    var mysql = require('mysql');
    
    var con = mysql.createConnection({
        host: "localhost",
        user: "z",
        password: ""
    });
    
    con.connect(function(err) {
    
        if (err) throw err;
        console.log("Connected!");
    
        con.query("use mysql;", function(err, result) {
            if (err) throw err;
            console.log(result);
        });
    
        con.query("select * from user limit 1;", function(err, result) {
            if (err) throw err;
            console.log(result);
        });
    
    });
    
    # If you don't have a 127.0.0.1 equivalent user:
    CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY 'password';
    
    # If you already have the user, reset its password:         
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
    
    # Redo your grants on the 127.0.0.1 user:
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1';
    FLUSH PRIVILEGES;
    
    const mariadb = require('mariadb'); // or require('mysql');
    
    const pool = mariadb.createPool({
        host: 'localhost',  // or host: '127.0.0.1'
        user: 'root',
        password: 'password',
        database: 'mydatabase',  // don't forget the database
        port: 3306,
        connectionLimit: 5
    });
    
    const mysqlConnection = mysql.createConnection({
    host: "localhost",
    user: "root",
    password: "Pass@123",
    database: "employees",
    port:"3000",
    multipleStatements: true
    
              .env file
    
              NODE_ENV=DEVELOPMENT
              DB_HOST=localhost
              DB_USER=root
              DB_PASSWORD=password
              DB_NAME=test
    
                  
               db.js file
    
    
               const util = require("util");
               const mysql = require("mysql2");
    
               const pool = mysql.createPool({
               host: process.env.DB_HOST,
               user: process.env.DB_USER,
               password: process.env.DB_PASSWORD,
               database : process.env.DB_NAME,
               uri: process.env.DB,
               waitForConnections: true,
               connectionLimit: 10,
               queueLimit: 2,
                });
    
    $ sudo mysql
    
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your-chosen-password';
    
    $ mysql -u root -p
    
    $ node ./database/actions/db-connect.js
    
    require('dotenv').config()
        let  config= {
            client: 'mysql2',
            connection: {
                host:process.env.MYSQL_HOST,
                user:process.env.MYSQL_USER,
                database:process.env.MYSQL_PASS, // here
                password:process.env.MYSQL_DB,   //here
                multipleStatements: true
            }
        }
    
    module.exports= require('knex')(config);
    
    require('dotenv').config()
        let  config= {
            client: 'mysql2',
            connection: {
                host:process.env.MYSQL_HOST,
                user:process.env.MYSQL_USER,
                password:process.env.MYSQL_PASS, // here
                database:process.env.MYSQL_DB,   //here
                multipleStatements: true
            }
        }
    
    module.exports= require('knex')(config)