Ubuntu 通过 Docker 安装 Mysql8

Ubuntu 安装 Docker

  1. 更新索引并安装依赖

首先,更新现有的软件包列表,并安装一些允许 apt 通过 HTTPS 使用存储库的依赖软件。

bash 复制代码
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
  1. 添加 Docker 的官方 GPG 密钥

GPG 密钥用于验证从存储库下载的软件包的完整性。

bash 复制代码
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  1. 添加 Docker 存储库

将 Docker 存储库添加到 APT 源中。

bash 复制代码
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
  1. 安装 Docker 引擎

再次更新软件包数据库,并安装 Docker。

bash 复制代码
sudo apt update
# 安装 docker 引擎、命令行工具和容器运行时
sudo apt install docker-ce docker-ce-cli containerd.io
  1. 验证安装是否成功

安装完成后,Docker 服务应该已经启动。你可以通过运行 hello-world 镜像来验证。

bash 复制代码
sudo docker run hello-world

如果看到 "Hello from Docker!" 的提示信息,说明 Docker 已成功安装并运行。

进阶配置(可选)

A. 免 sudo 运行 Docker

默认情况下,只有 root 用户或具有 sudo 权限的用户才能运行 Docker 命令。如果你不想每次都输入 sudo,可以将当前用户加入 docker 组:

bash 复制代码
# 将当前用户添加到 docker 用户组
sudo usermod -aG docker ${USER}

注意: 修改后需要注销并重新登录,或者运行 newgrp docker 才能生效。

B. 配置 Docker 开机自启

确保 Docker 随系统启动:

bash 复制代码
sudo systemctl enable docker
sudo systemctl start docker

C. 安装 Docker Compose

如果你需要管理多容器应用,通常还需要安装 Docker Compose:

bash 复制代码
# 下载 docker compose 二进制文件
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

D. 配置阿里云镜像仓库

shell 复制代码
sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

# 使用 Docker info 命令查看配置的加速仓库
docker info

通过 Docker 安装 Mysql8

创建挂载到宿主机中的目录:

shell 复制代码
mkdir -p /docker/mysql/log
mkdir -p /docker/mysql/data
mkdir -p /docker/mysql/conf

创建自定义的配置文件:

shell 复制代码
vim /docker/mysql/conf/custom.cnf

添加如下内容:

shell 复制代码
[mysqld]
init-connect="SET collation_connection=utf8mb4_0900_ai_ci"
init_connect="SET NAMES utf8mb4"
skip-character-set-client-handshake
bind-address=0.0.0.0

启动容器:

shell 复制代码
docker run \
-d \
--name mysql \
-v /docker/mysql/log:/var/log/mysql \
-v /docker/mysql/data:/var/lib/mysql \
-v /docker/mysql/conf:/etc/mysql/conf.d \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql8.0

让 root 用户可以远程登录:

shell 复制代码
docker exec -it mysql /bin/bash
mysql -uroot -p
use mysql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
flush privileges;

创建用户并授予全部数据库的权限:

shell 复制代码
CREATE USER 'test'@'%' IDENTIFIED BY '123456';
grant all on *.* to 'test'@'%' with grant option;
flush privileges;
相关推荐
lightqjx29 分钟前
【Linux系统】基础 IO
linux·c语言·重定向·缓冲区·文件io·文件的系统调用
我星期八休息34 分钟前
扩展— TCP 全连接队列与 tcpdump 抓包
linux·服务器·开发语言·前端·网络·tcp/ip·tcpdump
RisunJan1 小时前
Linux命令-skill(发送信号给进程)
linux·运维·服务器
潘正翔1 小时前
k8s基础_kubeadm搭建k8s集群
linux·运维·docker·云原生·容器·kubernetes
Echo flower1 小时前
Docker 容器中 Puppeteer 僵尸进程排查与修复
运维·docker·容器·puppeteer
孪生质数-2 小时前
AI 应用实践篇——让大模型真正开始工作
linux·运维·服务器·人工智能·深度学习·语言模型·llama
2301_777998342 小时前
Linux线程同步与互斥(三):信号量与环形队列实现生产者消费者模型
linux·c语言·c++
江湖有缘2 小时前
Docker实战 | 使用Docker部署Donetick任务与家务管理应用
运维·docker·容器
实心儿儿2 小时前
Linux —— 应用层协议HTTP
linux·网络·http
流星白龙2 小时前
【Docker】4.NameSpace空间隔离实战
java·运维·docker