小白安装MySQL(docker)

346 阅读2分钟

一. 版本

  CentOS:8

  Docker:20.10.11

  MySQL:5.7

二. 下载并安装

  1. 拉取MySQL镜像:
docker pull mysql:5.7 
  1. 创建MySQL在宿主机对应的目录映射:
mkdir -p /usr/local/docker/mysql/{logs,data}
  1. 安装MySQL:

    • 切换到宿主机的mysql目录
    cd /usr/local/docker/mysql
    
    • 创建mysql容器
    docker run -p 3306:3306 --name mysql \
    -v /usr/local/docker/mysql/logs:/var/log/mysql \
    -v /usr/local/docker/mysql/data:/var/lib/mysql \
    --restart=always --privileged=true \
    -e MYSQL_ROOT_PASSWORD=root \
    -d mysql:5.7
    

    命令解释

    • docker run :是docker创建容器命令
    • -p 宿主机端口:容器端口 :端口映射
    • --name 容器名 :自定义容器名
    • -v 宿主机目录:容器目录 :目录映射,在这里目录映射了mysql容器中的日志、数据库文件
    • --restart=always :docker启动时自启动该容器
    • --privileged=true :获取容器真实root权限
    • -e MYSQL_ROOT_PASSWORD :设置mysql root账户初始密码
    • -d 镜像:版本 :选择要创建容器的镜像,并在后台运行
  2. 注意:

(1) 查看生成的mysql容器的时候,端口映射会出现一个33060的端口,这是MySQL的MySQL Shell操作所需要的X协议端口,属于必备端口。

详见:dev.mysql.com/doc/mysql-p…

(2) 不要映射 /etc/mysql 配置文件目录,会把镜像默认的配置文件夹替换为空文件夹。

三. 配置MySQL容器

  1. 进入mysql容器
docker exec -it mysql /bin/bash

2. 编辑配置文件以前需要更新关联并下载文本编辑器:

# 设置容器时间为当前时间,有的容器可能不准导致容器更新关联失败
# 更新apt-get,因为默认服务器不在国内,所以速度慢的惊人
apt-get update
# 安装文本编辑器vim
apt-get install vim

3. 编辑

# 安装好vim后,跳转到mysql容器自动生成的配置文件目录下
cd /etc/mysql

# 打开配置文件my.cnf
vim my.cnf

# 在文件末尾添加以下字段,此时我默认编码格式为utf8,如果用GBK自己改即可
[mysql]
default-character-set=utf8mb4
[mysqld]
character_set_server=utf8mb4
init_connect="SET NAMES utf8"
lower_case_table_names = 1

保存配置文件,并使用exit命令退出mysql容器。

  1. 重启mysql容器
docker restart mysql

5. 查看配置文件是否生效

// 重新进入mysql容器中
docker exec -it mysql /bin/bash

// 登陆mysql客户端
mysql -uroot -p123456

// 依次执行命令
show variables like 'character_set%';
show variables like 'collation%';

image.png

// 授权允许远程连接数据库
use mysql;

grant all privileges on *.* to '用户名'@'%' identified by '登录密码' with grant option;
flush privileges;