Docker-compose: Database is uninitialized

后端 未结 5 1291
轻奢々
轻奢々 2021-02-18 17:02

I have a problem with docker-compose and mysql:

docker-compose.yml

version: \'2\' 
  services:
   db:
    image: mysql
    volumes:
      - \"./sito/db/:         


        
相关标签:
5条回答
  • 2021-02-18 17:40

    we can use

    docker container run -d --name mysql -e MYSQL_RANDOM_ROOT_PASSWORD=password mysql
    

    you can give any name and any password

    0 讨论(0)
  • 2021-02-18 17:45

    According the documentation, instead of MYSQL_ROOT_PASSWORD: you have to use - and = and also you should use a 'password' The result it will be:

    - MYSQL_ROOT_PASSWORD=some_password

    In your example:

    version: '2' 
      services:
       db:
        image: mysql
        volumes:
          - "./sito/db/:/var/lib/mysql"
        ports:
          - "3306:3306"
        restart: always
        environment:
          - MYSQL_ROOT_PASSWORD=some_password
    
    0 讨论(0)
  • 2021-02-18 17:49

    It looks like you're setting the MYSQL_ROOT_PASSWORD to nothing. Per the documentation, it is required.

    https://hub.docker.com/_/mysql/

    MYSQL_ROOT_PASSWORD

    This variable is mandatory and specifies the password that will be set for the MySQL root superuser account.

    0 讨论(0)
  • 2021-02-18 17:58

    The problem will appear if you don't specify a value for MYSQL_ROOT_PASSWORD (other cases explained below).

    You can use one of the following syntax below:

    # syntax 1
    environment:
      MYSQL_ROOT_PASSWORD: strongrootpassword
    
    # syntax 2
    environment:
     - MYSQL_ROOT_PASSWORD=strongrootpassword
    

    If you wish to use blank/empty password then use the following:

    MYSQL_ALLOW_EMPTY_PASSWORD=1
    

    If you wish to set a random password then use the following:

    MYSQL_RANDOM_ROOT_PASSWORD=1
    

    Then you can get the generated password using

    docker logs container_name_or_id 
    

    In the end you need to specify ONE of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD according to the entrypoint of MySQL image:

    • -z is to verify that the variable is not empty
    if [ -z "$MYSQL_ROOT_PASSWORD" -a -z "$MYSQL_ALLOW_EMPTY_PASSWORD" -a -z "$MYSQL_RANDOM_ROOT_PASSWORD" ]; then
        echo >&2 'error: database is uninitialized and password option is not specified '
        echo >&2 '  You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD'
        exit 1
    fi
    
    0 讨论(0)
  • 2021-02-18 17:59

    I just wanted to point out something, if using docker run command in terminal and not docker-compose, this would be the command:

    docker run -e MYSQL_ROOT_PASSWORD=password mysql_image
    

    Just notice that it won't work if you put -e MYSQL_ROOT_PASSWORD=password after mysql_image

    0 讨论(0)
提交回复
热议问题