docker搭建mysql并开启远程访问

本文详细介绍了如何使用Docker搭建MySQL容器,包括拉取镜像、运行容器并设置数据挂载,以及开启远程连接、设置字符集和权限。特别提到了MySQL8.0与5.7的认证方式差异。最后,还讨论了服务器端口的设置和验证方法。
摘要由CSDN通过智能技术生成

一、搭建mysql
1、拉取 MySQL 镜像
这里我们拉取官方的最新版本的镜像:
$ docker pull mysql:latest

查看是否已安装了 mysql:
$ docker images在这里插入图片描述
二、运行 MySQL 容器
1、创建挂载文件:在这里插入图片描述2、运行容器
docker run -d --name mysql
-v /opt/datas/docker/mysqllog:/var/log/mysql
-v /opt/datas/docker/mysql:/var/lib/mysql
-v /opt/datas/docker/mysqlconf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=123456
-p 3306:3306 mysql

-d (detach) : 后台运行
–name : 为你的镜像创建一个别名,该别名用于更好操作
-p : 映射端口,一般会将默认端口进行更改,避免与本机的 mysql端口冲突,如果你宿主机有mysql,请更改端口,如 -p 33060:3306
-e : 环境变量,为 mysql 的 root 用户设置密码为123456
-v : 指定数据卷挂载(etc为配置文件,log为日志文件,lib为配置文件),意思就是将 mysql 容器中的 /var/lib/mysql (这个是数据库所有数据信息文件) 映射到宿主机 /Users/mew/Desktop/AllMyFile/Data/Docker/mysql 里面,这样就不会出现容器删除后数据也跟着删除

备注:mysql5.7和之前版本,默认字符集为latin1,直接插入中文字符的时候会出现乱码的情况。所以在安装5.7及之前的版本的mysql的时候要把字符编码修改为utf8字符集,utf8字符集指的是utf8mb3。从mysql8.0开始,数据库默认字符编码改为utf8mb4。这时候可以在运行时指定编码
docker run -d --name mysql
-v /opt/datas/docker/mysqllog:/var/log/mysql
-v /opt/datas/docker/mysql:/var/lib/mysql
-v /opt/datas/docker/mysqlconf:/etc/mysql/conf.d
-e MYSQL_ROOT_PASSWORD=123456
-p 3306:3306 mysql --character-set-server=utf8 --collation-server=utf8_general_ci
三、

二. 开启远程连接
默认mysql是不可以远程连接的
1、进入到 mysql 容器中
$ docker exec -it mysql /bin/bash

2、通过上面的docker进入容器之后
登录mysql:mysql -u root -p
密码为123456,这个密码是docker安装mysql配置的

3、开启远程连接,由于我8.0运行后看到root授权的host为%,即为远程访问已经开启,所以这一步我省略了直接跳到修改密码认证,否则不能省略。
ALTER USER ‘root’@‘%’ IDENTIFIED WITH
mysql_native_password BY ‘123456’; ,(这个密码为123456,是之后远程连接mysql的密码)

刷新生效:FLUSH PRIVILEGES;在这里插入图片描述

  1. 修改密码认证配置。

由于mysql8.0和mysql5.7两者的认证方式不一样前者是caching_sha2_password,后者是my_native_password因此我们对它进行修改。
直接连接会报错:
在这里插入图片描述

ALTER USER ‘root’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘root’;

修改后:
在这里插入图片描述

3、新增用户(根据自己需要,使用root用户也可以):
CREATE USER ‘zyh’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘zyh123!’;在这里插入图片描述
4、给新建的用户授权
GRANT ALL PRIVILEGES ON . TO zyh@‘%’; #授予所有权限
ALL PRIVILEGES 所有权限
. 所有数据库
TO 后接用户

5、刷新生效
FLUSH PRIVILEGES;

三、服务器设置
由于我的是百度云服务器默认打开了3306,所以不用在服务器设置中打开,但是阿里云服务器需要设置打开

验证端口是否打开
打开cmd进入命令行,输入
telnet 180.76.165.145 3306
如下所示,端口已开放
在这里插入图片描述

四:连接

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值