搜索并下载镜像,如下:
注意:此处搜索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 目录创建需要的配置文件。
比如如下:
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 29 30 31 32 33 34 |
[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服务器主从同步
1 |
$ 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的访问请求。
操作步骤如下: