第N章:基于liunx-docker安装部署mysql8.0

说明

以下都是在本地虚拟机中操作。关于防火墙相关配置,我这里并不严谨;不要学我。

系统、工具等版本

系统版本:CentOS7
docker版本:26.1.4
镜像仓库:阿里云个人镜像-https://*****.mirror.aliyuncs.com/ (不知道的,可以去阿里云官网或客服查一下,免费的)

实操开始

准备镜像

# 拉取镜像
docker pull mysql:8.0
# 查询镜像
docker images

在这里插入图片描述

在宿主机中创建目录,并编写自定义配置文件

mkdir -p /usr/local/mydata/mysql/conf
cd /usr/local/mydata/mysql/conf

# 3.编写配置文件:文件名任意,但需以.cnf结尾
vim custom.cnf
# 文件内容如下:【作用-在linux系统中查看数据库内容出现中文乱码】
[mysqld]
init-connect="SET collation_connection=utf8mb4_0900_ai_ci"
init_connect="SET NAMES utf8mb4"
skip-character-set-client-handshake
# 最后:wq保存退出即可;esc切换vim模式;输入i是写入模式

编写自定义配置文件的原因:

在创建mysql8的docker容器时:进入容器你会发现,在/etc/目录下有my.cnf的文件,在这个文件中最后一行是!includedir /etc/mysql/conf.d/ ,意思是,在 /etc/mysql/conf.d/ 目录下新建自定义的配置文件[文件名].cnf也会被读取到,而且还是优先读取的(Docker Hub中的MySQL教程文档有说到)。【我们在后边创建容器的时候,会进行数据卷挂载,挂载到/etc/mysql/conf.d/目录】

而mysql8的默认编码会出现中文乱码,所有我们需要设置一下外部的配置文件,如果有什么优化mysql的也可以再此设置

根据镜像创建容器并运行以及挂载内容

docker run -p 3306:3306 -v /usr/local/mydata/mysql/conf/conf.d:/etc/mysql/conf.d -v /usr/local/mydata/mysql/data:/var/lib/mysql -v /usr/local/mydata/mysql/logs:/logs -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai --name mysql8.0 -d mysql:8.0

修改数据库部分配置;达到理想效果

# 查询镜像id,
docker ps
# 进入容器内
docker exec -it 5bbcbc5823a2 /bin/bash

# 进入数据库;执行命令后输入密码回车即可,密码是看不到的。启动容器是设置了密码:123456
mysql -uroot -p
123456 # 输入后回车即可

查看mysql数据库下的user表,结果如下

select host,user,plugin,authentication_string from mysql.user;

在这里插入图片描述
修改plugin为mysql_native_password,结果如下

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

# 其中有两个root,将host=localhost的删除
DELETE FROM mysql.user WHERE user = 'root' AND host = 'localhost';

# 刷新
FLUSH PRIVILEGES;

再次查看mysql数据库下的user表,结果如下

select host,user,plugin,authentication_string from mysql.user;

在这里插入图片描述备注:host为 % 表示不限制ip localhost表示本机使用 ;plugin非mysql_native_password 则需要修改密码

如上图就是没问题了,然后退出,设置防火墙

# 退出数据库
exit;
# 退出容器 或使用:exit
Ctrl + p + q

# 查询开启的所有端口
firewall-cmd --list-port
# 设置3306端口开启
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#重启
firewall-cmd --reload
# 验证3306端口是否开启成功 (单个端口查询)
firewall-cmd --zone=public --query-port=3306/tcp

然后就可以使用工具连接了:
在这里插入图片描述

我这里期间有一个报错:(如果使用腾讯云或阿里云购买的服务器,找到官网控制中心再配置一下端口规则就好了。)
在这里插入图片描述

我这里是将防火墙关闭后解决的;(有大佬如果知道问题原因,麻烦留言下。万分谢谢)

# 关闭防火墙(解决问题)
systemctl stop firewalld

#### 防火墙操作(以下不是步骤操作!!!!!!!这里是作为备忘录使用的,不要无脑执行。)
#检查防火墙是否开启
systemctl status firewalld
#开机自启防火墙
systemctl enable firewalld
#开机禁止自启防火墙
systemctl disable firewalld
#启动
systemctl start firewalld
#关闭
systemctl stop firewalld
#重启
firewall-cmd --reload
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是在Linux中基于Docker安装ThingsBoard的步骤: 1. 确保您已经安装DockerDocker Compose。如果没有安装,请按照DockerDocker Compose的官方文档进行安装。 2. 创建一个名为"tb-data"的目录,用于存储ThingsBoard的数据。 3. 在"tb-data"目录中创建一个名为"docker-compose.yml"的文件,并将以下内容复制到文件中: ``` version: '3' services: tb: image: thingsboard/tb-postgres ports: - "8080:8080" - "1883:1883" - "5683:5683/udp" restart: always environment: - DATABASE_ENTITIES_TYPE=sql - SPRING_DATASOURCE_URL=jdbc:postgresql://postgres/thingsboard - SPRING_DATASOURCE_USERNAME=postgres - SPRING_DATASOURCE_PASSWORD=postgres - SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.PostgreSQL94Dialect - SPRING_HIBERNATE_DDL_AUTO=update - SPRING_TB_QUEUE_TYPE=pubsub depends_on: - postgres volumes: - ./tb-data:/data postgres: image: postgres restart: always environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=thingsboard volumes: - ./tb-data/postgres:/var/lib/postgresql/data ``` 4. 在终端中进入"tb-data"目录,并使用以下命令启动ThingsBoard: ``` sudo docker-compose up -d ``` 5. 等待一段时间,直到所有容器都启动完成。您可以使用以下命令查看容器的状态: ``` sudo docker ps ``` 6. 访问http://localhost:8080,您将看到ThingsBoard的登录页面。首次登录时,使用以下默认凭据: ``` Username: sysadmin@thingsboard.org Password: sysadmin ``` 7. 您可以根据需要更改默认凭据和其他设置。您现在已经成功安装了ThingsBoard! 希望这些步骤对您有所帮助。如果您有任何问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值