Docker部署mysql远程连接 解决2003的问题

连接MySQL

这里我使用navicat远程连接,连接MySQL前需要防火墙开放端口或者关闭防火墙。

开放端口

firewall-cmd --add-port=3306/tcp --permanent
// --permanent 永久生效,没有此参数重启后失效
firewall-cmd --reload
// 重新载入

关闭防火墙

systemctl stop firewalld
systemctl enable iptables
// 设置开机启动
firewall-cmd --reload
// 重新载入

firewalld的基本使用

启动: systemctl start firewalld

关闭: systemctl stop firewalld

查看状态: systemctl status firewalld

开机禁用 : systemctl disable firewalld

开机启用 : systemctl enable firewalld

systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于一体。

启动一个服务:systemctl start firewalld.service

关闭一个服务:systemctl stop firewalld.service

重启一个服务:systemctl restart firewalld.service

显示一个服务的状态:systemctl status firewalld.service

在开机时启用一个服务:systemctl enable firewalld.service

在开机时禁用一个服务:systemctl disable firewalld.service

查看服务是否开机启动:systemctl is-enabled firewalld.service

查看已启动的服务列表:systemctl list-unit-files|grep enabled

查看启动失败的服务列表:systemctl --failed

配置firewalld-cmd

查看版本: firewall-cmd --version

查看帮助: firewall-cmd --help

显示状态: firewall-cmd --state

查看所有打开的端口: firewall-cmd --zone=public --list-ports

更新防火墙规则: firewall-cmd --reload

查看区域信息: firewall-cmd --get-active-zones

查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0

拒绝所有包:firewall-cmd --panic-on

取消拒绝状态: firewall-cmd --panic-off

查看是否拒绝: firewall-cmd --query-panic

补充:Docker部署mysql远程连接 解决1251

原因:

mysql 8.0 默认使用 caching_sha2_password 身份验证机制,客户端不支持新的加密方式。

解决方案:

修改用户(root)的加密方式

步骤:

1. 进入mysql容器内部

[root@localhost ~]# docker exec -it javakfmysql bash ## javakfmysql是容器的别名,这里也可以用容器的id代替

2. 登录mysql

root@e285125c99d6:/# mysql -u root -p

3. 设置用户配置项

查看用户信息

mysql> select host,user,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host  | user    | plugin    | authentication_string             |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| %   | root    | caching_sha2_password | $A$005$HF7;krfwhkKHp5fPenQm4J2dm/RJtbbyjtCUVdDCcboXQw3ALxsif/sS1 |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys  | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root    | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9        |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+

备注:host为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password

修改加密方式

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; ### 123456 mysql的登录密码
flush privileges;

然后再查看用户信息

mysql> select host,user,plugin,authentication_string from mysql.user;
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| host  | user    | plugin    | authentication_string             |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
| %   | root    | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9        |
| localhost | mysql.infoschema | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.session | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | mysql.sys  | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| localhost | root    | mysql_native_password | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9        |
+-----------+------------------+-----------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 详解使用Docker部署MySQL(数据持久化)

    本文简述如何使用Docker部署mysql,同时持久化数据.我们会用到tutum-docker-mysql 这个项目来搭建一个mysql,省去重头写Dockerfile的时间. 首先我们将tutum-docker-mysql跑起来. docker run -d -p 3306:3306 --name mysql tutum/mysql 如果你本地没有tutum/mysql的image,docker会先下载它的image,这一步可能会用些时间.待执行完毕我们检查一下应该会有如下样子 tutum-d

  • 连接docker里面的mysql失败解决方法

    场景:在虚拟机的docker容器中安装latest版本的mysql之后,在宿主机中使用navicat连接虚拟机中的mysql出现下图报错: 2059 : Authentication plugin 'caching_sha2_password' cannot be loaded: 解决办法: 1.首先docker ps命令查看正在运行的容器,确保我们想要连接的mysql已经启动,如果没启动使用docker start命令启动(下图查看结果表示已经启动了一个mysql) 2.接着运行docker

  • Docker安装MySQL8.0的实现方法

    环境:MacOS_Cetalina_10.15.1.Mysql8.0.18.Docker_2.0.0.3 1.docker仓库搜索mysql docker search mysql 2.docker仓库拉取mysql8.0 docker pull mysql:8.0 备注: docker pull mysql //默认拉取最新版本 3.查看本地仓库镜像是否下载成功 docker images mysql:8.0 4.安装运行mysql8.0容器 docker run -p 3307:3306 -

  • Docker部署mysql远程连接 解决2003的问题

    连接MySQL 这里我使用navicat远程连接,连接MySQL前需要防火墙开放端口或者关闭防火墙. 开放端口 firewall-cmd --add-port=3306/tcp --permanent // --permanent 永久生效,没有此参数重启后失效 firewall-cmd --reload // 重新载入 关闭防火墙 systemctl stop firewalld systemctl enable iptables // 设置开机启动 firewall-cmd --reload

  • docker部署mysql后无法连接的解决方式

    1.创建实例命令 docker run -id --name=c_mysql -p 3306:3306 -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6.37 2.查看启动的实例 docker ps 3.这里映射的是宿主机的3306端口,我已经把端口开放了 4.在宿主机进行连接 #这个报错像是mysql不存在,查看mysql是否启动 #mysql已启动,端口也没有被占用 5.已经在容器里面测试

  • docker 部署mysql连接问题及遇到的坑

    发现windows上有一个docker descktop(虽然不怎么好用), 安装之后准备直接用docker搭本地测试环境的基础设施(比如MySQL,Redis,MongoDB,ES啥的), 虽然比去到处找安装包安装来的好, 不过这样就体会不到自己装软件的乐趣了(滑稽.jpg) 首先是安装MySQL, 遇到了几个问题, 记录下 mysql镜像用的是最新版的, docker search mysql可以看大很多版本的, 我用的是第一个使用量最多那个(稳妥) 1.启动时未指定相关环境变量 docke

  • docker部署MySQL时无法启动问题的解决方法

    目录 一.安装环境 ubuntu18 + docker 二.遇到无法启动的问题时,查看日志发现的错误 总结 一.安装环境 ubuntu18 + docker docker run -itd --name mysql-server -v /home/docker/share/mysql-server/log/:/var/log:rw -v /home/docker/share/mysql-server/data/:/var/lib/mysql:rw -v /home/docker/share/my

  • Docker部署MySQL并实现客户端连接

    准备工作 在docker内部署任何应用,都需要先下载对应的镜像:下载镜像之前,需要先搜索镜像来确认该镜像是否存在: docker search mysql 从列表可以看到,docker已经有了mysql的镜像,名称是“mysql”,接下来下载镜像: docker pull mysql 下载完成后,查看一下本地镜像: 如果在列表中看到mysql,镜像下载就已经成功了. 容器设置 在docker中,真正运行的是容器,镜像在我理解中是一种环境.我们在指定的镜像中运行某个容器,然后编辑和配置这个容器,从

  • docker 部署mysql详细过程(docker部署常见应用)

    之前给大家介绍过:docker(部署常见应用):docker部署nginx docker部署mysql:5.7.26 # 下载镜像 docker pull mysql:5.7.26 # 查看镜像 docker images|grep mysql # 启动容器镜像,建议在/usr/local/workspace/mysql 下执行以下docker run 命令   docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql -v

  • Docker部署Mysql集群的实现

    单节点数据库的弊病 大型互联网程序用户群体庞大,所以架构必须要特殊设计 单节点的数据库无法满足性能上的要求 单节点的数据库没有冗余设计,无法满足高可用 单节点MySQL的性能瓶领颈 2016年春节微信红包巨大业务量,数据库承受巨大负载 常见MySQL集群方案 mysql 集群方案介绍,建议使用pxc,因为弱一致性会有问题,比如说a节点数据库显示我购买成功,b 节点数据库显示没有成功,这就麻烦了,pxc 方案是在全部节点都写入成功之后才会告诉你成功,是可读可写双向同步的,但是replication

  • Docker 部署Mysql 服务和Redis 服务的方法

    Docker 部署Mysql 服务的方法 1. 拉取Mysql 5.6最新版本镜像 sudo docker pull mysql:5.6 2. 查看Mysql 镜像 sudo docker images 3. 在home目录下创建需要映射的目录: mkdir -p /home/computer/project/mysql/{conf,log,data} 4. 运行容器 duso docker run -p 53603:3306 --name iot-mysql \ -v /home/comput

  • 使用Docker部署MySQL的实现步骤

    目录 1.拉取mysql 2.启动容器镜像 3.登录容器 4.登录mysql 在 [Docker] 下部署,使用命令行进行拉取. 1.拉取mysql 最新版本mysql: docker pull mysql:latest 拉取5.7版本mysql: docker pull mysql:5.7 2.启动容器镜像 docker run -p 13306:3306 --name my-mysql -v $PWD/conf:/etc/mysql -v $PWD/data:/var/lib/mysql -

  • Docker部署mysql一主一从的操作方法

    下载镜像 选择MySQL镜像 docker search mysql 下载MySQL5.7镜像 docker pull mysql:5.7 查看mysql镜像 docker images 搭建MySQL主从 master docker run --name mysql-master -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 slave docker run --name mysql-slave -p 3308:3306 -e

随机推荐