当前位置:   article > 正文

Docker 安装mysql并解决ERROR 1045 (28000)问题_docker exec -it mysql mysql -uroot -p enter passwo

docker exec -it mysql mysql -uroot -p enter password: error 1045 (28000): ac

Docker 安装mysql并解决ERROR 1045 (28000):问题

安装步骤

我习惯用dockerfile做一些自定义的配置。

FROM mysql:8.0.23

ENV MYSQL_ROOT_PASSWORD   my_root_password
ENV MYSQL_DATABASE        test
ENV MYSQL_USER            app
ENV MYSQL_PASSWORD        mypassword
ENV ALLOW_EMPTY_PASSWORD  yes
EXPOSE 13306:3306

# 该参数命令是用来更改所有表的默认编码和排序规则以使用UTF-8(utf8mb4)命令如下--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
#docker run -itd  -p 13306:3306 --name=mysql8 mymysql:1.0.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["mysqld"]

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
打包镜像
# 执行dockerfile 打包镜像
$ docker build -f Dockerfile -t mymysql:1.0.0 .
Sending build context to Docker daemon  2.048kB
Step 1/9 : FROM mysql:8.0.23
8.0.23: Pulling from library/mysql
6f28985ad184: Pull complete
e7cd18945cf6: Pull complete
ee91068b9313: Pull complete
b4efa1a4f93b: Pull complete
f220edfa5893: Pull complete
74a27d3460f8: Pull complete
2e11e23b7542: Pull complete
fbce32c99761: Pull complete
08545fb3966f: Pull complete
5b9c076841dc: Pull complete
460de37ce6f9: Pull complete
9c38e51eabd2: Pull complete
Digest: sha256:bfb6bdc172e101a3e7ab321f541bd4e3f9ac11bac8da7ea0708defcaf2c7554e
Status: Downloaded newer image for mysql:8.0.23
 ---> 808391de2156
Step 2/9 : ENV MYSQL_ROOT_PASSWORD   my_root_password
 ---> Running in caeee2e878ee
Removing intermediate container caeee2e878ee
 ---> ea1c18b462a8
Step 3/9 : ENV MYSQL_DATABASE        test
 ---> Running in 67f505191760
Removing intermediate container 67f505191760
 ---> 1e63d397e2a8
Step 4/9 : ENV MYSQL_USER            app
 ---> Running in fb82983bc8af
Removing intermediate container fb82983bc8af
 ---> 9a08dcf54da9
Step 5/9 : ENV MYSQL_PASSWORD        mypassword
 ---> Running in ebecaab4a7ff
Removing intermediate container ebecaab4a7ff
 ---> f35c1c672c98
Step 6/9 : ENV ALLOW_EMPTY_PASSWORD  yes
 ---> Running in 77a6b3082637
Removing intermediate container 77a6b3082637
 ---> 91f968434744
Step 7/9 : EXPOSE 13306:3306
 ---> Running in 0bd83fdac468
Removing intermediate container 0bd83fdac468
 ---> 45b0c458d258
Step 8/9 : ENTRYPOINT ["docker-entrypoint.sh"]
 ---> Running in fb6999124981
Removing intermediate container fb6999124981
 ---> 35e94a5b3da8
Step 9/9 : CMD ["mysqld"]
 ---> Running in 97b46dfccf05
Removing intermediate container 97b46dfccf05
 ---> b82b30fd7eb6
Successfully built b82b30fd7eb6
Successfully tagged mymysql:1.0.0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
启动容器

如果要对数据库表结构做utf8mb4编码更改,请在执行docker run命令时,在尾部追加--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

# 示例为更改了表的默认编码为 utf8mb4编码
$ docker run -itd  -p 13306:3306 --name=mysql8 mymysql:1.0.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
ce2ee419dc247cf7934cd9efcf70c0b0f9d86858d600819d8d4c9c0bb6362d79
[root@stresstest-test-wx-004 docker]#
[root@stresstest-test-wx-004 docker]# 查看 容器启动情况
[root@stresstest-test-wx-004 docker]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                NAMES
ce2ee419dc24        mymysql:1.0.0       "docker-entrypoint.s…"   5 seconds ago       Up 4 seconds        33060/tcp, 0.0.0.0:13306->3306/tcp   mysql8
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
查看端口映射
[root@stresstest-test-wx-004 docker]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp6       0      0 :::22                   :::*                    LISTEN      1/systemd
tcp6       0      0 :::8089                 :::*                    LISTEN      51968/python
tcp6       0      0 :::13306                :::*                    LISTEN      104942/docker-proxy
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
注意事项

注意 进入容器后,连接mysql数据库一定要加 -h 参数 不然连接数据库会报错ERROR 1045 (28000): Access denied for user下面记录完整的访问流程。

[root@stresstest-test-wx-004 docker]# docker exec -it  mysql8 bash
root@ce2ee419dc24:/# 注意 一定要加 -h 参数 不然会报错 ERROR 1045 (28000): Access denied for user
root@ce2ee419dc24:/# mysql -h localhost -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.23 MySQL Community Server - GPL

Copyright (c) 2000, 2021, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.01 sec)

mysql>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
Reference

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/835380
推荐阅读
相关标签
  

闽ICP备14008679号