Mysql无法写入minikube创建的持久卷

时间:2017-05-08 23:13:46

标签: mysql macos-sierra minikube

我正在尝试使用hostPath将具有持久卷的minikube mysql pod部署到Mac主机上的/ data或/ Users目录。但是,创建的目录始终具有错误的权限,并且mysql无法访问或写入该目录。如果我运行minikube ssh并运行chmod -R 777 /data/db/,那么mysql运行正常。有没有办法让minikube设置正确的权限?

我得到的错误是

2017-05-08 23:22:45 23 [Note] InnoDB: Using atomics to ref count buffer pool pages
2017-05-08 23:22:45 23 [Note] InnoDB: The InnoDB memory heap is disabled
2017-05-08 23:22:45 23 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2017-05-08 23:22:45 23 [Note] InnoDB: Memory barrier is not used
2017-05-08 23:22:45 23 [Note] InnoDB: Compressed tables use zlib 1.2.8
2017-05-08 23:22:45 23 [Note] InnoDB: Using Linux native AIO
2017-05-08 23:22:45 23 [Note] InnoDB: Using CPU crc32 instructions
2017-05-08 23:22:45 23 [Note] InnoDB: Initializing buffer pool, size = 128.0M
2017-05-08 23:22:45 23 [Note] InnoDB: Completed initialization of buffer pool
2017-05-08 23:22:45 7fb9598ee740  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
2017-05-08 23:22:45 7fb9598ee740  InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to
InnoDB: the directory.
2017-05-08 23:22:45 23 [ERROR] InnoDB: Creating or opening ./ibdata1 failed!
2017-05-08 23:22:45 23 [ERROR] InnoDB: Could not open or create the system tablespace. If you tried to add new data files to the system tablespace, and it failed here, you should now edit innodb_data_file_path in my.cnf back to what it was, and remove the new ibdata files InnoDB created in this failed attempt. InnoDB only wrote those files full of zeros, but did not yet use them in any way. But be careful: do not remove old data files which contain your precious data!
2017-05-08 23:22:45 23 [ERROR] Plugin 'InnoDB' init function returned error.
2017-05-08 23:22:45 23 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2017-05-08 23:22:45 23 [ERROR] Unknown/unsupported storage engine: InnoDB
2017-05-08 23:22:45 23 [ERROR] Aborting

我的容器定义是

spec: {
      containers: [
        {
          name: 'percona',
          image: 'percona:5.6',
          env: [
            {
              name: 'MYSQL_ROOT_PASSWORD',
              value: secrets['system-mysql-root-password'],
            },
            {
              name: 'MYSQL_OPS_USER',
              value: variables['system-mysql-ops-user'],
            },
            {
              name: 'MYSQL_OPS_PASSWORD',
              value: secrets['system-mysql-ops-password'],
            },
            {
              name: 'MYSQL_APP_USER',
              value: variables['system-mysql-app-user'],
            },
            {
              name: 'MYSQL_APP_PASSWORD',
              value: secrets['system-mysql-app-password'],
            },
          ],
          ports: [
            {
              containerPort: 3306,
              protocol: 'TCP',
            },
          ],
          volumeMounts: [
            { name: 'data', mountPath: '/var/lib/mysql' },
            { name: 'conf', mountPath: '/etc/mysql/conf.d' },
          ],
        },
      ],
      volumes: [
        { name: 'data', hostPath: { path: '/data/db/database' } },
        { name: 'conf', hostPath: { path: '/data/db/database-conf' } },
      ],
    },

以及minikube创建的目录的默认权限

drwxr-xr-x 2 root root 4096 May  8 23:22 database
drwxr-xr-x 2 root root 4096 May  8 23:22 database-conf

1 个答案:

答案 0 :(得分:0)

解决方案1。 将主机的权限更改为例如777。

解决方案2.(更好) 通过容器启动将卷所有者更改为mysql用户。对于docker(Dockerfile):

fork

解决方案3.使用root用户启动mysql;)