mysql - 在 Ubuntu16 上设置 nginx、phpmyadmin 和 mysql 后, Node 应用程序无法连接到数据库

标签 mysql node.js nginx server digital-ocean

我已经成功设置了一个带有 nginx 反向代理、mysql 和 phpmyadmin 的 Node 应用程序。使用phpmyadmin访问数据库或者访问网站都没有问题。

尝试登录时收到的错误消息:

Error: connect ECONNREFUSED my-ip-address:3306

这是mysql连接的问题吗?我已经检查了 mysql 连接的代码,但无法找出问题所在。

  var connection = require("mysql").createPool({
    host: "my-ip-address",
    user: "root",
    password: "my-password",
    database: "database-name",
    dateStrings: true,
    charset: "utf8mb4"
  }); 

/etc/nginx/sites-available/default 文件

server {
    listen 80 default_server;
    listen [::]:80 default_server;

    root /var/www/html;

    index index.php index.html index.htm index.nginx-debian.html;
    server_name "my ip address";

    location / {
        proxy_pass http://localhost:8010/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    location /phpmyadmin {
      root /var/www/html;
      index index.php index.html index.htm index.nginx-debian.html;

      location ~ ^/phpmyadmin/(.+\.php)$ {
        try_files $uri =404;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME 
        $document_root$fastcgi_script_name;

      }

    location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ {
        root /usr/share/;
      }
    }


    location ~ \.php$ {
       include snippets/fastcgi-php.conf;
       fastcgi_pass unix:/run/php/php7.0-fpm.sock; 
    }

    location ~ /\.ht {
            deny all;
         }
}

最佳答案

您尝试通过外部 IP 地址 (my-ip-address) 连接到数据库,但数据库仅监听本地环回接口(interface)(127.0.0.1 或 localhost)。

尝试将 Node 应用程序中的主机更改为 127.0.0.1localhost

重要提示:在没有首先通过例如安全访问的情况下,不要让数据库监听所有端口(例如绑定(bind)到地址0.0.0.0)。防火墙。

关于mysql - 在 Ubuntu16 上设置 nginx、phpmyadmin 和 mysql 后, Node 应用程序无法连接到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51885960/

相关文章:

node.js - 在 ExpressJS 中创建链接有什么简单的方法吗?

Nginx 未知指令 "if($domain"

mysql - SQL无限加载

mysql - 内部连接为真

c# - 如何在带有 Entity Framework 的 ASp.net 应用程序中同时使用 MySQL 和 MSSQL

javascript - Node.js回调函数返回数据

javascript - 我是否应该考虑在应用程序引导期间阻塞 I/O 的不良做法? ( Node .js)

node.js - Socket.io 客户端 javascript 文件位置(使用 nginx 反向代理)

python - nginx+uwsgi+django,uwsgi中好像有什么奇怪的缓存,帮帮我

php - 关于 mySQL 和 PHP 的初学者问题,以避免在每个页面上连接到数据库