EDIT: O seguinte descreve minha pergunta original, mas como ainda não resolvi o problema, pensei que talvez devesse alterar as configurações dentro do mysqlPOD criado em vez dos mysqlarquivos de configuração no meu computador local. Mas quando tento fazer alguma alteração dentro do mysqlPOD recebo command not founderros!

EDIT: O seguinte descreve minha pergunta original, mas como ainda não resolvi o problema, pensei que talvez devesse alterar as configurações dentro do mysqlPOD criado em vez dos mysqlarquivos de configuração no meu computador local. Mas quando tento fazer alguma alteração dentro do mysqlPOD recebo command not founderros!

EDIT: O seguinte descreve minha pergunta original, mas como ainda não resolvi o problema, pensei que talvez devesse alterar as configurações dentro do mysqlPOD criado em vez dos mysqlarquivos de configuração no meu computador local. Mas quando tento fazer alguma alteração dentro do mysqlPOD recebo command not founderros!

Tentei implantar uma mysqlimagem em meu local Kubernetesque está sendo executada em um Kindcluster da seguinte forma:

Eu tentei kubectl create secret generic mysql-secret --from-literal MYSQL_KEY=11111e criei mysql-serverda seguinte forma:

mysql-secret Opaque 1 3d21h

Este é mysql-pv.yamlo arquivo:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mysql-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: mysql-pv-volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 20Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"

Eu fiz kubectl apply -f mysql-pv.yamle ele foi criado com sucesso.

This is `mysql-depl.yaml` file:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mysql
spec:
  selector:
    matchLabels:
      app: mysql
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: mysql
    spec:
      containers:
      - image: mysql
        name: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysql-secret
              key: MYSQL_KEY
        ports:
        - containerPort: 3306
          name: mysql
        volumeMounts:
        - name: mysql-persistent-storage
          mountPath: /var/lib/mysql
      volumes:
      - name: mysql-persistent-storage
        persistentVolumeClaim:
          claimName: mysql-pv-claim
---
apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  ports:
  - port: 3306
  selector:
    app: mysql
  clusterIP: None

Eu fiz kubectl apply -f mysql-depl.yamle ele foi criado com sucesso.

Mas quando eu quero rodar mysqldentro do pod relacionado usando os comandos kubectl exec -it <mysql-pod-name> shentão mysql -p, ele pede a senha e depois de inserir a senha ( 11111) eu recebo:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Este é /etc/mysql/my.cnfo conteúdo:

#
# The MySQL database server configuration file.
#
# You can copy this to one of:
# - "/etc/mysql/my.cnf" to set global options,
# - "~/.my.cnf" to set user-specific options.
# 
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

#
# * IMPORTANT: Additional settings that can override those from this file!
#   The files must end with '.cnf', otherwise they'll be ignored.
#

!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/

Dentro /etc/mysql/conf.d/há dois arquivos. mysql.cnfcomo segue:

[mysql]
socket  = /var/run/mysqld/mysqld.sock
[client]
socket  = /var/run/mysqld/mysqld.sock

E mysqldump.cnfcomo segue:

[mysqldump]
quick
quote-names
max_allowed_packet  = 16M

Também dentro /etc/mysql/mysql.conf.d/do diretório, existem dois arquivos mysql.cnf:


#
# The MySQL database client configuration file
#
# Ref to https://dev.mysql.com/doc/refman/en/mysql-command-options.html

[mysql]
socket  = /var/run/mysqld/mysqld.sock
[client]
socket  = /var/run/mysqld/mysqld.sock

E mysqld.cnf:


#
# The MySQL database server configuration file.
#
# One can use all long options that the program supports.
# Run program with --help to get a list of available options and with
# --print-defaults to see which it would actually understand and use.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

# Here is entries for some specific programs
# The following values assume you have at least 32M ram

[mysqld]
#
# * Basic Settings
#
user        = mysql
pid-file    = /var/run/mysqld/mysqld.pid
socket  = /var/run/mysqld/mysqld.sock
port        = 3306
datadir = /var/lib/mysql


# If MySQL is running as a replication slave, this should be
# changed. Ref https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_tmpdir
# tmpdir        = /tmp
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address        = 127.0.0.1
mysqlx-bind-address = 127.0.0.1
#
# * Fine Tuning
#
key_buffer_size     = 16M
# max_allowed_packet    = 64M
# thread_stack      = 256K

# thread_cache_size       = -1

# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched
myisam-recover-options  = BACKUP

# max_connections        = 151

# table_open_cache       = 4000

#
# * Logging and Replication
#
# Both location gets rotated by the cronjob.
#
# Log all queries
# Be aware that this log type is a performance killer.
# general_log_file        = /var/log/mysql/query.log
# general_log             = 1
#
# Error log - should be very few entries.
#
log_error = /var/log/mysql/error.log
#
# Here you can see queries with especially long duration
# slow_query_log        = 1
# slow_query_log_file   = /var/log/mysql/mysql-slow.log
# long_query_time = 2
# log-queries-not-using-indexes
#
# The following can be used as easy to replay backup logs or for replication.
# note: if you are setting up a replication slave, see README.Debian about
#       other settings you may need to change.
# server-id     = 1
# log_bin           = /var/log/mysql/mysql-bin.log
# binlog_expire_logs_seconds    = 2592000
max_binlog_size   = 100M
# binlog_do_db      = include_database_name
# binlog_ignore_db  = include_database_name

Além disso, tenho os seguintes arquivos em /var/run/mysqld/:

mysqld.pid mysqld.sock mysqld.sock.lock mysqlx.sock mysqlx.sock.lock

Responder1

Eu acho que você esqueceu a variável de ambiente de senha para o contêiner mysql. Por favor, verifique novamente esta etapa.

Responder2

Este erro pode ocorrer quando o link simbólico é quebrado entre o arquivo de soquete (mysql.sock) no armazenamento físico e /var/run/mysqld/mysqld.sock no contêiner.

Seu armazenamento físico é montado em /var/lib/mysql, então você encontrará o arquivo mysql.sock em /var/lib/mysql/mysql.sock no contêiner.

Se for assim:

  1. exec no contêiner mysql para obter um prompt do bash

  2. execute 'ln -s /var/lib/mysql/mysql.sock /var/run/mysqld/mysqld.sock'

  3. então tente executar mysql -u -p ...etc para fazer login

Você pode precisar executar 'flush hosts' se seu ambiente de trabalho mysql ainda estiver insatisfeito.

informação relacionada