群晖DSM7通过Docker安装MySQL最新版(8.x)

搜索并下载镜像,如下:

注意:此处搜索MySQL,会出现两个MySQL镜像,很容易让人不知道该如何选择。其实这两个镜像一个是社区维护,一个是Oracle维护的版本。两者对于普通用户来说,差别不大,选择任意一个都可以。这里,我们选择社区维护的版本。

配置必要的参数信息:

存储位置配置如下:

存储位置(/var/lib/mysql)是镜像中MySQL的默认数据存储目录,位置(/etc/mysql/conf.d)是镜像中MySQL的配置文件目录,这两个目录位置不要变更,如果需要修改配置,则在主机的对应目录上进行调整。

MySQL 服务启动时会以 /etc/mysql/my.cnf 为配置文件,之后会导入 /etc/mysql/conf.d 目录中所有以 .cnf 为后缀的文件。这些文件会拓展或覆盖 /etc/mysql/my.cnf 文件中的配置。

因此可以在挂载至 MySQL 容器中的 /etc/mysql/conf.d 目录创建需要的配置文件。

比如如下:

[mysqld]
# 绑定地址禁止外网访问,安全性
bind-address = 127.0.0.1 

#设置server-id,必须唯一
server-id = 5

# 根据业务需要配置数据库只读
read_only = on
#super_read_only = on
#tx_read_only = on

log_bin = /var/logs/mysql/mysql-bin.log

relay-log = /var/logs/mysql/mysql-relay-bin

#如果日志开启了,最好把日志格式设置为row格式,这样如果主从数据不一致,可以尝试mysql flashback功能
binlog-format = row 

# 不同步哪些数据库  
binlog-ignore-db = mysql
  
binlog-ignore-db = test  

binlog-ignore-db = information_schema

# 缓冲区不足,可能会在还原数据的时候报错
# “ERROR 2006 (HY000) at line 241: MySQL server has gone away”
# 观察日志报告 Got a packet bigger than 'max_allowed_packet' bytes
# 这个缓冲区的大小必须大于或等于主库上设置的大小
max_allowed_packet = 256M

# 对于WordPress的情况,我们可能需要兼容低于 MySQL 5.x的数据库
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

对于MySQL的日志目录,需要进行特殊授权,否则没办法启动成功。

权限授权方式如下:

配置MySQL的默认登陆密码:

MYSQL_ROOT_PASSWORD 为手工添加,其它是安装 MySQL 自带的。MYSQL_ROOT_PASSWORD 用于设置 root 的密码。

查看系统运行状态:

设置登录的SHELL

如果想替换掉群晖自带的MariaDB,实现主从同步,可以参考家里ADSL上网无固定外网IP的群晖NAS安全实现与公网MySQL服务器主从同步

$ mysql -u root -p -e "CHANGE MASTER TO MASTER_HOST='10.8.0.1',MASTER_USER='repl1',MASTER_PASSWORD='slavepass',MASTER_LOG_FILE='mysql-bin.001558',MASTER_LOG_POS=8071938,master_ssl=1,master_ssl_ca='/etc/mysql/conf.d/ssl/ca.pem',master_ssl_capath='/etc/mysql/conf.d/ssl',master_ssl_cert='/etc/mysql/conf.d/ssl/client-cert.pem',master_ssl_key='/etc/mysql/conf.d/ssl/client-key.pem';"

默认Docker创建出来的MySQL是外部网络都可以访问的,这样不安全,我们可以通过群晖自带的防火墙禁止特定的端口访问来阻止外部IP的访问请求。

操作步骤如下:

参考链接


发布者

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注