【云原生-Docker】安装MySQL并使用Navicat连接

文章详细介绍了如何通过Docker拉取MySQL镜像,创建并运行MySQL容器,以及如何开启MySQL的远程访问权限。在遇到Navicat连接问题时,提到了由于加密规则变化导致的错误,并提供了修改密码加密方式的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、查看MySQL版本

(1)访问远程仓库

访问DokcerHub中的MySQL镜像库地址:https://hub.docker.com//mysql/tags
可以通过 Sort by 查看其他版本的MySQL,查看最新版本MySQL镜像(mysql:latest):https://hub.docker.com/
/mysql/tags?page=1&name=latest

在这里插入图片描述

(2)使用docker命令

docker search mysql

在这里插入图片描述

二、拉取mysql镜像

(1)拉取

docker pull mysql:latest

注意:tag是可选的,tag表示标签,多为软件的版本,默认是latest版本(最新版)
在这里插入图片描述

(2)验证

docker images

在这里插入图片描述

三、根据镜像创建并运行mysql容器

(1)运行

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

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

在这里插入图片描述

(2)验证

docker ps

在这里插入图片描述

四、MySQL开启远程访问权限

(1)切换数据库

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

use mysql;

(2)给root用户分配远程访问权限

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

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

(3)强制刷新权限

FLUSH PRIVILEGES;

五 navacat连接

在这里插入图片描述
此时测试连接会报错:

2059 - Authentication plugin ‘caching_sha2_password’ cannot be loaded:xxxx;

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

用如下办法解决。

(1)进入MySQL数据库

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

(2)更新加密方式

ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

(3)更新本地连接root用户密码

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; 

(4)更新远程连接root用户密码

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

##(5) 刷新权限

FLUSH PRIVILEGES; 

(5)连接成功

在这里插入图片描述

参考:参考1 参考2

### Navicat 连接本地数据库失败的解决方案 当 Navicat 无法连接到本地数据库时,可能的原因有多种。以下是常见的排查方向及其对应的解决办法: #### 1. **确认 MySQL 数据库服务是否启动** 如果 MySQL 数据库未正常运行,则 Navicat 将无法建立连接。可以通过以下方式检查启动 MySQL 服务: - 使用 `systemctl` 或 `service` 命令来管理 MySQL 服务状态。 ```bash sudo systemctl status mysql ``` 若发现服务停止,执行以下命令重新启动: ```bash sudo systemctl start mysql ``` 此操作适用于 Linux 系统环境下的 MySQL[^5]。 #### 2. **验证端口号配置** 默认情况下,MySQL 的通信端口为 3306。需确保该端口已被正确绑定至 localhost 允许外部访问。可通过修改 MySQL 配置文件 `/etc/mysql/my.cnf` 来调整绑定地址和端口设置: ```ini bind-address = 127.0.0.1 port = 3306 ``` 保存更改后重启 MySQL 服务以应用新配置[^2]。 #### 3. **处理身份认证协议不匹配问题** 错误代码 “Client does not support the authentication plugin” 表明客户端版本与服务器的身份验证插件存在兼容性差异。针对这种情况,建议更新 Navicat 至最新版或将用户的密码重设为旧式加密形式: ```sql ALTER USER 'your_username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password'; FLUSH PRIVILEGES; ``` 上述 SQL 脚本能够强制指定采用原生密码机制完成登录校验过程[^1]。 #### 4. **防火墙规则检查** 即使是在同一台机器上的本地连接尝试也可能受到操作系统内置防火墙的影响。对于 CentOS/RHEL 类型发行版来说,默认安装了 firewalld 服务;而对于 Ubuntu 则可能是 ufw (Uncomplicated Firewall) 。因此有必要临时禁用这些防护组件以便进一步诊断实际状况: ```bash sudo systemctl stop firewalld # 对于CentOS/RedHat系列 sudo ufw disable # 针对Ubuntu平台 ``` 另外还需注意 Docker 容器化部署场景下额外引入的安全策略限制因素[^3]。 #### 5. **TNS Listener 故障排除(仅限Oracle相关情况)** 虽然提问主要围绕 MySQL ,但如果涉及 Oracle 数据源则可能出现类似于 ORA-12541 和 ORA-28547 错误提示。此时应着重关注 listener.ora 文件定义的服务名称以及 tnsnames.ora 中描述的目标实例路径准确性[^4]。 通过以上几个方面的综合分析通常可以定位修复大多数关于 Navicat 无法连通目标数据库的问题根源所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值