I have a server, my-website.com, on a shared hodting plan. I created a database on the server. From the webadmin, the db details are :
From phpMyAdmin :
Server: localhost:3306
Database server
Server: Localhost via UNIX socket
Server type: Percona Server
Server version: 5.6.39-83.1 - Percona Server (GPL), Release 83.1, Revision da5a1c2923f
Protocol version: 10
User: user#localhost
Server charset: UTF-8 Unicode (utf8)
I try to connect to it via node :
const express = require('express')
const mysql = require('mysql')
const PORT = process.env.PORT || 5000
const app = express();
app.use(express.json());
const courses = [];
/** DB **/
app.get('/api/db_connect', function (req, res) {
var myConStatus = "undef conn";
var con = mysql.createConnection({
host: "191.181.181.81", // FAKE
Port: "3306",
user: "user#localhost",
database: "user_test_db",
password: "password123"
});
con.connect(function (err) {
myConStatus = "Connecting to db";
if (err) {
myConStatus = "ERR Conn";
throw err;
}
myConStatus = "Success Connection";
});
var sql = "CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))";
con.query(sql, function (err, result) {
myConStatus = "Creating table";
if (err) {
myConStatus = "ERR DB TABLE CREATE";
throw err;
}
myConStatus = "Table created";
});
res.send(myConStatus);
});
/** END DB **/
This is never successful and no table gets created.
What am I missing?
Not sure if I understand fully, but mySQL can be configured for connections from local processes or from remote. If you are trying to connect remotely to a server that is configured for local it will not connect.
You did not say if you got connections errors or not.
You can configure connections for standard TCP/IP or ssh TCP/IP as opposed to local socket/pipe - which maybe you have done.
See here https://www.percona.com/doc/percona-xtrabackup/LATEST/howtos/enabling_tcp.html and this quote
"Most of the Linux distributions do not enable by default to accept
TCP/IP connections from outside in their MySQL or Percona Server
packages"
If this is off the mark - just comment me and I will delete.
Related
i've imported a mysql database from old to new machine using mysqldump. on the new machine, i can read the local database and print the database contents to the console, meaning the import worked.
To connect to this database, i'm using Node (eg node myServerFile.js) but it's not connecting to this database on the new machine. my react/node files are exactly the same on both machines, the difference is a new machine with a freshly installed react/node/mysql environment.
i can't get past the 'Error connecting to database' message
myServerFile.js
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'xxxx',
password: 'xxxx',
database: 'xxxx'
});
var router = express();
connection.connect(function(err){
if(!err) {
console.log('Database is connected');
}
else {
console.log('Error connecting to database');
}
});
Hello Stacksoverflowers,
I have a problem to connect my server.js file to Mysql via Express.
I've already insatlled mysql and express via npm.
when i run my server.js
The only thing it says in my console (MacOS default terminal) is:
"node server running now - using http://localhost:3000"
(I got no errors)
and my webpage also showing correct - "Node Server running - startpage" in the browser.
The problem is that they say nothing like "Connected to the MySQL server" or "Timeout: error messages" ?? (look at #3)
// Dan k
//#1
// My codes from server.js
const express = require('express');
const mysql = require('mysql');
const hostname = "localhost:";
const port = 3000;
//#2
// create connection to DB
const connection = mysql.createConnection({
host: "localhost",
user: 'root',
password: 'root',
port: 3000
});
//#3
// Connect to DB
connection.connect(function(err) {
if (!err) {
console.log('Connected to the MySQL server.');
}
else if (err)
{
return console.error('Timeout: ' + err.message);
}
});
// Routing with Express
const app = express();
//#4
// Startpage (root)
app.get('/', function(request, response){
response.send('Node Server running - startpage...');
response.end();
})
connection.end();
//#5
app.listen(port, (err) => {
if(err) throw err;
console.log("node server running now - using http://"+(hostname)+ .
(port)");
});
I got what is causing the issue. You are using the same port number 3000 to connect to your mysqlDB and at the same time using the same port to run your nodejs application.
This does throw an error but it takes a really long time to throw the error.
So the simple answer here is that the port that you are mentioning in your createConnection() method is incorrect and needs to be changed. This port should be port number on which your mysql DB is running. From the error it is clear that your mysql DB is not running on port 3306. You can check this post to figure out which port is your mysql DB running on. https://serverfault.com/questions/116100/how-to-check-what-port-mysql-is-running-on. Below is a reference for you. Please see the comments.
// create connection to DB
const connection = mysql.createConnection({
host: "localhost",
user: 'root',
password: 'root',
port: 3000 // You need to change this and put in the correct port number.
});
The code is very basic. Simple nodejs app using mysql.
Error: connect ETIMEDOUT is received when code tries connecting to Google Cloud MySql server (second generation) on google app engine.
However app is able to connect to MySql server from my local machine since IP address of my machine is whitelisted.
App engine application and google cloud server belong to same project in google cloud console. So no extra permissions are required (?)
So I'm failing to understand how to allow app engine to access MySql server.
var express = require('express'),
mysql = require('mysql'),
bodyParser = require('body-parser')
// Application initialization
var connection = mysql.createConnection({
host : 'ip_address',
user : 'root',
password : 'password',
database : 'database_name'
});
var app = express();
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json());
app.get('/_ah/health', (req, res) => {
res.status(200)
res.send({hello:'world'})
})
app.get('/', function(req, res) {
connection.query('select * from blogs',
function (err, result) {
if (err) throw err;
res.send({result: result});
}
);
});
// Begin listening
app.listen(8080);
console.log("Express server listening");
Using socketPath param while connecting to mysql helped.
var connection = mysql.createConnection({
host : 'ip_address',
user : 'root',
password : 'password',
database : 'database_name'
socketPath: “/cloudsql/projectName:zone:instance-name”
});
I'm trying to connect to my local MySql server from node.js/express application using mssql with following config:
// Database connection
var sql = require('mssql');
var config = {
user: 'db_user',
password: 'db_pass',
server: 'localhost',
database: 'project_db'
};
sql.connect(config, function (err) {
if (err) {
console.log(err);
}
});
I get this error:
{ [ConnectionError: Failed to connect to localhost:1433 - connect ECONNREFUSED 127.0.0.1:1433]
name: 'ConnectionError',
message: 'Failed to connect to localhost:1433 - connect ECONNREFUSED 127.0.0.1:1433',
code: 'ESOCKET' }
I know I have to enable TCP/IP connections for my local MySql server, but I can not find how to do it on OSX El Capitan. There is nothing like control panel with settings. That's all available at System Preferences > MySql:
Any ideas how to fix this, guys? Thanks for trying to help.
mssql and mysql are two very different things... You should use the node-mysql or some other mysql client library if you are going to be running mysql on your dev machine
https://github.com/felixge/node-mysql
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'me',
password : 'secret',
database : 'my_db'
});
connection.connect();
connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
if (err) throw err;
console.log('The solution is: ', rows[0].solution);
});
connection.end();
This code works well on windows using nodejs and wamp but dont work on mac using mamp any idea why ? (the same username,password and db are used on both mac and pc !)
Im receiving this error Error: connect ECONNREFUSED
var mysql = require('mysql');
var TEST_DATABASE = 'krekib';
var TEST_TABLE = 'users';
var client = mysql.createClient({
user: 'root',
password: '12345',
});
client.query('USE '+TEST_DATABASE);
client.query(
'SELECT * FROM '+TEST_TABLE,
function selectCb(err, results, fields) {
if (err) {
throw err;
}
console.log(results);
console.log(fields);
client.end();
}
);
You probably need to specify your host and port. Check which port mysql is running in MAMP and add this.
var mysql = require('mysql');
var TEST_DATABASE = 'krekib';
var TEST_TABLE = 'users';
var client = mysql.createClient({
user: 'root',
password: '12345',
host: "127.0.0.1 or localhost, depends on your mysql user permissions",
port: "your port number in mamp",
});
Why would you connect to a database with JavaScript? It's really easy to find the JavaScript file and get your username + password.
Is the database running in Mamp?