From 670dbc0dfa990be0fd5252a87d420dfa536b2f15 Mon Sep 17 00:00:00 2001 From: okxlin Date: Tue, 13 Jun 2023 21:59:42 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E6=B7=BB=E5=8A=A0mysql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/mysql/5.5.62/conf/my.cnf | 5 ++++ apps/mysql/5.5.62/data.yml | 17 +++++++++++ apps/mysql/5.5.62/docker-compose.yml | 28 ++++++++++++++++++ apps/mysql/5.6.51/conf/my.cnf | 33 +++++++++++++++++++++ apps/mysql/5.6.51/data.yml | 17 +++++++++++ apps/mysql/5.6.51/docker-compose.yml | 29 ++++++++++++++++++ apps/mysql/5.7.42/conf/my.cnf | 42 +++++++++++++++++++++++++++ apps/mysql/5.7.42/data.yml | 17 +++++++++++ apps/mysql/5.7.42/docker-compose.yml | 29 ++++++++++++++++++ apps/mysql/8.0.33/conf/my.cnf | 19 ++++++++++++ apps/mysql/8.0.33/data.yml | 17 +++++++++++ apps/mysql/8.0.33/docker-compose.yml | 27 +++++++++++++++++ apps/mysql/README.md | 20 +++++++++++++ apps/mysql/data.yml | 20 +++++++++++++ apps/mysql/logo.png | Bin 0 -> 12046 bytes 15 files changed, 320 insertions(+) create mode 100644 apps/mysql/5.5.62/conf/my.cnf create mode 100644 apps/mysql/5.5.62/data.yml create mode 100644 apps/mysql/5.5.62/docker-compose.yml create mode 100644 apps/mysql/5.6.51/conf/my.cnf create mode 100644 apps/mysql/5.6.51/data.yml create mode 100644 apps/mysql/5.6.51/docker-compose.yml create mode 100644 apps/mysql/5.7.42/conf/my.cnf create mode 100644 apps/mysql/5.7.42/data.yml create mode 100644 apps/mysql/5.7.42/docker-compose.yml create mode 100644 apps/mysql/8.0.33/conf/my.cnf create mode 100644 apps/mysql/8.0.33/data.yml create mode 100644 apps/mysql/8.0.33/docker-compose.yml create mode 100644 apps/mysql/README.md create mode 100644 apps/mysql/data.yml create mode 100644 apps/mysql/logo.png diff --git a/apps/mysql/5.5.62/conf/my.cnf b/apps/mysql/5.5.62/conf/my.cnf new file mode 100644 index 00000000..f7105107 --- /dev/null +++ b/apps/mysql/5.5.62/conf/my.cnf @@ -0,0 +1,5 @@ +[mysqld] +skip-host-cache +skip-name-resolve +datadir = /var/lib/mysql +!includedir /etc/mysql/conf.d/ diff --git a/apps/mysql/5.5.62/data.yml b/apps/mysql/5.5.62/data.yml new file mode 100644 index 00000000..e71c6a38 --- /dev/null +++ b/apps/mysql/5.5.62/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: mysql + envKey: PANEL_DB_ROOT_PASSWORD + labelEn: Root Password + labelZh: root用户密码 + random: true + required: true + rule: paramComplexity + type: password + - default: 3306 + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number diff --git a/apps/mysql/5.5.62/docker-compose.yml b/apps/mysql/5.5.62/docker-compose.yml new file mode 100644 index 00000000..5df48d7c --- /dev/null +++ b/apps/mysql/5.5.62/docker-compose.yml @@ -0,0 +1,28 @@ +version: '3' + +services: + mysql: + image: mysql:5.5.62 + container_name: ${CONTAINER_NAME} + restart: always + environment: + MYSQL_ROOT_PASSWORD: ${PANEL_DB_ROOT_PASSWORD} + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:3306 + volumes: + - ./data/:/var/lib/mysql + - ./conf/my.cnf:/etc/mysql/my.cnf + - ./log:/var/log/mysql + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + command: + --lower-case-table-names=1 + --character-set-server=utf8 + --collation-server=utf8_general_ci + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true diff --git a/apps/mysql/5.6.51/conf/my.cnf b/apps/mysql/5.6.51/conf/my.cnf new file mode 100644 index 00000000..573c347c --- /dev/null +++ b/apps/mysql/5.6.51/conf/my.cnf @@ -0,0 +1,33 @@ +# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License, version 2.0, +# as published by the Free Software Foundation. +# +# This program is also distributed with certain software (including +# but not limited to OpenSSL) that is licensed under separate terms, +# as designated in a particular file or component or in included license +# documentation. The authors of MySQL hereby grant you an additional +# permission to link the program and your derivative works with the +# separately licensed software that they have included with MySQL. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License, version 2.0, for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +# +# The MySQL Server configuration file. +# +# For explanations see +# http://dev.mysql.com/doc/mysql/en/server-system-variables.html + +# * IMPORTANT: Additional settings that can override those from this file! +# The files must end with '.cnf', otherwise they'll be ignored. +# +!includedir /etc/mysql/conf.d/ +!includedir /etc/mysql/mysql.conf.d/ diff --git a/apps/mysql/5.6.51/data.yml b/apps/mysql/5.6.51/data.yml new file mode 100644 index 00000000..e71c6a38 --- /dev/null +++ b/apps/mysql/5.6.51/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: mysql + envKey: PANEL_DB_ROOT_PASSWORD + labelEn: Root Password + labelZh: root用户密码 + random: true + required: true + rule: paramComplexity + type: password + - default: 3306 + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number diff --git a/apps/mysql/5.6.51/docker-compose.yml b/apps/mysql/5.6.51/docker-compose.yml new file mode 100644 index 00000000..d0934dd0 --- /dev/null +++ b/apps/mysql/5.6.51/docker-compose.yml @@ -0,0 +1,29 @@ +version: '3' + +services: + mysql: + image: mysql:5.6.51 + container_name: ${CONTAINER_NAME} + restart: always + environment: + MYSQL_ROOT_PASSWORD: ${PANEL_DB_ROOT_PASSWORD} + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:3306 + volumes: + - ./data:/var/lib/mysql + - ./conf/my.cnf:/etc/mysql/my.cnf + - ./log:/var/log/mysql + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + command: + --explicit-defaults-for-timestamp=1 + --lower-case-table-names=1 + --character-set-server=utf8 + --collation-server=utf8_general_ci + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/mysql/5.7.42/conf/my.cnf b/apps/mysql/5.7.42/conf/my.cnf new file mode 100644 index 00000000..9a6aa6f9 --- /dev/null +++ b/apps/mysql/5.7.42/conf/my.cnf @@ -0,0 +1,42 @@ +# For advice on how to change settings please see +# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html + +[mysqld] +# +# Remove leading # and set to the amount of RAM for the most important data +# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. +# innodb_buffer_pool_size = 128M +# +# Remove leading # to turn on a very important data integrity option: logging +# changes to the binary log between backups. +# log_bin +# +# Remove leading # to set options mainly useful for reporting servers. +# The server defaults are faster for transactions and fast SELECTs. +# Adjust sizes as needed, experiment to find the optimal values. +# join_buffer_size = 128M +# sort_buffer_size = 2M +# read_rnd_buffer_size = 2M +skip-host-cache +skip-name-resolve +datadir=/var/lib/mysql +socket=/var/run/mysqld/mysqld.sock +secure-file-priv=/var/lib/mysql-files +user=mysql + +# Disabling symbolic-links is recommended to prevent assorted security risks +symbolic-links=0 + +#log-error=/var/log/mysqld.log +pid-file=/var/run/mysqld/mysqld.pid + +max_allowed_packet=64M +character_set_server=utf8 +lower_case_table_names=1 +group_concat_max_len=1024000 + +[client] +socket=/var/run/mysqld/mysqld.sock + +!includedir /etc/mysql/conf.d/ +!includedir /etc/mysql/mysql.conf.d/ \ No newline at end of file diff --git a/apps/mysql/5.7.42/data.yml b/apps/mysql/5.7.42/data.yml new file mode 100644 index 00000000..e71c6a38 --- /dev/null +++ b/apps/mysql/5.7.42/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: mysql + envKey: PANEL_DB_ROOT_PASSWORD + labelEn: Root Password + labelZh: root用户密码 + random: true + required: true + rule: paramComplexity + type: password + - default: 3306 + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number diff --git a/apps/mysql/5.7.42/docker-compose.yml b/apps/mysql/5.7.42/docker-compose.yml new file mode 100644 index 00000000..b407ff1b --- /dev/null +++ b/apps/mysql/5.7.42/docker-compose.yml @@ -0,0 +1,29 @@ +version: '3' + +services: + mysql: + image: mysql:5.7.42 + container_name: ${CONTAINER_NAME} + restart: always + environment: + MYSQL_ROOT_PASSWORD: ${PANEL_DB_ROOT_PASSWORD} + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:3306 + volumes: + - ./data/:/var/lib/mysql + - ./conf/my.cnf:/etc/mysql/my.cnf + - ./log:/var/log/mysql + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + command: + --character-set-server=utf8mb4 + --collation-server=utf8mb4_general_ci + --explicit_defaults_for_timestamp=true + --lower_case_table_names=1 + labels: + createdBy: "Apps" +networks: + 1panel-network: + external: true \ No newline at end of file diff --git a/apps/mysql/8.0.33/conf/my.cnf b/apps/mysql/8.0.33/conf/my.cnf new file mode 100644 index 00000000..30e94200 --- /dev/null +++ b/apps/mysql/8.0.33/conf/my.cnf @@ -0,0 +1,19 @@ +[mysqld] +skip-host-cache +skip-name-resolve +datadir=/var/lib/mysql +socket=/var/run/mysqld/mysqld.sock +secure-file-priv=/var/lib/mysql-files +user=mysql + + +character_set_server=utf8 +lower_case_table_names=1 +group_concat_max_len=1024000 +log_bin_trust_function_creators=1 + +pid-file=/var/run/mysqld/mysqld.pid +[client] +socket=/var/run/mysqld/mysqld.sock + +!includedir /etc/mysql/conf.d/ \ No newline at end of file diff --git a/apps/mysql/8.0.33/data.yml b/apps/mysql/8.0.33/data.yml new file mode 100644 index 00000000..e71c6a38 --- /dev/null +++ b/apps/mysql/8.0.33/data.yml @@ -0,0 +1,17 @@ +additionalProperties: + formFields: + - default: mysql + envKey: PANEL_DB_ROOT_PASSWORD + labelEn: Root Password + labelZh: root用户密码 + random: true + required: true + rule: paramComplexity + type: password + - default: 3306 + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + required: true + rule: paramPort + type: number diff --git a/apps/mysql/8.0.33/docker-compose.yml b/apps/mysql/8.0.33/docker-compose.yml new file mode 100644 index 00000000..b0f9d23b --- /dev/null +++ b/apps/mysql/8.0.33/docker-compose.yml @@ -0,0 +1,27 @@ +version: '3' + +services: + mysql: + image: mysql:8.0.33 + container_name: ${CONTAINER_NAME} + restart: always + environment: + MYSQL_ROOT_PASSWORD: ${PANEL_DB_ROOT_PASSWORD} + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:3306 + volumes: + - ./data/:/var/lib/mysql + - ./conf/my.cnf:/etc/my.cnf + - ./log:/var/log/mysql + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + labels: + createdBy: "Apps" + command: + - --default-authentication-plugin=mysql_native_password + +networks: + 1panel-network: + external: true diff --git a/apps/mysql/README.md b/apps/mysql/README.md new file mode 100644 index 00000000..7951cf6a --- /dev/null +++ b/apps/mysql/README.md @@ -0,0 +1,20 @@ +Copyright (c) 2000, 2022, Oracle and/or its affiliates. + +This is a release of MySQL, an SQL database server. + +License information can be found in the LICENSE file. + +In test packages where this file is renamed README-test, the license +file is renamed LICENSE-test. + +This distribution may include materials developed by third parties. +For license and attribution notices for these materials, +please refer to the LICENSE file. + +For further information on MySQL or additional documentation, visit +http://dev.mysql.com/doc/ + +For additional downloads and the source of MySQL, visit +http://dev.mysql.com/downloads/ + +MySQL is brought to you by the MySQL team at Oracle. diff --git a/apps/mysql/data.yml b/apps/mysql/data.yml new file mode 100644 index 00000000..16f35f8d --- /dev/null +++ b/apps/mysql/data.yml @@ -0,0 +1,20 @@ +name: MySQL +tags: + - 数据库 +title: MySQL 开源关系型数据库 +type: 数据库 +description: MySQL 开源关系型数据库 +additionalProperties: + key: mysql + name: MySQL + tags: + - Database + shortDescZh: MySQL 开源关系型数据库 + shortDescEn: Open source relational database management system + type: runtime + crossVersionUpdate: false + limit: 1 + recommend: 4 + website: https://www.mysql.com + github: https://github.com/mysql/mysql-server + document: https://dev.mysql.com/doc/ diff --git a/apps/mysql/logo.png b/apps/mysql/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a53df5fe1e28fb5cd3ee61db5908ffc51a00b669 GIT binary patch literal 12046 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 Q|G5L?rB$TrBus+;A5N`Ce*gdg literal 0 HcmV?d00001