踩坑之路(五) MySQL安装

由于我需要把MySQL的数据通过Canal``实时摄取Kafka,所以先在服务器上安装个MySQL吧。

这里我选择用docker的方式安装。

1 安装Docker

创建初始化脚本

1
2
mkdir "/lankr/script/docker"
vim /lankr/script/docker/init_docker.sh

输入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash

# 如果以前安装过Docker,那么为了保证环境的一致性,还是先卸载了再安装比较好
echo "开始卸载旧docker"
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine

echo "开始安装docker"
yum -y install docker

echo "设置开机启动"
systemctl enable docker.service

echo "设置阿里云镜像加速"
echo '{
"registry-mirrors": ["https://moln2pbd.mirror.aliyuncs.com"]
}' > /etc/docker/daemon.json

echo "重启daemon服务"
systemctl daemon-reload

echo "重启docker"
systemctl restart docker

执行初始化脚本

1
2
chmod +x /lankr/script/docker/init_docker.sh
/lankr/script/docker/init_docker.sh

2 安装MySQL

2.1 创建初始化脚本

1
vim /lankr/script/mysql/init_mysqlCanal.sh

输入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash

echo "拉取mysql镜像"
docker pull mysql:8.0.17

echo "创建mysql容器并启动"
docker run -p 3306:3306 --name mysqlCanal \
-v /lankr/application/mysqlCanal/log:/var/log/mysql:rw \
-v /lankr/application/mysqlCanal/data:/var/lib/mysql:rw \
-v /lankr/application/mysqlCanal/conf:/etc/mysql:rw \
-v /lankr/application/mysqlCanal/mysql-files:/var/lib/mysql-files/:rw \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.0.17

echo "创建临时mysql容器,用于复制配置文件"
docker run -p 3307:3306 --name mysqlCanalTemporary -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.17

echo "拷贝临时容器的配置文件到宿主机"
docker cp mysqlCanalTemporary:/var/log/mysql/. /lankr/application/mysqlCanal/log/
docker cp mysqlCanalTemporary:/var/lib/mysql/. /lankr/application/mysqlCanal/data/
docker cp mysqlCanalTemporary:/etc/mysql/. /lankr/application/mysqlCanal/conf/
docker cp mysqlCanalTemporary:/var/lib/mysql-files/. /lankr/application/mysqlCanal/mysql-files/

echo "删除临时容器"
docker rm -f mysqlCanalTemporary

echo "设置容器开机启动"
docker update --restart=always mysqlCanal

2.2 执行初始化脚本

1
2
chmod +x /lankr/script/mysql/init_mysqlCanal.sh
/lankr/script/mysql/init_mysqlCanal.sh

2.3 配置密码过期及加密方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 进入容器
docker exec -it mysqlCanal /bin/bash

# 登录mysql
mysql -uroot -p

# 修改密码过期时间以及加密方式并刷新权限
ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;

# 退出mysql登录
exit;

# 退出mysql容器
exit;

3 踩坑

今天启动容器的时候,死活就起不来,容器起不来,没法查看容器日志,浪费了好长时间,最后发现是服务器的SELINUX没有关闭。虽然前面服务器设置了SELINUX=disabled,但是没有重启服务器,所以没有生效。那么就执行下下面命令

1
setenforce 0

这样就可以让SELINUX=disabled临时生效,不用重启服务器。

联系博主,加入【羊山丨交流社区】

联系博主


本博客所有文章除特别声明外,均为原创。版权归博主小马所有。任何团体、机构、媒体、网站、公众号及个人不得转载。如需转载,请联系博主(关于页面)。如其他团体、机构、媒体、网站、博客或个人未经博主允许擅自转载使用,请自负版权等法律责任!