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;
相关推荐
Zenova EdgeOS13 分钟前
Linux iotop:工业边缘 I/O 高级分析实战
linux·运维·服务器
新兴AI民工28 分钟前
【Linux内核三十九】进程管理模块:CFS负载均衡(四):find_busiest_group决策矩阵与calculate_imbalance
linux
LongRunning43 分钟前
【linux】RK3568(五)云服务器-视频推流
linux
赵民勇1 小时前
resolvectl命令详解
linux·运维
新时代牛马1 小时前
Linux 日志管理:journald、rsyslog 与 logrotate
linux·运维·服务器
资深电气设计1 小时前
技术解析:ABB变频器ACH580/ACS180在CDU循环泵系统的应用技术框架
linux·运维·服务器
自律最差的编程狗1 小时前
Ubuntu下Docker部署Ollama 轻量模型
linux·ubuntu·docker
新时代牛马1 小时前
Linux 网络配置:iproute2、DNS 与连通性排障
linux·服务器·网络
新时代牛马1 小时前
Linux systemd 服务管理:从unit 文件到systemctl 启停与排障
linux·服务器·网络
wdfk_prog2 小时前
大型 Docker 镜像导出导入工程化:可靠性、磁盘与压缩
运维·docker·容器