Докер-контейнер mysql не запускается, mysqld: Не удается создать / записать в файл '/ var / lib / mysql / is_writable' (ОС errno 13 - В доступе отказано) - PullRequest
1 голос
/ 11 мая 2019

Я создал файл составления Docker для запуска контейнера Docker MySQL и использования сценариев базы данных, инициализирующих базу данных.

При запуске контейнера я получаю сообщение об ошибке ниже.

account-service-db_1  | Initializing database
account-service-db_1  | mysqld: Can't create/write to file '/var/lib/mysql/is_writable' (OS errno 13 - Permission denied)
account-service-db_1  | 2019-05-11T16:58:35.265463Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
account-service-db_1  | 2019-05-11T16:58:35.265550Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.16) initializing of server in progress as process 15
account-service-db_1  | 2019-05-11T16:58:35.268464Z 0 [ERROR] [MY-010460] [Server] --initialize specified but the data directory exists and is not writable. Aborting.
account-service-db_1  | 2019-05-11T16:58:35.268472Z 0 [ERROR] [MY-013236] [Server] Newly created data directory /var/lib/mysql/ is unusable. You can safely remove it.
account-service-db_1  | 2019-05-11T16:58:35.269284Z 0 [ERROR] [MY-010119] [Server] Aborting
account-service-db_1  | 2019-05-11T16:58:35.270510Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.16)  MySQL Community Server - GPL.
docker-swarm-account-service-mysql-demo_account-service-db_1 exited with code 1

После исследования многие люди предложили добавить пользователя: «1000: 50» в compose-файле решит проблему. Но после добавления я также получаю ту же ошибку.

пожалуйста, найдите мой файл docker-compose ниже

version: '3.7'

services:
 account-service-db:
    user: "1000:50"
    image: mysql
    environment:
      - MYSQL_DATABASE=account-service
      - MYSQL_USER=mysqluser
      - MYSQL_PASSWORD=mysqlpassword
      - MYSQL_ROOT_PASSWORD=mysqlpassword
    volumes:
      - "/Users/admin/dockerfiles/docker-swarm-account-service-mysql-demo/scripts/:/docker-entrypoint-initdb.d/"
      - "/Users/admin/dockerfiles/docker-swarm-account-service-mysql-demo/account:/var/lib/mysql" 
    ports:
      - "3306:3306"

    deploy:
     replicas: 1
     placement:
      constraints:
       - node.labels.mysql.node == true
     restart_policy:
      condition: on-failure
      delay: 10s
      #max-attempts: 3

Я выполняю описанный выше сценарий на компьютере Mac. Пожалуйста, помогите мне, почему он ведет себя так после предоставления всех необходимых разрешений для тома и папки скриптов.

1 Ответ

1 голос
/ 11 мая 2019

Проблема, похоже, в вашей папке account.Возможно, он уже используется или поврежден.Создайте новую папку и протестируйте.

Удаление двойных кавычек из значений среды в файле компоновки.

Если папка на подключаемом хосте не имеет необходимых прав записи:

  1. ssh дляваш хост / узел
  2. chmod -R a+rwx /path/to/account/folder
...