Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么MySQL容器在使用WSL2的Windows 10 Home上不断重新启动?_Mysql_Docker_Docker Compose - Fatal编程技术网

为什么MySQL容器在使用WSL2的Windows 10 Home上不断重新启动?

为什么MySQL容器在使用WSL2的Windows 10 Home上不断重新启动?,mysql,docker,docker-compose,Mysql,Docker,Docker Compose,我试图在本地机器上设置一个Laravel开发环境,但我的MySQL容器一直在重新启动 使用:带WSL2和Docker桌面的Windows 10 Home docker compose.yml 版本:“3” 网络: 拉雷维尔: 服务: 网状物: 图片:nginx:stable alpine 容器名称:nginx 端口: - "80:80" 卷数: -./src:/var/www/html -./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro

我试图在本地机器上设置一个Laravel开发环境,但我的MySQL容器一直在重新启动

使用:带WSL2和Docker桌面的Windows 10 Home

docker compose.yml

版本:“3”
网络:
拉雷维尔:
服务:
网状物:
图片:nginx:stable alpine
容器名称:nginx
端口:
- "80:80"
卷数:
-./src:/var/www/html
-./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
取决于:
-phpfpm
-分贝
网络:
-拉维尔
db:
图片:mysql:8.0.22
容器名称:mysql
重新启动:始终
卷数:
-./mysql:/var/lib/mysql
环境:
MYSQL_数据库:mydb
MYSQL\u用户:root
MYSQL\u密码:root
MYSQL\u ROOT\u密码:ROOT
网络:
-拉维尔
phpfpm:
建造:
上下文:。
dockerfile:dockerfile
集装箱名称:phpfpm
卷数:
-./src:/var/www/html
端口:
- "9000:9000"
网络:
-拉维尔
phpmyadmin:
图片:phpmyadmin:5-fpm-alpine
容器名称:phpmyadmin
重新启动:始终
端口:
- 8080:80
环境:
-PMA_任意=1
网络:
-拉维尔
Dockerfile

FROM php:7.2-fpm-alpine

RUN docker-php-ext-install pdo pdo_mysql
Nginx(default.conf)

docker compose ps
docker deskop
显示
mysql
容器状态为
restarting

它偶尔会重新启动一次,但会再次停止。当我查看日志文件时,似乎出现了严重的问题,但我无法理解

mysql
容器日志

2020-11-07 17:09:27+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.22-1debian10 started.

2020-11-07 17:09:28+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'

2020-11-07 17:09:28+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.22-1debian10 started.

2020-11-07T17:09:28.627271Z 0 [System] [MY-010116] [Server] /usr/sbin/mysqld (mysqld 8.0.22) starting as process 1

2020-11-07T17:09:28.634780Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive

2020-11-07T17:09:28.654292Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.

2020-11-07T17:09:30.967703Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.

mysqld: Table 'mysql.plugin' doesn't exist

2020-11-07T17:09:31.108803Z 0 [ERROR] [MY-010735] [Server] Could not open the mysql.plugin table. Please perform the MySQL upgrade procedure.

2020-11-07T17:09:31.187838Z 0 [System] [MY-011323] [Server] X Plugin ready for connections. Bind-address: '::' port: 33060, socket: /var/run/mysqld/mysqlx.sock

2020-11-07T17:09:31.251299Z 0 [Warning] [MY-010015] [Repl] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.

2020-11-07T17:09:31.304178Z 0 [Warning] [MY-000054] [Server] World-writable config file './auto.cnf' is ignored.

2020-11-07T17:09:31.305509Z 0 [Warning] [MY-010107] [Server] World-writable config file './auto.cnf' has been removed.

2020-11-07T17:09:31.306123Z 0 [Warning] [MY-010075] [Server] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 00514c52-211c-11eb-bbbd-0242ac170002.

2020-11-07T17:09:31.415490Z 0 [Warning] [MY-010015] [Repl] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.

2020-11-07T17:09:31.439838Z 0 [Warning] [MY-013595] [Server] Failed to initialize TLS for channel: mysql_main. See below for the description of exact issue.

2020-11-07T17:09:31.440013Z 0 [Warning] [MY-010069] [Server] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key

2020-11-07T17:09:31.444031Z 0 [Warning] [MY-010284] [Server] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.

2020-11-07T17:09:31.445904Z 0 [Warning] [MY-010284] [Server] RSA public key file not found: /var/lib/mysql//public_key.pem. Some authentication plugins will not work.

2020-11-07T17:09:31.520973Z 0 [Warning] [MY-011810] [Server] Insecure configuration for --pid-file: Location '/var/run/mysqld' in the path is accessible to all OS users. Consider choosing a different directory.

2020-11-07T17:09:31.521733Z 0 [Warning] [MY-010441] [Server] Failed to open optimizer cost constant tables

2020-11-07T17:09:31.522162Z 0 [ERROR] [MY-013129] [Server] A message intended for a client cannot be sent there as no client-session is attached. Therefore, we're sending the information to the error-log instead: MY-001146 - Table 'mysql.component' doesn't exist

2020-11-07T17:09:31.522393Z 0 [Warning] [MY-013129] [Server] A message intended for a client cannot be sent there as no client-session is attached. Therefore, we're sending the information to the error-log instead: MY-003543 - The mysql.component table is missing or has an incorrect definition.

2020-11-07T17:09:31.523156Z 0 [ERROR] [MY-010326] [Server] Fatal error: Can't open and lock privilege tables: Table 'mysql.user' doesn't exist

2020-11-07T17:09:31.523377Z 0 [ERROR] [MY-010952] [Server] The privilege system failed to initialize correctly. For complete instructions on how to upgrade MySQL to a new version please see the 'Upgrading MySQL' section from the MySQL manual.

2020-11-07T17:09:31.523987Z 0 [ERROR] [MY-010119] [Server] Aborting

2020-11-07T17:09:32.995214Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.22) MySQL Community Server - GPL.

我没有使用映射卷来实现数据持久性,而是使用了托管卷,它不再崩溃

以前的

db:
        image: mysql:8.0.22
        container_name: mysql
        restart: always
        volumes:
            - ./mysql:/var/lib/mysql
        environment:
            MYSQL_DATABASE: mydb
            MYSQL_USER: root
            MYSQL_PASSWORD: root
            MYSQL_ROOT_PASSWORD: root
        networks:
            - laravel
现在

db:
        image: mysql:8.0.22
        container_name: mysql
        restart: always
        volumes:
            - db_data:/var/lib/mysql
        environment:
            MYSQL_DATABASE: mydb
            MYSQL_USER: root
            MYSQL_PASSWORD: root
            MYSQL_ROOT_PASSWORD: root
        networks:
            - laravel

volumes:
    db_data: {}

当我开始与docker合作时,我发布了这个问题。。。经过一些研究,我发现罪魁祸首是不同的Linux发行版对同一用户名使用了不同的用户id。所以基本上是权限问题

请阅读这篇文章,如果这对你有意义

我必须从ubuntu中删除当前用户,并添加与alpine用户匹配的用户。那是我当时使用的发行版

也许这就是我想的答案。。。如果你正在使用ubuntu和alpine Linux的docker镜像。。。那么用户名和用户id可能会有所不同


我引用的这篇文章展示了如何从当前Linux发行版中删除用户,并添加具有不同用户id的同一用户。

有趣!我尝试使用托管卷,mysql没有崩溃。现在
db
服务有以下
命令:--default authentication plugin=mysql\u native\u password
卷:
-db\u data:/var/lib/mysql
,卷定义在底部。但是,现在连接被拒绝
docker compose exec db mysql-u root-p
告诉我
错误2002(HY000):无法通过socket'/var/run/mysqld/mysqld.sock'(2)连接到本地mysql服务器
。有人知道吗?我猜我之前的映射与docker有一些windows/linux文件系统兼容性问题。我试图在我的项目文件夹(docker从WSL2映射的windows文件系统)上持久化mysql数据库。使用托管卷解决了这个问题,我想我尝试了这个解决方案,效果很好。但我们需要对这个问题进行更多的解释。也许其他人能帮助我们解决真正的问题。非常感谢。
db:
        image: mysql:8.0.22
        container_name: mysql
        restart: always
        volumes:
            - db_data:/var/lib/mysql
        environment:
            MYSQL_DATABASE: mydb
            MYSQL_USER: root
            MYSQL_PASSWORD: root
            MYSQL_ROOT_PASSWORD: root
        networks:
            - laravel

volumes:
    db_data: {}