У меня есть MySQL стручок и работает. Я открыл терминал для этого модуля и создал базу данных и пользователя.
create database demodb;
create user demo identified by 'Passw0rd';
grant all on demodb.* to 'demo';
У меня есть Deployment
для запуска клиента NodeJs для модуля MySQL. Это в моей локальной minikube
установке.
apiVersion: apps/v1
kind: Deployment
metadata:
name: demos
spec:
selector:
matchLabels:
app: demos
template:
metadata:
labels:
app: demos
spec:
containers:
- name: demo-db
image: 172.30.1.1:5000/demo/db-demos:0.1.0
resources:
limits:
memory: "128Mi"
cpu: "200m"
ports:
- containerPort: 4000
name: probe-port
---
apiVersion: v1
kind: Service
metadata:
name: demos
spec:
selector:
app: demos
ports:
- name: probe-port
port: 4001
targetPort: probe-port
Dockerfile
для изображения передает переменные среды для использования клиентом NodeJs.
FROM node:alpine
ADD . .
RUN npm i
WORKDIR /app
ENV PROBE_PORT 4001
ENV MYSQL_HOST "mysql.demo.svc"
ENV MYSQL_PORT "3306"
ENV MYSQL_USER "demo"
ENV MYSQL_PASSWORD "Passw0rd"
ENV MYSQL_DATABASE "demodb"
CMD ["node", "index.js"]
И, NodeJs клиент подключается следующим образом.
const mysql = require('mysql')
const connection = mysql.createConnection({
host: process.env.MYSQL_HOST,
port: process.env.MYSQL_PORT,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
database: process.env.MYSQL_DATABASE
});
connection.connect((err) => {
if (err) {
console.log('Database connection failed. ' + err.message)
} else {
console.log('Database connected.')
}
});
Сбой соединения с базой данных с сообщением Database connection failed. connect ENOENT tcp://172.30.88.64:3306
. Адрес TCP / IP, указанный в этом сообщении, является правильным, то есть он совпадает со службой mysql.demo.svc
запущенного MySQL модуля.
В файлах конфигурации MySQL я не вижу bind-address
, Это должно означать, что MySQL должен принимать соединения из любого места. Я создаю пользователя без квалификатора местоположения, т.е. пользователь 'demo'@'%'
. Очевидно, что соединение не через сокеты, так как я передаю значения хоста и порта для соединения.
Чего мне не хватает?