【docker快速上手学习笔记】04 小白也能看懂的docker安装mysql

写在前面,大家好!我是【跨考菌】,一枚跨界的程序猿,专注于后台技术的输出,目标成为全栈攻城狮!这博客是对我跨界过程的总结和思考。如果你也对Java后端技术感兴趣,抑或是正在纠结于跨界,都可以关注我的动态,让我们一起学习,一起进步~
我的博客地址为:【跨考菌】的博客


上篇【docker快速上手学习笔记】03 小白也能看懂的docker安装nginx 讲解了docker安装nginx的教程,本文介绍docker安装mysql的教程。

本文通过docker安装mysql最新版来熟悉docker常用命令。

在这里插入图片描述


1、安装docker

1)、移除旧版本的docker:

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

2)、安装docker

yum install docker

查看是否安装成功:

docker version

启动查看docker安装运行状态:

systemctl start docker.service # 开启docker
systemctl enable docker.service # 开机自启动
systemtcl status docker.service # 查看docker的运行状态

在这里插入图片描述

2、安装mysql镜像

1)查询mysql的镜像

docker search mysql

在这里插入图片描述
2) 安装mysql

docker pull mysql # 安装最新版的mysql

在这里插入图片描述
3)查看镜像:

docker images

在这里插入图片描述
4) 创建必要的文件夹

cd /opt # 我的软件都安装在/opt目录下。
mkdir mysql_docker
cd mysql_docker/
echo $PWD # 当前位置的绝对路径

3、启动容器

1)启动mysql容器:

docker run --name mysqlserver --privileged=true -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d -i -p 3306:3306 mysql:latest
# --privileged=true:在docker run中加入 --privileged=true 给容器加上特定权限
# --name mysqlserver :指定容器的名字为mysqlserver 
# -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
# -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
# -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

在这里插入图片描述

如果发现容器没有正常启动,则记得加上–privileged=true 给容器加上特定权限

2)查看mysql进程:

docker ps

在这里插入图片描述

3) 测试mysql登录:

docker exec -it mysqlserver /bin/bash # 也可以把容器名"mysqlserver"改为容器id
mysql -uroot -p

在这里插入图片描述

use mysql;
select host,user from user;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; # 修改密码
flush privileges; # 刷新权限。

4)测试远程连接
开放3307端口。

firewall-cmd --zone=public --add-port=3307/tcp --permanent # 开放3307端口
firewall-cmd --reload # 配置立即生效
firewall-cmd --zone=public --list-ports

远程连接。
在这里插入图片描述

4、命令总结

1)、日志查看:

docker logs -f --tail 10 a4dac74d48f7 # 容器id可以通过docker ps查看。

2)、查看进程:

docker ps -a # docker ps :查看运行中的进程;-a:查看所有进程,包括不运行的。

3)、关闭docker中的mysql容器

docker stop mysqlserver # mysqlserver可以替换为容器id

4)、重启docker中的mysql容器

docker restart 容器id

5)、重启docker

systemctl restart docker

6)、关闭docker

systemctl stop docker

5、编码问题。

先看个问题,如果你在命令行查询语句中中文显示是这样的,说明你的docker的mysql容器的编码不是utf8,需要修改,下面给出修改的步骤。

mysql> SELECT DISTINCT department FROM student_info;
+-----------------+
| department      |
+-----------------+
| ???        |
| ???      |
| ???        |
| ???        |
+-----------------+
4 rows in set (0.01 sec)

1)切换进入容器

docker exec -it mysqlserver /bin/bash # 也可以把容器名"mysqlserver"改为容器id
mysql -uroot -p # 输入密码

2)安装vim

因为可能你的容器没有vim编辑器,无法完成对my.cnf文件的修改。

apt-get update
apt-get install vim -y

3)修改my.cnf文件。

cd /etc/mysql
vim my.cnf

my.cnf的内容为:

[client]
default-character-set=utf8

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
character-set-server=utf8
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
init_connect='SET NAMES utf8'

[mysql]
no-auto-rehash
default-character-set=utf8

替换掉其中utf8字样的内容。

4)重启docker。

docker restart 1c7b4791a069 # 容器id,通过docker ps查看。

5)查看是否修改成功

docker exec -it mysqlserver /bin/bash # 也可以把容器名"mysqlserver"改为容器id
mysql -uroot -p # 输入密码
show variables like 'char%'; # 查看编码
mysql> show variables like 'char%';
+--------------------------+--------------------------------+
| Variable_name            | Value                          |
+--------------------------+--------------------------------+
| character_set_client     | utf8                           |
| character_set_connection | utf8                           |
| character_set_database   | utf8                           |
| character_set_filesystem | binary                         |
| character_set_results    | utf8                           |
| character_set_server     | utf8                           |
| character_set_system     | utf8                           |
| character_sets_dir       | /usr/share/mysql-8.0/charsets/ |
+--------------------------+--------------------------------+
8 rows in set (0.00 sec)

成功。

mysql> SELECT DISTINCT department FROM student_info;
+-----------------+
| department      |
+-----------------+
| 软件学院        |
| 计算机学院      |
| 材料学院        |
| 生物学院        |
+-----------------+
4 rows in set (0.01 sec)

在这里插入图片描述

如果你觉得对您有帮助,不要忘记帮博主一键三连😊哦

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值