生信喵 发表于 2024-9-23 06:47:13

PVE虚拟机内portainer安装mariadb

# 环境

基于portainer版本:1.24.2.和docker版本:19.03.5

# 背景

近期会使用相册管理软件PhotoPrism,产生的需求。

PhotoPrism 默认使用内建的 MariaDB 数据库来存储数据,考虑到它的应用是那么的广泛,我们应该避免未来多个 docker 应用各自运行独立的 MariaDB 数据库。因此,请先 安装 Docker 版本的 MariaDB 数据库和可视化数据库管理工具 phpMyAdmin ,这对节省系统资源和维护管理相当有用。

# 准备几个存储卷

方便MariaDB映射

物理来源pve硬盘,nfs映射

pve上建好目录结构
!(https://roim-picx-bpc.pages.dev/rest/fKST1iK.png)

创建好存储卷
!(https://roim-picx-bpc.pages.dev/rest/36cU1iK.png)

# 拉取MariaDB镜像

1. 进入容器,添加容器
   !(https://roim-picx-bpc.pages.dev/rest/sndnXHK.png)
2. 编辑参数
   名称:mariadb

镜像源:mariadb:latest

!(https://roim-picx-bpc.pages.dev/rest/VVXU1iK.png)

# 添加存储卷

分别关联前面准备的两个目录

```
"/var/lib/mysql"      # 数据库数据目录
"/etc/mysql/conf.d"      # 数据库配置目录
```

图示如下:
!(https://roim-picx-bpc.pages.dev/rest/sv5u1iK.png)

# 添加环境变量

进入环境变量,并添加2个参数.

TZ: Asia/Shanghai                           # 容器内部时区

MYSQL_ROOT_PASSWORD: insecure               # 数据库 ROOT 用户密码,自行指定
!(https://roim-picx-bpc.pages.dev/rest/HI3u1iK.png)
再修改重启策略为除非停止
!(https://roim-picx-bpc.pages.dev/rest/MwPQXHK.png)

网传的参数多余,我没有找到地方设置的如下:

```
   security_opt:
   - seccomp:unconfined
   - apparmor:unconfined
```

部署

# 拉取 phpMyAdmin 镜像

1. 进入容器,添加容器
   !(https://roim-picx-bpc.pages.dev/rest/sndnXHK.png)
2. 编辑参数
   名称:phpMyAdmin

镜像源:phpmyadmin/phpmyadmin:5.1

端口:9080:80
!(https://roim-picx-bpc.pages.dev/rest/BlHw1iK.png)

# 添加环境变量

进入环境变量,并添加2个参数.

TZ: Asia/Shanghai                           # 容器内部时区
UPLOAD_LIMIT: 128M                        # 默认上传文件大小限制调整到 128 M
PMA_HOST: mariadb:3306                      # 指定数据库的位置和端口,默认值
MYSQL_ROOT_PASSWORD: insecure               # 数据库 ROOT 用户密码,自行指定
MARIADB_AUTO_UPGRADE: 1
!(https://roim-picx-bpc.pages.dev/rest/qGqw1iK.png)
再修改重启策略为除非停止
!(https://roim-picx-bpc.pages.dev/rest/MwPQXHK.png)

网传的参数yaml配置的,我没有找到地方设置的如下:

主要是设置启动顺序,依赖于mariadb容器后 再启动。

```
   depends_on:
   - mariadb
```

部署

打开ip+9080就可以访问数据库了。
!(https://roim-picx-bpc.pages.dev/rest/NyIY1iK.png)

# 遇到问题

登录提示错误:
!(https://roim-picx-bpc.pages.dev/rest/61PACiK.png)

1. 需要配置MariaDB以允许远程连接:(也可以作为检查用,直接看第二步)

首先,你需要进入容器内操作MySQL命令行进行权限设置。可以通过以下命令进入容器的bash shell:

```
docker exec -it mariadb bash
```

然后,在容器内作为root用户登录MySQL,并赋予root用户或者其他用户远程访问权限:

```
mysql -u root -p
```

报错

```
bash: mysql: command not found
```

需要安装客户端

```
apt-get update
apt-get install mysql-client -y
```

exit后重新进入,即可使用mysql命令。

```
mysql -u root -p
```

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

检查登录用户名密码 ip限制

如果没有root的%,使用下面两行代码添加

```
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mariadbyyds@';
FLUSH PRIVILEGES;
```

这里 GRANT 语句授予了root用户从任何IP地址(%)访问所有数据库的所有权限。

2. 重新登录还是不行
   检查后,原来是两个容器网络不在一起。前面的感觉设置所有ip登录就感觉没啥用,可能公网访问再用吧。

通过 Portainer 管理面板创建一个 PhotoPrism 和 MariaDB 专用的网络,此举可以提升安全性。
点击 Portainer 左侧 Networks,点击右侧 Add network,在 name 处输入 photoprism-net,然后直接点击页面底部的 Create the network 完成创建。

将mariadb和 phpMyAdmin容器的网络分别加入photoprism-net。

重新登陆记录。

# 后记

```
http://localhost:9080
```

# 账户名 root 密码 MYSQL_ROOT_PASSWORD 设置的值

如果您不是在本机安装,请不要忘记将 localhost 替换为安装设备的实际 IP 地址

如果您修改了默认的 HTTP 访问端口,请不要忘记将 9080 替换为您自定义的端口

后续开始配置photoprim软件。
页: [1]
查看完整版本: PVE虚拟机内portainer安装mariadb