手把手教你在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)
数据库首席架构师:阮胜昌 MySQL 8.0 OCP、Oracle 11G OCP,PostgreSQL PCA,Oceanbase OBCA、PingCAP PCTA、软考中级数据库系统工程师、RHCE7.0、cisco CCNA认证
擅长主流数据库MySQL、Oracle、PostgreSQL运维与开发、数据恢复、安装配置、数据迁移、集群容灾、性能优化、故障应急处理、其它问题等
欢迎关注我的博客:http://www.linuxmysql.com 第一时间一起学习新知识!
免责声明:
1、本站资源由自动抓取工具收集整理于网络。
2、本站不承担由于内容的合法性及真实性所引起的一切争议和法律责任。
3、电子书、小说等仅供网友预览使用,书籍版权归作者或出版社所有。
4、如作者、出版社认为资源涉及侵权,请联系本站,本站将在收到通知书后尽快删除您认为侵权的作品。
5、如果您喜欢本资源,请您支持作者,购买正版内容。
6、资源失效,请下方留言,欢迎分享资源链接
文章评论