Docker 安装 MySQL 并使用 Navicat 连接
作者:mmseoamin日期:2023-12-21

本文目录

  • 1. 拉取 MySQL 镜像
  • 2. 创建并运行一个 MySQL 容器
  • 3. 验证MySQL容器是否创建并运行成功
    • 3.1 进入 MySQL 容器
    • 3.2 进入 MySQL
    • 3.3 查看 host 和 user
    • 4. MySQL 开启远程访问权限
      • 4.1 切换数据库
      • 4.2 给 root 用户分配远程访问权限
      • 4.3 强制刷新权限
      • 5. 服务器配置 3306 的开放端口
      • 6. 查看 Ubuntu IP
      • 7. 可能出现的问题
        • 7.1 进入 MySQL 数据库
        • 7.2 选择数据库
        • 7.3 更改密码加密方式
        • 7.4 更新用户密码
        • 7.5 刷新权限
        • 8. Navicat 连接 MySQL 测试

          1. 拉取 MySQL 镜像

          在没有拉取 MySQL 镜像之前的镜像列表:

          Docker 安装 MySQL 并使用 Navicat 连接,在这里插入图片描述,第1张

          • 可以通过下面的命令拉取 MySQL 镜像:
            docker pull mysql
            

            Docker 安装 MySQL 并使用 Navicat 连接,在这里插入图片描述,第2张

            这将下载最新版本的 MySQL 镜像到虚拟机中。

            2. 创建并运行一个 MySQL 容器

            docker run --name=mysql-test -itd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root123456 -d mysql
            

            参数说明:

            • –name:指定了容器的名称,方便之后进入容器的命令行。
            • -itd:其中,i 是交互式操作,t 是一个终端,d 指的是在后台运行。
            • -p:指在本地生成一个随机端口,用来映射 mysql 的 3306 端口。
            • -e:设置环境变量。
            • MYSQL_ROOT_PASSWORD=root123456:指定了 MySQL 的 root 密码。
            • -d mysql:指运行 mysql 镜像,设置容器在在后台一直运行。

              运行截图:

              Docker 安装 MySQL 并使用 Navicat 连接,在这里插入图片描述,第3张

              【补充知识】:

              在 Docker 中,使用 -e 参数可以设置环境变量。环境变量是影响容器运行时行为的一些配置值。这些值可以在容器内部使用,例如在应用程序中访问数据库时,可以使用环境变量来指定数据库连接信息。

              下面是一些使用 -e 参数运行 Docker 容器时的示例:

              1. 设置单个环境变量:

                docker run -e VAR_NAME=VAR_VALUE image_name
                

                这将在容器中设置一个名为 VAR_NAME 的环境变量,其值为 VAR_VALUE。

              2. 设置多个环境变量:

                docker run -e VAR1_NAME=VAR1_VALUE -e VAR2_NAME=VAR2_VALUE image_name
                

                这将在容器中设置两个环境变量 VAR1_NAME 和 VAR2_NAME,分别对应的值为 VAR1_VALUE 和 VAR2_VALUE。

              3. 从环境变量文件设置:

                docker run --env-file env_file_name image_name
                

                env_file_name 是包含环境变量键值对的文件。每行应该包含一个键值对,例如 VAR_NAME=VAR_VALUE。Docker 将读取文件中的键值对,并在容器中设置相应的环境变量。

              通过设置环境变量,可以在容器中配置应用程序所需的各种参数,例如数据库连接字符串、API密钥等。这样可以轻松地在不同环境中部署容器,而无需对应用程序的配置进行硬编码。

              3. 验证MySQL容器是否创建并运行成功

              docker ps
              

              Docker 安装 MySQL 并使用 Navicat 连接,在这里插入图片描述,第4张

              3.1 进入 MySQL 容器

              docker exec -it mysql-test /bin/bash
              

              3.2 进入 MySQL

              mysql -uroot -p
              Enter password:root123456
              

              Docker 安装 MySQL 并使用 Navicat 连接,在这里插入图片描述,第5张

              3.3 查看 host 和 user

              select host,user from mysql.user;
              

              Docker 安装 MySQL 并使用 Navicat 连接,在这里插入图片描述,第6张

              • 确保 root 的 host 为 % 即代表可以远程连接。

                4. MySQL 开启远程访问权限

                4.1 切换数据库

                注意:默认应该就是这个,不切换也行,保险起见还是切换一下

                use mysql;
                

                4.2 给 root 用户分配远程访问权限

                GRANT ALL PRIVILEGES ON *.* TO root@'%' WITH GRANT OPTION;
                

                参数说明:

                • GRANT:赋权命令
                • ALL PRIVILEGES:当前用户的所有权限
                • ON:介词
                • .:当前用户对所有数据库和表的相应操作权限
                • TO:介词
                • ‘root’@’%’:权限赋给 root 用户,所有 ip 都能连接
                • WITH GRANT OPTION:允许级联赋权

                  4.3 强制刷新权限

                  FLUSH PRIVILEGES;
                  

                  Docker 安装 MySQL 并使用 Navicat 连接,在这里插入图片描述,第7张

                  5. 服务器配置 3306 的开放端口

                  windows 如何开放端口

                  Docker 安装 MySQL 并使用 Navicat 连接,在这里插入图片描述,第8张

                  Docker 安装 MySQL 并使用 Navicat 连接,在这里插入图片描述,第9张

                  • 在虚拟机上开放 3306 端口,允许 MySQL 的入站连接,可以使用以下命令通过防火墙允许入站连接:

                    ufw allow 3306
                    

                    Docker 安装 MySQL 并使用 Navicat 连接,在这里插入图片描述,第10张

                    6. 查看 Ubuntu IP

                    # 查看 IP 地址
                    ip addr
                    # 也可以用这个命令
                    ifconfig
                    

                    Docker 安装 MySQL 并使用 Navicat 连接,在这里插入图片描述,第11张

                    Docker 安装 MySQL 并使用 Navicat 连接,在这里插入图片描述,第12张

                    7. 可能出现的问题

                    • 可能出现的问题截图:

                      Docker 安装 MySQL 并使用 Navicat 连接,img,第13张

                      • 问题出现原因:

                        这是因为 MySQL8 之前密码加密规则为 mysql_native_password,而 MySQL8 之后的加密规则为 caching_sha2_password,也就是说,如果要用 Navicat 连接 MySQL,其实只需要将密码规则改回 mysql_native_password 即可;

                        • 解决办法如下:

                          7.1 进入 MySQL 数据库

                          docker exec -it mysql-test /bin/bash
                          mysql -uroot -p
                          Enter password:root123456
                          

                          7.2 选择数据库

                          use mysql;
                          

                          7.3 更改密码加密方式

                          IDENTIFIED BY ‘root123456’:连接时输入密码,密码为 root123456

                          ALTER USER 'root'@'%' IDENTIFIED BY 'root123456' PASSWORD EXPIRE NEVER;
                          

                          7.4 更新用户密码

                          ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root123456';
                          

                          7.5 刷新权限

                          FLUSH PRIVILEGES;
                          

                          运行截图:

                          Docker 安装 MySQL 并使用 Navicat 连接,在这里插入图片描述,第14张

                          8. Navicat 连接 MySQL 测试

                          Docker 安装 MySQL 并使用 Navicat 连接,在这里插入图片描述,第15张

                          至此,Docker 安装 MySQL 并使用 Navicat 连接 正式结束!