From ec681995b4f7e23a8dbec63809d3704f19ec9299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9raud=20CONTINSOUZAS?= Date: Tue, 25 Aug 2020 09:45:37 +1100 Subject: [PATCH] fix(freebsd): upgrade to mysql57-server Current default version for FreeBSD is MySQL 5.7, also python 2.x is deprecated and should be removed any time soon. FreeBSD uses the `mysql_install_db` which generates a temporary root password upon the first start. To the best of my understanding I haven't seen any code in the formula that handles this method. So I added a FreeBSD-scpecific block for initialization. While here, create `/var/log/mysql` without which the server won't start if it doesn't exist. Co-authored-by: Geraud CONTINSOUZAS --- mysql/osfamilymap.yaml | 12 ++++++------ mysql/server.sls | 18 +++++++++++++++++- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/mysql/osfamilymap.yaml b/mysql/osfamilymap.yaml index d582dcc..fd71133 100644 --- a/mysql/osfamilymap.yaml +++ b/mysql/osfamilymap.yaml @@ -206,14 +206,14 @@ Gentoo: interactive_timeout: noarg_present FreeBSD: - serverpkg: mysql56-server - clientpkg: mysql56-client + serverpkg: mysql57-server + clientpkg: mysql57-client service: mysql-server - pythonpkg: py27-pymysql - devpkg: mysql56-server + pythonpkg: py37-pymysql + devpkg: mysql57-server config: - file: /usr/local/etc/my.cnf + file: /usr/local/etc/mysql/my.cnf sections: client: socket: /tmp/mysql.sock @@ -221,7 +221,7 @@ FreeBSD: # Empty values below to be resolved, disabling the rule in the meantime # yamllint disable rule:empty-values user: - datadir: + datadir: /var/db/mysql # yamllint enable rule:empty-values socket: /tmp/mysql.sock skip-external-locking: noarg_present diff --git a/mysql/server.sls b/mysql/server.sls index 564555e..53df282 100644 --- a/mysql/server.sls +++ b/mysql/server.sls @@ -143,13 +143,29 @@ mysql_initialize: - pkg: {{ mysql.serverpkg }} {%- endif %} +{%- if os_family in ['FreeBSD'] and mysql.serverpkg.lower() != 'mariadb-server' %} +mysql_initialize: + file.directory: + - name: /var/log/mysql + - user: mysql + - group: mysql + - mode: '0750' + cmd.run: + - name: /usr/local/libexec/mysqld --initialize-insecure --user=mysql --basedir=/usr/local --datadir={{ mysql_datadir }} + - runas: root + - creates: {{ mysql_datadir }}/mysql/ + - require: + - pkg: {{ mysql.serverpkg }} + - file: /var/log/mysql +{%- endif %} + mysqld-service-running: service.running: - name: {{ mysql.service }} - enable: True - require: - pkg: {{ mysql.serverpkg }} -{%- if (os_family in ['RedHat', 'Suse'] and mysql.version is defined and mysql.version >= 5.7 and mysql.serverpkg.lower() != 'mariadb-server') or (os_family in ['Gentoo']) %} +{%- if (os_family in ['RedHat', 'Suse'] and mysql.version is defined and mysql.version >= 5.7 and mysql.serverpkg.lower() != 'mariadb-server') or (os_family in ['Gentoo', 'FreeBSD']) %} - cmd: mysql_initialize {%- elif os_family in ['RedHat', 'Suse'] and mysql.serverpkg.lower() == 'mariadb-server' %} - file: {{ mysql_datadir }}