title: MYSQL_ROOT_PASSWORD is set but getting "Access denied for user 'root'@'localhost' (using password: YES)" in docker container
body: <p>I have a docker-compose file and a Dockerfile. MySQL is installed properly. I have set <strong>MYSQL_ROOT_PASSWORD</strong>. But when trying to access mysql db, getting the error - Access denied. I have read the other threads of this site, but couldn't get that much help. :( </p>
  
  <p>Here is my docker-compose file:</p>
  
  <pre><code>version: '3'
  
  volumes:
          db_data: {}
  
  services:
      db:
          build:
              context: .
              dockerfile: ./db/Dockerfile
              args:
                  - database=iTel
                  - password=123
          image: db_image
          volumes:
              - db_data:/var/lib/mysql
          ports:
              - "3306:3306"
  </code></pre>
  
  <p>and Dockerfile:</p>
  
  <pre><code>FROM mysql:5.7.15
  
  ARG database
  ARG password
  
  RUN echo ${database}
  RUN echo ${password}
  
  MAINTAINER me
  ENV MYSQL_DATABASE=${database} \
      MYSQL_ROOT_PASSWORD=${password}
  ADD ./db/database100.sql /docker-entrypoint-initdb.d
  EXPOSE 3306
  </code></pre>
  
  <p>Here are logs for build:</p>
  
  <pre><code>docker-compose up -d
  
  Building db
  Step 1/9 : FROM mysql:5.7.15
  5.7.15: Pulling from library/mysql
  6a5a5368e0c2: Pull complete
  0689904e86f0: Pull complete
  486087a8071d: Pull complete
  3eff318f6785: Pull complete
  3df41d8a4cfb: Pull complete
  1b4a00485931: Pull complete
  0bab0b2c2630: Pull complete
  264fc9ce512d: Pull complete
  e0181dcdbbe8: Pull complete
  53b082fa47c7: Pull complete
  e5cf4fe00c4c: Pull complete
  Digest: sha256:966490bda4576655dc940923c4883db68cca0b3607920be5efff7514e0379aa7
  Status: Downloaded newer image for mysql:5.7.15
   ---&gt; 18f13d72f7f0
  Step 2/9 : ARG database
   ---&gt; Running in 62819f9fc38b
  Removing intermediate container 62819f9fc38b
   ---&gt; 863fd3212046
  Step 3/9 : ARG password
   ---&gt; Running in ea9d36c1a954
  Removing intermediate container ea9d36c1a954
   ---&gt; 056100b1d5eb
  Step 4/9 : RUN echo ${database}
   ---&gt; Running in 941bd2f4fc58
  iTel
  Removing intermediate container 941bd2f4fc58
   ---&gt; 7b2b48e7bd8c
  Step 5/9 : RUN echo ${password}
   ---&gt; Running in 9cb80396bb62
  123
  Removing intermediate container 9cb80396bb62
   ---&gt; 155d184c78ba
  Step 6/9 : MAINTAINER me
   ---&gt; Running in 8e3b3b53ce7b
  Removing intermediate container 8e3b3b53ce7b
   ---&gt; 9a7617a24800
  Step 7/9 : ENV MYSQL_DATABASE=${database}     MYSQL_ROOT_PASSWORD=${password}
   ---&gt; Running in e483e65caf55
  Removing intermediate container e483e65caf55
   ---&gt; acf8ac829607
  Step 8/9 : ADD ./db/database100.sql /docker-entrypoint-initdb.d
   ---&gt; 42d992439f98
  Step 9/9 : EXPOSE 3306
   ---&gt; Running in 4e138502c6f9
  Removing intermediate container 4e138502c6f9
   ---&gt; a0818deda593
  Successfully built a0818deda593
  Successfully tagged db_image:latest
  WARNING: Image for service db was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
  Creating reve_db_1 ... done
  </code></pre>
  
  <p>to see the containers:</p>
  
  <pre><code>docker ps -a
  
  CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
  49419cb9980a        db_image            "docker-entrypoint.s…"   10 seconds ago      Up 8 seconds        0.0.0.0:3306-&gt;3306/tcp   reve_db_1
  </code></pre>
  
  <p>That is log for this container:</p>
  
  <pre><code>docker logs 49419cb9980a
  
  2020-01-21T07:53:13.050129Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
  2020-01-21T07:53:13.051767Z 0 [Note] mysqld (mysqld 5.7.15) starting as process 1 ...
  2020-01-21T07:53:13.054945Z 0 [Note] InnoDB: PUNCH HOLE support available
  2020-01-21T07:53:13.055053Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
  2020-01-21T07:53:13.055103Z 0 [Note] InnoDB: Uses event mutexes
  2020-01-21T07:53:13.055179Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
  2020-01-21T07:53:13.055226Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3
  2020-01-21T07:53:13.055268Z 0 [Note] InnoDB: Using Linux native AIO
  2020-01-21T07:53:13.055608Z 0 [Note] InnoDB: Number of pools: 1
  2020-01-21T07:53:13.055791Z 0 [Note] InnoDB: Using CPU crc32 instructions
  2020-01-21T07:53:13.061164Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M
  2020-01-21T07:53:13.072998Z 0 [Note] InnoDB: Completed initialization of buffer pool
  2020-01-21T07:53:13.075325Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority().
  2020-01-21T07:53:13.101337Z 0 [Note] InnoDB: Highest supported file format is Barracuda.
  2020-01-21T07:53:13.142134Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables
  2020-01-21T07:53:13.142356Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
  2020-01-21T07:53:13.184613Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB.
  2020-01-21T07:53:13.185628Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.
  2020-01-21T07:53:13.185733Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active.
  2020-01-21T07:53:13.186108Z 0 [Note] InnoDB: Waiting for purge to start
  2020-01-21T07:53:13.236391Z 0 [Note] InnoDB: 5.7.15 started; log sequence number 12146163
  2020-01-21T07:53:13.236828Z 0 [Note] Plugin 'FEDERATED' is disabled.
  2020-01-21T07:53:13.237186Z 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
  2020-01-21T07:53:13.252074Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
  2020-01-21T07:53:13.252900Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
  2020-01-21T07:53:13.253023Z 0 [Note] IPv6 is available.
  2020-01-21T07:53:13.253076Z 0 [Note]   - '::' resolves to '::';
  2020-01-21T07:53:13.253184Z 0 [Note] Server socket created on IP: '::'.
  2020-01-21T07:53:13.269950Z 0 [Warning] 'db' entry 'sys mysql.sys@localhost' ignored in --skip-name-resolve mode.
  2020-01-21T07:53:13.270581Z 0 [Warning] 'proxies_priv' entry '@ root@localhost' ignored in --skip-name-resolve mode.
  2020-01-21T07:53:13.277379Z 0 [Note] InnoDB: Buffer pool(s) load completed at 200121  7:53:13
  2020-01-21T07:53:13.295467Z 0 [Warning] 'tables_priv' entry 'sys_config mysql.sys@localhost' ignored in --skip-name-resolve mode.
  2020-01-21T07:53:13.367019Z 0 [Note] Event Scheduler: Loaded 0 events
  2020-01-21T07:53:13.368851Z 0 [Note] mysqld: ready for connections.
  Version: '5.7.15'  socket: '/var/run/mysqld/mysqld.sock'  port: 3306  MySQL Community Server (GPL)
  </code></pre>
  
  <p>Now entered in the container:</p>
  
  <pre><code>docker exec -it 49419cb9980a bash
  
  root@49419cb9980a:/#
  </code></pre>
  
  <p>I have checked if MYSQL_ROOT_PASSWORD is set correctly(in the container):</p>
  
  <pre><code>root@49419cb9980a:/# echo $MYSQL_ROOT_PASSWORD
  123
  </code></pre>
  
  <p>Then tried to log into mysql:</p>
  
  <pre><code>root@49419cb9980a:/# mysql -u root -p
  Enter password:
  ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
  </code></pre>
  
  <p>My question is, how to solve this problem? Why can't I access mysql? I tried with no password option too. 
  That gave me this error:</p>
  
  <pre><code>mysql -u root
  ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
  </code></pre>
  
  <p>This is my project structure:</p>
  
  <pre><code>tree
  .
  ├── db
  │   ├── Dockerfile
  │   └── database100.sql
  └── docker-compose.yml
  
  1 directory, 3 files
  </code></pre>