Docker 系列2【docker安装mysql】【开启远程连接】

文章目录


前言

本文开始,默认已经安装docker,如果你还没有完成这个步骤,请查看这一篇文章【docker安装与使用】

开始步骤

1.增加mysql挂载目录

c 复制代码
mkdir -p /mydata/mysql8/conf
mkdir -p /mydata/mysql8/data

2.下载镜像

c 复制代码
docker run mysql:8.0.28 # run 相当于pull create start 三合一

2.启动容器

  • -d 表示后台运行
  • -v 挂载目录到本地,宿主机目录:容器目录,例如:-v /usr/local/nginx:/usr/local/nginx
  • --name 使用的是run命令,--name会作用到create命令表示创建一个name为mysql8的容器
c 复制代码
docker run -d -v /mydata/mysql8/data:/var/lib/mysql -v /mydata/mysql8/conf:/etc/mysql/conf.d --name mysql8 -e MYSQL_ROOT_PASSWORD=mysql123 -p 3308:3306 -d mysql:8.0.28

具体步骤

  • 1 增加配置文件

这个选项会导致不使用权限系统来启动服务器,它将让任何用户可以访问服务器并且不受限制的访问所有数据库。在不使用授权表启动服务器后可以通过shell来执行mysqladmin flush-privilegesmysqladmin reload命令或者在连接到服务器后执行flush privileges语句来让正在运行的服务器再次使用授权表。

c 复制代码
vi /mydata/mysql8/conf/my.cnf #进入my.cnf文件
# 加入以下内容
[mysqld]
skip-grant-tables

  • 2重启容器服务
c 复制代码
docker restart mysql8 # 重启mysql服务
  • 3进入容器内部
c 复制代码
docker exec -it mysql8 /bin/bash
  • 4登入mysql
c 复制代码
mysql -u root -p #输完这个命令后,输入之前·步骤2·设置的密码mysql123

出现下面的内容表示登入成功

  • 5 选择mysql数据库
c 复制代码
use mysql
  • 6设置允许远程访问
    在正常的情况下mysql的远程访问我们只需要配置东西即可.
    1 防火墙对应端口是否开启,一般是3306
    2 user用户表中是否存在root用户,并且其host列值为%
c 复制代码
select user,host from user; # 查看用户表中root用户的配置

如果root用户的host列为%,即表示此用户可以远程访问,否则可以使用sql进行更改

c 复制代码
update user set host='%' where user='root';

如果发现出现了两条root的用户记录,则需要删除一条

4.无法连接

如果无法远程连接,可以执行一下操作

  • 1注释my.cnf中的配置

    c 复制代码
    vi /mydata/mysql8/conf/my.cnf # 进入文件注释
  • 2 防火墙否放开对应端口

    c 复制代码
    firewall-cmd --zone=public --add-port=3308/tcp --permanent
    
    firewall-cmd --reload
    
    firewall-cmd --list-port

5.测试连接

通过客户端工具进行连接即可

总结

以上的流程走完之后你将得到一个,基础的mysql服务。如果想要一个成熟的mysql服务,你还需要实现以下功能。

  • 1.服务器应该进行过性能优化,包括合理的索引设计、查询优化、内存和I/O使用优化等。
  • 2.数据备份和恢复:服务器应该有定期的数据备份策略,并能在数据丢失或损坏时进行数据恢复
  • 3.高可用性:为了保证服务的连续性,服务器应该具备高可用性,例如通过主从复制、负载均衡、故障切换等方式来提高可用性。
相关推荐
一技安身5 小时前
【Docker】 镜像导出 & 导入,实验环境aarch64(arm64)Linux操作系统
linux·docker·容器
服务端相声演员9 小时前
in子查询的执行可能被优化为连接查询
mysql
鹤落晴春9 小时前
【K8s】从 ConfigMap 到 Argo CD:Kubernetes 配置管理链路
运维·云原生·容器·kubernetes
ezreal_pan9 小时前
Pod 重启多场景复盘:OOM、日志阻塞、并发 map 读写导致程序崩溃
docker·k8s
玉宇夕落10 小时前
Docker + Milvus,数据库永久存放记忆,让对话历史永不丢失
数据库·docker·llm
写后端的胖头鱼13 小时前
【高频面试题】深分页问题
数据库·mysql·数据库优化·深分页
名字还没想好☜13 小时前
Docker 镜像瘦身进阶:用 distroless/scratch 把 Go 服务打到 10MB,以及没 shell 怎么调试
运维·docker·容器·golang·kubernetes
JavaPub-rodert13 小时前
Docker 深入理解:从容器原理到生产环境最佳实践
运维·docker·容器
暖核15 小时前
Docker 入门|吃透容器生态与底层原理
运维·docker·容器
滕州市燕猫虎计算机科技工作室个体工商户15 小时前
Docker常用命令
运维·docker·容器