手把手教你在CentOS上使用docker安装MySQL8.0-亲测验证通过

一、操作系统环境:
[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)

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS