Docker部署MySql应用 - 魔鬼YU天使 - 博客园 (cnblogs.com)
拉取MySQL镜像
我们可以通过Docker提供的命令,直接从Docker Hub上拉取MySQL的官方镜像。打开终端,输入如下命令:
docker pull mysql:8.0
其中,:8.0表示我们需要下载的MySQL版本,你也可以更改为你需要的其他版本号。
通常要想在命令行中查看 Docker Hub 上的 MySQL 镜像版本,可以使用 docker 命令的 search 子命令。不过这个方法并不能直接查看到所有的版本信息,只能看到镜像的基本信息。你可以这样做:
docker search mysql
上述命令会返回一个列表,显示在 Docker Hub 上所有与 "mysql" 相关的镜像。
比如:
然而,如果你想查看某个特定镜像(例如,官方的 MySQL 镜像)的所有版本,Docker CLI 并没有直接提供这样的功能。因此,你通常需要访问 Docker Hub 的网页版,查看相应镜像的 "Tags" 页面来获取这个信息。
运行MySQL
当我们拉取好MySQL镜像后,就可以运行MySQL容器了。通过以下命令创建并启动一个MySQL容器:
docker run --name mysql_test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:8.0
这个命令的意思是运行一个名为mysql_test的MySQL容器,映射宿主机的3306端口到容器的3306端口,设置root用户的密码为my-secret-pw,并使用-d
后台模式运行。当然,你可以根据自己的需要更改这些参数。
验证MySQL容器运行
如果你想验证MySQL容器是否成功运行,可以通过如下命令进入到这个MySQL容器:
docker exec -it mysql_test mysql -uroot -p
然后输入你之前设置的root用户密码my-secret-pw,如果看到MySQL的提示符,那就说明你的MySQL容器已经运行成功了。
-
exec
:表示执行一个命令。 -
-it
:是两个选项的结合,用于创建一个与容器的输入和输出进行交互的终端。这两个选项的含义如下:
-i
或--interactive
:表示保持 STDIN 打开,允许对容器进行交互式输入。-t
或--tty
:为容器分配一个伪终端(pseudo-TTY),使得终端命令的输出能够正确显示。
-
mysql_test
:是要执行命令的容器的名称或容器 ID。在这个例子中,这是一个名为mysql_test
的容器。
Navicat连接报错解决
1251 - Client does not support authentication protocol
1 容器中登录mysql,查看mysql的版本
2 进行授权远程连接(注意mysql 8.0跟之前的授权方式不同)
授权
GRANT ALL ON *.* TO ``'root'``@``'%'``;
刷新权限
flush privileges
此时,还不能远程访问,因为Navicat只支持旧版本的加密,需要更改mysql的加密规则
3 更改加密规则
ALTER USER ``'root'``@``'localhost'` `IDENTIFIED BY ``'password'` `PASSWORD EXPIRE NEVER;
4 更新root用户密码
ALTER USER ``'root'``@``'%'` `IDENTIFIED WITH mysql_native_password BY ``'123456'``;
刷新权限
flush privileges;
设置完成,再次使用 Navicat 连接数据库,OK!
标签:容器,MySQL,Navicat,mysql,镜像,Docker,root From: https://blog.51cto.com/coderge/7427175在使用数据库时,直接用MySQL5.7就不会出这个问题