当前位置: 首页 > news >正文

【docker】修改 MySQL 密码后 Navicat 仍能用原密码连接

文章目录

  • 一、为什么修改 MySQL 密码后 Navicat 仍能用原密码连接
    • 主要原因
    • 解决方案
      • 1. 彻底断开 Navicat 连接(`实战- 推荐`)
      • 2. 修改所有 root 账户密码(`实战- 推荐`)
      • 3. 检查 MySQL 用户表
      • 4. 清除 MySQL 连接缓存
      • 5. 重启 MySQL 服务
    • 预防措施
  • 二、MySQL 中 `root'@'localhost'` 和 `root'@'%'` 的区别与作用
    • 核心区别
    • 详细解释
      • 1. `root'@'localhost'`
      • 2. `root'@'%'`
    • 安全建议
    • 常见问题解决

一、为什么修改 MySQL 密码后 Navicat 仍能用原密码连接

当您修改 MySQL 密码后 Navicat 仍能用旧密码连接,通常是由以下几个原因造成的:

主要原因

  1. 连接池缓存

    • Navicat 会缓存连接信息
    • 已建立的连接在断开前会保持有效
  2. 多 root 账户未全部修改

    • MySQL 可能有多个 root 账户(如 root@localhostroot@%
    • 您可能只修改了其中一个账户的密码
  3. 权限未刷新

    • 修改密码后未执行 FLUSH PRIVILEGES(某些 MySQL 版本需要)
  4. MySQL 认证插件缓存

    • 特别是使用 caching_sha2_password 插件时可能有缓存

解决方案

1. 彻底断开 Navicat 连接(实战- 推荐

  • 完全关闭 Navicat 并重新打开
  • 在 Navicat 中右键点击连接 → “关闭连接”

2. 修改所有 root 账户密码(实战- 推荐

-- 修改所有 root 账户密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
ALTER USER 'root'@'%' IDENTIFIED BY '新密码';-- 刷新权限
FLUSH PRIVILEGES;

3. 检查 MySQL 用户表

SELECT User, Host, plugin FROM mysql.user WHERE User='root';

确保所有 root 账户的密码都已更新

4. 清除 MySQL 连接缓存

-- 查看当前连接
SHOW PROCESSLIST;-- 终止所有旧连接(谨慎操作)
KILL [process_id];

5. 重启 MySQL 服务

# Docker 容器
docker restart mysql_container# 原生 MySQL
sudo service mysql restart

预防措施

  1. 修改密码后

    • 立即断开所有现有连接
    • 在 Navicat 中删除并重建连接配置
  2. 使用 Navicat 测试连接

    • 修改密码后创建新的测试连接
    • 不要使用"保存密码"功能临时测试
  3. 验证方式

    mysql -u root -p新密码 -e "SELECT 1;"
    

    确认命令行使用新密码可以连接

这种情况通常会在 Navicat 完全重启或 MySQL 服务重启后恢复正常,建议使用上述方法彻底解决。

二、MySQL 中 root'@'localhost'root'@'%' 的区别与作用

在 MySQL 中,root'@'localhost'root'@'%' 是两个不同的用户账户,虽然用户名都是 root,但它们有不同的访问权限和用途。

核心区别

特性root'@'localhost'root'@'%
连接来源只能从 MySQL 服务器本机连接可以从任何主机连接
安全性更高(限制本地访问)较低(允许远程访问)
默认创建MySQL 安装时自动创建需要手动创建
典型用途服务器本地管理远程服务器管理
Socket 连接可以使用 Unix domain socket只能使用 TCP/IP 连接

详细解释

1. root'@'localhost'

  • 作用:仅允许通过服务器本机连接 MySQL
  • 连接方式
    • 命令行直接访问:mysql -u root -p
    • 本地应用程序连接
  • 特点
    • 默认存在的超级用户账户
    • 可以使用 Unix domain socket 连接(比 TCP/IP 更快)
    • 不需要网络接口即可访问
  • 典型场景
    • 服务器本地维护
    • 安全性要求高的操作

2. root'@'%'

  • 作用:允许从任何主机远程连接 MySQL
  • 连接方式
    • 通过网络 TCP/IP 连接
    • 如:mysql -h 192.168.1.100 -u root -p
  • 特点
    • 百分号 % 是通配符,表示"任何主机"
    • 需要手动创建(非默认账户)
    • 必须通过网络接口连接
  • 典型场景
    • 远程服务器管理
    • 从应用服务器连接数据库
    • 多服务器环境管理

安全建议

  1. 生产环境最佳实践

    • 禁用 root'@'% 或设置强密码
    • 只允许特定IP连接(如 root'@'192.168.1.%'
    • 为远程访问创建专用账户(非root)
  2. 权限管理

    -- 查看权限差异
    SHOW GRANTS FOR 'root'@'localhost';
    SHOW GRANTS FOR 'root'@'%';
    
  3. 创建限制IP的root账户

    CREATE USER 'root'@'192.168.1.100' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.100';
    

常见问题解决

问题:无法远程连接 MySQL

  • 检查步骤
    1. 确认存在 root'@'%' 用户
    2. 检查 MySQL 配置文件中 bind-address 不是 127.0.0.1
    3. 确认防火墙允许 3306 端口

问题:修改密码后部分连接仍有效

  • 解决方案
    -- 修改所有root账户密码
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
    ALTER USER 'root'@'%' IDENTIFIED BY 'new_password';
    FLUSH PRIVILEGES;
    

理解这两个账户的区别对于正确配置 MySQL 安全策略至关重要,特别是在生产环境中。

http://www.lryc.cn/news/579044.html

相关文章:

  • RabbitMQ使用topic Exchange实现微服务分组订阅
  • docker离线/在线环境下安装elasticsearch
  • IO--进程实操
  • 【新手小白的嵌入式学习之路】-STM32的学习_GPIO 8种模式学习心得
  • ai之RAG本地知识库--基于OCR和文本解析器的新一代RAG引擎:RAGFlow 认识和源码剖析
  • LeetCode--39.组合总和
  • Lua 安装使用教程
  • CRMEB Pro版v3.3源码全开源+PC端+Uniapp前端+搭建教程
  • 【C++】第十三节—stack、queue、priority_queue、容器适配器(介绍和使用+模拟实现+OJ题)
  • 客服机器人知识库怎么搭?智能客服机器人3种方案深度对比(含零售落地案例)
  • 去中心化身份:2025年Web3身份验证系统开发实践
  • 专题:2025AI营销市场发展研究报告|附400+份报告PDF汇总下载
  • 告别 ifconfig:openEuler 网络配置的现代化之路
  • 通俗理解JVM细节-面试篇
  • UI前端大数据处理策略优化:基于云计算的数据存储与计算
  • kotlin 通道trysend方法
  • ZYNQ学习记录FPGA(六)程序固化Vivado+Vitis
  • GO Web 框架 Gin 完全解析与实践
  • 【Unity】MiniGame编辑器小游戏(九)打砖块【Breakout】
  • 云上配送革命:亚矩云手机如何重塑Uber Eats的全球外卖生态
  • 服务器异常宕机或重启导致 RabbitMQ 启动失败问题分析与解决方案
  • 2025年Java常见面试题(持续更新)
  • Maven工具学习使用(十三)——Maven Wrapper命令解析与使用
  • 在设计提示词(Prompt)时,关于信息位置的安排z怎么 结合模型特性和任务目标
  • 量子算法:微算法科技用于定位未知哈希图的量子算法,网络安全中的哈希映射突破
  • Linux 后台启动java jar 程序 nohup java -jar
  • pytest之fixture中yield详解
  • 文心快码答用户问|Comate AI IDE专场
  • UniApp完美对接RuoYi框架开发企业级应用
  • Droplets:趣味AI课程,开启语言学习新旅程