Docker安装MySQL并使用Navicat连接的使用示例
作者:mortalོ
1. 拉取 MySQL 镜像
在没有拉取 MySQL 镜像之前的镜像列表:
- 可以通过下面的命令拉取 MySQL 镜像:
docker pull mysql
这将下载最新版本的 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 中,使用 -e
参数可以设置环境变量。环境变量是影响容器运行时行为的一些配置值。这些值可以在容器内部使用,例如在应用程序中访问数据库时,可以使用环境变量来指定数据库连接信息。
下面是一些使用 -e
参数运行 Docker 容器时的示例:
设置单个环境变量:
docker run -e VAR_NAME=VAR_VALUE image_name
这将在容器中设置一个名为
VAR_NAME
的环境变量,其值为VAR_VALUE
。设置多个环境变量:
docker run -e VAR1_NAME=VAR1_VALUE -e VAR2_NAME=VAR2_VALUE image_name
这将在容器中设置两个环境变量
VAR1_NAME
和VAR2_NAME
,分别对应的值为VAR1_VALUE
和VAR2_VALUE
。从环境变量文件设置:
docker run --env-file env_file_name image_name
env_file_name
是包含环境变量键值对的文件。每行应该包含一个键值对,例如VAR_NAME=VAR_VALUE
。Docker 将读取文件中的键值对,并在容器中设置相应的环境变量。
通过设置环境变量,可以在容器中配置应用程序所需的各种参数,例如数据库连接字符串、API密钥等。这样可以轻松地在不同环境中部署容器,而无需对应用程序的配置进行硬编码。
3. 验证MySQL容器是否创建并运行成功
docker ps
3.1 进入 MySQL 容器
docker exec -it mysql-test /bin/bash
3.2 进入 MySQL
mysql -uroot -p Enter password:root123456
3.3 查看 host 和 user
select host,user from mysql.user;
- 确保
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;
5. 服务器配置 3306 的开放端口
在虚拟机上开放 3306 端口,允许 MySQL 的入站连接,可以使用以下命令通过防火墙允许入站连接:
ufw allow 3306
6. 查看 Ubuntu IP
# 查看 IP 地址 ip addr # 也可以用这个命令 ifconfig
7. 可能出现的问题
- 可能出现的问题截图:
- 问题出现原因:
这是因为 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;
运行截图:
8. Navicat 连接 MySQL 测试
到此这篇关于Docker安装MySQL并使用Navicat连接的使用示例的文章就介绍到这了,更多相关Docker MySQL并使用Navicat连接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!