Как подключиться к Mysql в Minikube/Kubernetes?

Добрый день!

Делал тестовые задания по kubernetes/minikube:
https://github.com/ivekov/minikubeNginxPhpMysql

У меня запущен minikube --driver=none;

Проблема следующая:
Message: SQLSTATE[HY000] [1045] Access denied for user 'crud'@'172.17.0.6' (using password: YES)


При этом:
mysql> SELECT db, host, user FROM mysql.db WHERE db='mainDb';
+--------+------------+------+
| db     | host       | user |
+--------+------------+------+
| mainDb | %          | root |
| mainDb | 172.17.0.6 | crud |
+--------+------------+------+
2 rows in set (0.00 sec)


Пробовал и под пользователем root подключаться:
$app->get('/test/', function() {
	$link = mysqli_connect("mysql", "root", "YWRtaW4=", "mainDb");

	if (!$link) {
		echo "Ошибка: Невозможно установить соединение с MySQL." . PHP_EOL;
		echo "Код ошибки errno: " . mysqli_connect_errno() . PHP_EOL;
		echo "Текст ошибки error: " . mysqli_connect_error() . PHP_EOL;
		exit;
	}

	echo "Соединение с MySQL установлено!" . PHP_EOL;
	echo "Информация о сервере: " . mysqli_get_host_info($link) . PHP_EOL;

	mysqli_close($link);
});


Warning: mysqli_connect(): (HY000/1045): Access denied for user 'root'@'172.17.0.6' (using password: YES) in /var/www/html/public/index.php on line 44
Ошибка: Невозможно установить соединение с MySQL. Код ошибки errno: 1045 Текст ошибки error: Access denied for user 'root'@'172.17.0.6' (using password: YES)


Кто-нибудь, подскажите в чем проблема? Уже неделю сижу с этим вопросом. Может я вообще что-то не то делаю? Я запускаю myqsl как сервис, отдельным подом. А юзера добавил уже через локальную машину. Если нужно как-то иначе, то у меня вообще нет идей как...

=========UPD=========
Делал какую-то глупость, потому что ожидаемый пароль не подошел. Mysql в поде, а я подключался к локальной через терминал, и ожидал изменений в той, которую запустил через Stateful Set.

Вопрос тогда: Почему пароль не применился?

Вот конфиг стейтфул сета для mysql:
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: mysql-ss
spec:
  selector:
    matchLabels:
      app: my-php-app
  serviceName: mysql-service
  replicas: 1
  template:
    metadata:
      labels:
        app: my-php-app
    spec:
      containers:
      - name: mysql
        image: mariadb
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-vm
          mountPath: /var/lib/mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-pass
              key: password
      volumes:
      - name: mysql-vm
        persistentVolumeClaim:
          claimName: mysql-pvc
      - name: config-volume
        configMap:
          name: mysql-conf


Вот секретка:
apiVersion: v1
kind: Secret
metadata:
  creationTimestamp: null
  name: mysql-pass
type: Opaque
data:
  password: YWRtaW4=
  • Вопрос задан
  • 249 просмотров
Пригласить эксперта
Ответы на вопрос 2
@vitaly_il1
DevOps Consulting
А юзера добавил уже через локальную машину

Не уверен, что понял, но возможно у вас на локальной машине бежит еще один Mysql? И вы добавили на нем, не в поде?
Ответ написан
@sergz99
Добрый день. По вашему проекту - подскажите плиз, зачем в файле minikubeNginxPhpMysql/configs/backend/crud/deployment.yaml вы у конце копируете папку app в nginx-овую папку, если до этого уже смонтировали её в volume? Заранее спасибо.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы