Добавить другого пользователя в MySQL в Kubernetes - PullRequest
0 голосов
/ 16 мая 2018

Вот мой MySQL

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: abc-def-my-mysql
  namespace: abc-sk-test
  labels:
    project: abc
    ca: my
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: abc-def-my-mysql
        project: abc
        ca: my
    spec:
      containers:
      - name: mysql
        image: mysql:5.6
        args: ["--default-authentication-plugin=mysql_native_password", "--ignore-db-dir=lost+found"]
        ports:
        - containerPort: 3306
        env:
        - name: MYSQL_ROOT_PASSWORD
          value: "root"
        - name: MYSQL_DATABASE
          value: "my_abc"
        - name: MYSQL_USER
          value: "test_user"
        - name: MYSQL_PASSWORD
          value: "12345"
        volumeMounts:
         - mountPath: /var/lib/mysql
           name: abc-def-my-mysql-storage
      volumes:
      - name: abc-def-my-mysql-storage
        persistentVolumeClaim:
         claimName: abc-def-my-mysql-pvc

Я хотел бы добавить другого пользователя в mysql, чтобы к нему могли подключиться настоящие пользователи.Вместо использования «test_user».как я могу добавить другого пользователя, это как добавить любую другую переменную окружения в вышеупомянутый конфиг

Ответы [ 2 ]

0 голосов
/ 22 декабря 2018

Смонтируйте «сценарий создания пользователя» в каталог контейнера /docker-entrypoint-initdb.d. он будет выполнен один раз, при первом запуске модуля.

apiVersion: extensions/v1beta1
kind: Pod
metadata:
  name: mysql
spec:
  containers:
  - name: mysql
    image: mysql
    .....
    env:
    - name: MYSQL_ROOT_PASSWORD
      value: "root"
    .....
    volumeMounts:
      - name: mysql-initdb
        mountPath: /docker-entrypoint-initdb.d
  volumes:
  - name: mysql-initdb
    configMap:
      name: initdb

---
apiVersion: v1
kind: ConfigMap
metadata:
  name: initdb
data:
  initdb.sql: |-
    CREATE USER 'first_user'@'%' IDENTIFIED BY '111' ;
    CREATE USER 'second_user'@'%' IDENTIFIED BY '222' ;

Тест:

kubectl exec -it <PODNAME> -- mysql -uroot -p -e 'SELECT user, host FROM mysql.user;'

    +-------------+------+
    | user        | host |
    +-------------+------+
    | first_user  | %    |
    | second_user | %    |
    | root        | %    |
    +-------------+------+

См. Инициализация свежего экземпляра Образ Mysql Docker Hub:

Когда контейнер запускается впервые, новая база данных с указанное имя будет создано и инициализировано с переменные конфигурации. Кроме того, он будет выполнять файлы с расширения .sh, .sql и .sql.gz, которые находятся в /docker-entrypoint-initdb.d. Файлы будут выполнены в алфавитном порядке порядок.

Вы можете легко заполнить свои mysql службы, подключив SQL дамп в этот каталог и предоставить пользовательские изображения с вкладом данные. Файлы SQL будут импортированы по умолчанию в указанную базу данных по переменной MYSQL_DATABASE.

0 голосов
/ 16 мая 2018

В зависимости от жизненного цикла пользователя вы можете создать пользователя либо при запуске контейнера, либо с помощью сценария запуска докера MySQL, смонтированного в /docker-entrypoint-initdb.d, либо вы можете сделать это в CLI после запуска сервера,

С помощью сценария запуска контейнера вам, возможно, придется позаботиться о нескольких контейнерах, выполняющих один и тот же сценарий, например, CREATE user if exists.

Параметр CLI может быть более подходящим, если сервер БД является долгоживущим,и вы получите запросы на создание нескольких пользователей даже после создания сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...