一、操作系统环境:
[root@node10 ~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@node10 ~]# uname -a
Linux node10 4.4.219-1.el7.elrepo.x86_64 #1 SMP Sun Apr 12 16:13:06 EDT 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@node10 mysql]# docker -v
Docker version 24.0.5, build ced0996
二、安装docker
使用具有管理员权限的账号进行安装,输入安装命令:
yum install -y yum-utils device-mapper-persistent-data lvm2 epel-release
#紧接着配置一个稳定的仓库、仓库配置会保存到/etc/yum.repos.d/docker-ce.repo文件中
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
#安装的相关Docker软件包&安装Docker CE
yum install docker-ce -y
设置docker daemon文件
#创建/etc/docker目录
mkdir /etc/docker -p
#更新daemon.json文件
cat > /etc/docker/daemon.json <<EOF
{"exec-opts":["native.cgroupdriver=systemd"],"log-driver":"json-file","log-opts":{"max-size":"100m"}}
EOF
#注意:一定注意编码问题,出现错误---查看命令:journalctl -amu docker 即可发现错误
#创建,存储docker配置文件
mkdir -p /etc/systemd/system/docker.service.d
重启docker服务
systemctl daemon-reload && systemctl restart docker && systemctl enable docker
查看docker的版本,使用命令:
docker version
三、MySQL安装部署
查看可用的MySQL,使用命令:
[root@node10 docker]# docker search mysql
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
mysql MySQL is a widely used, open-source relation… 14338 [OK]
mariadb MariaDB Server is a high performing open sou… 5474 [OK]
percona Percona Server is a fork of the MySQL relati… 618 [OK]
phpmyadmin phpMyAdmin - A web interface for MySQL and M… 840 [OK]
拉取docker镜像,并进行安装,使用命令:
docker pull mysql:8.0
或通过以下命令拉到最新的镜像:
docker pull mysql:latest
查看已下载的镜像:
[root@node10 data]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mysql 8.0 7c5ae0d3388c 4 days ago 577MB
mysql latest 7c5ae0d3388c 4 days ago 577MB
在宿主机上创相关的目录:
mkdir -p /usr/local/mysql/log
mkdir -p /usr/local/mysql/data
mkdir -p /usr/local/mysql/conf
mkdir -p /usr/local/mysql/conf.d
创建mysql用户名与用户组
useradd -r -s /sbin/nologin -c 'mysql application run user' mysql
对目录进行授权
chown mysql.mysql /usr/local/mysql/* -R
创建my.cnf配置文件:
cat /usr/local/mysql/conf/my.cnf
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
# 设置东八区时区
default-time_zone = '+8:00'
# 设置密码验证规则,default_authentication_plugin参数已被废弃
# 改为authentication_policy
#default_authentication_plugin=mysql_native_password
authentication_policy=mysql_native_password
# 限制导入和导出的数据目录
# 为空,不限制导入到处的数据目录;
# 指定目录,必须从该目录导入到处,且MySQL不会自动创建该目录;
# 为NULL,禁止导入与导出功能
#secure_file_priv=/var/lib/mysql
secure_file_priv=
init_connect='SET collation_connection = utf8mb4_0900_ai_ci'
init_connect='SET NAMES utf8mb4'
character-set-server=utf8mb4
collation-server=utf8mb4_0900_ai_ci
skip-character-set-client-handshake
skip-name-resolve
安装MySQL,并为MySQL创建管理员账号和密码,使用命令:
docker run -p 3306:3306 --name mysql --restart=always --privileged=true -v /usr/local/mysql/log:/var/log/mysql -v /usr/local/mysql/data:/var/lib/mysql -v /usr/local/mysql/conf:/etc/mysql -v /usr/local/mysql/conf.d:/etc/mysql/conf.d -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
命令详解:
-p 3306:3306:指定宿主机端口与容器端口映射关系
--name mysql:创建的容器名称,此处命名为mysql8.0
--restart=always:总是跟随docker启动
--privileged=true:获取宿主机root权限
-v /usr/local/mysql/log:/var/log/mysql:映射日志目录,宿主机:容器
-v /usr/local/mysql/data:/var/lib/mysql:映射数据目录,宿主机:容器
-v /usr/local/mysql/conf:/etc/mysql:映射配置目录,宿主机:容器
-v /usr/local/mysql/conf.d:/etc/mysql/conf.d 映射配置目录,宿主机:容器
-v /etc/localtime:/etc/localtime:ro:让容器的时钟与宿主机时钟同步,避免时区的问题,ro是read only的意思,就是只读。
-e MYSQL_ROOT_PASSWORD=123456:指定mysql环境变量,root用户的密码为123456
-d mysql:latest:后台运行mysql容器,版本是latest。
如果容器启动失败,可以通过以下命令查看错误日志:
docker logs container_id
或者:
docker logs -f mysql
列出正在运行的容器,使用命令:
docker ps -a
备注:docker ps [OPTIONS]说明:
-a:显示所有的容器,包括未运行的。
-f:根据条件过滤显示的内容。
–format:指定返回值的模板文件。
-l:显示最近创建的容器。
-n:列出最近创建的n个容器。
–no-trunc:不截断输出。
-q:静默模式,只显示容器编号。
-s:显示总的文件大小。
docker中设置mysql数据库开机自启:
docker update mysql8.0 --restart=always 容器id
删除正在运行的容器:
docker stop 容器id
docker rm 容器id
重启mysql
docker restart mysql
三.登录容器
登录容器之前需要先启动容器:docker start 容器id
登录容器:docker exec -it 容器id /bin/bash
退出容器:Ctrl+a Ctrl+d
四.登录mysql
进入容器,从容器中登录MySQL:mysql -uroot -proot1234
五.在宿主机登录数据库:
mysql -uroot -p'123456' -h 172.16.1.10
mysql> \s
--------------
mysql Ver 8.0.18 for Linux on x86_64 (MySQL Community Server - GPL)
Connection id: 10
Current database:
Current user: root@172.16.1.10
SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.34 MySQL Community Server - GPL
Protocol version: 10
Connection: 172.16.1.10 via TCP/IP
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
TCP port: 3306
Uptime: 15 min 8 sec
Threads: 2 Questions: 11 Slow queries: 0 Opens: 120 Flush tables: 3 Open tables: 39 Queries per second avg: 0.012
--------------
mysql> select user,host from mysql.user;
+------------------+-----------+
| user | host |
+------------------+-----------+
| root | % |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
5 rows in set (0.01 sec)
2023-07-29
手把手教你在CentOS上使用docker安装MySQL8.0-亲测验证通过
评论
发表评论
姓 名: