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

使用Docker操作MySQL

在Docker中操作MySQL可以简化数据库的部署和管理过程。以下是详细的步骤,包括如何拉取MySQL镜像、创建容器以及配置远程访问权限。

拉取MySQL镜像

首先,使用以下命令从Docker Hub拉取MySQL镜像:

docker pull mysql

你也可以指定版本,例如拉取MySQL 5.7版本:

docker pull mysql:5.7

拉取完成后,可以使用以下命令查看本地镜像:

docker images

创建MySQL容器

使用以下命令创建并运行MySQL容器:

docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 --name my_mysql mysql

-d:后台运行容器

-p:端口映射,将容器的3306端口映射到主机的3307端口

-e:设置环境变量,这里设置MySQL的root用户密码为123456

–name:容器名称

mysql:使用的镜像名称

创建完成后,可以使用以下命令查看运行中的容器:

docker ps

进入容器并测试

使用以下命令进入容器内部:

docker exec -it my_mysql bash

进入容器后,可以使用以下命令登录MySQL:

mysql -uroot -p123456

配置远程访问权限

为了允许远程访问MySQL,需要进行以下配置:

进入MySQL容器:

docker exec -it my_mysql bash

登录MySQL:

mysql -uroot -p123456

修改root用户的权限,允许远程访问:

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

刷新权限:

FLUSH PRIVILEGES;

解决 MySQL 插件 ‘mysql_native_password’ 未加载错误

当你在 MySQL 中遇到 ERROR 1524 (HY000): Plugin ‘mysql_native_password’ is not loaded 错误时,表示 mysql_native_password 插件未加载或不可用。这通常发生在从 MySQL 5.7 升级到 MySQL 8.0 时,因为 MySQL 8.0 默认使用更安全的认证插件 caching_sha2_password

示例

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

错误信息:

ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded

解决方法

  1. 使用默认的认证插件

如果没有特别需要使用 mysql_native_password,建议使用 MySQL 8.0 默认的 caching_sha2_password。

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'YourPassword';
  1. 修改配置文件

如果确实需要使用 mysql_native_password,可以在 MySQL 的配置文件中添加以下设置,然后重启 MySQL 服务。 Linux: /etc/my.cnf 或 /etc/mysql/my.cnf Windows: my.ini

default_authentication_plugin=mysql_native_password

重启 MySQL 服务后,重新设置用户密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YourPassword';
  1. 手动加载插件

如果插件未加载,可以尝试手动加载。

INSTALL PLUGIN mysql_native_password SONAME 'auth_socket.so';

请注意,替换 ‘auth_socket.so’ 为实际的插件文件名,这可能因操作系统和 MySQL 版本而异。

相关文章:

  • JavaScript 中的类型转换机制?
  • 高级项目管理
  • iVX 引领软件开发进入 “可视化逻辑时代”
  • 深入学习解读:《数据安全技术 数据分类分级规则》【附全文阅读】
  • 语言特性的发展与应用:从基础到前沿的全面解析
  • [C++]C++20协程的原理
  • Java基础 4.29
  • 【18】爬虫神器 Pyppeteer 的使用
  • Mysql存储引擎、锁机制
  • 【深度学习的灵魂】图片布局生成模型LayoutPrompt(1)
  • 算法题(137):丢手绢
  • (003)Excel 在滚动的时候,保持标题栏可见
  • C# 继承详解
  • MCP Java SDK 介绍与使用指南
  • Lucene中不同搜索类型的使用方法、基本概念、应用场景、差异对比,并通过表格进行总结
  • Linux系统基础:基础指令简介(网络概念部分)
  • 价值投资笔记:企业护城河——虚假陷阱与隐性壁垒的深度解析
  • Arduion 第一天,变量的详细解析
  • 数据结构|并查集
  • 一些常用的深度学习可视化平台:TensorBoard、Weights Biases (wandb)、VisualDL
  • 擦亮“世界美食之都”金字招牌,淮安的努力不止于餐桌
  • 是否进行了及时有效处置?伤者情况如何?辽阳市相关负责人就饭店火灾事故答问
  • 为治理商家“卷款跑路”“退卡难”,预付式消费司法解释5月起实施
  • 广东省副省长刘红兵跨省调任湖南省委常委、宣传部长
  • 违规行为屡禁不止、责任边界模糊不清,法治日报:洞穴探险,谁为安全事故买单?
  • 湖南华容县通报“大垱湖水质受污染”,爆料者:现场已在灌清水