setting passwords for mysql

This commit is contained in:
Alexey Bannov 2017-06-13 09:37:16 -04:00
parent c481cd3b94
commit 617960b99d
1 changed files with 82 additions and 112 deletions

View File

@ -69,11 +69,12 @@ CONTROL_PANEL_ENABLED=false
MAIL_SERVER_ENABLED=false MAIL_SERVER_ENABLED=false
EXTERNAL_IP=${EXTERNAL_IP:-$(dig +short myip.opendns.com @resolver1.opendns.com)}; EXTERNAL_IP=${EXTERNAL_IP:-$(dig +short myip.opendns.com @resolver1.opendns.com)};
MYSQL_SERVER_ROOT_PASSWORD=${MYSQL_SERVER_ROOT_PASSWORD:-""}
MYSQL_SERVER_HOST=${MYSQL_SERVER_HOST:-"localhost"} MYSQL_SERVER_HOST=${MYSQL_SERVER_HOST:-"localhost"}
MYSQL_SERVER_PORT=${MYSQL_SERVER_PORT:-"3306"} MYSQL_SERVER_PORT=${MYSQL_SERVER_PORT:-"3306"}
MYSQL_SERVER_DB_NAME=${MYSQL_SERVER_DB_NAME:-"onlyoffice"} MYSQL_SERVER_DB_NAME=${MYSQL_SERVER_DB_NAME:-"onlyoffice"}
MYSQL_SERVER_USER=${MYSQL_SERVER_USER:-"root"} MYSQL_SERVER_USER=${MYSQL_SERVER_USER:-"root"}
MYSQL_SERVER_PASS=${MYSQL_SERVER_PASS:-""} MYSQL_SERVER_PASS=${MYSQL_SERVER_PASS:-${MYSQL_SERVER_ROOT_PASSWORD}}
MYSQL_SERVER_EXTERNAL=${MYSQL_SERVER_EXTERNAL:-false}; MYSQL_SERVER_EXTERNAL=${MYSQL_SERVER_EXTERNAL:-false};
mkdir -p "${SSL_CERTIFICATES_DIR}/.well-known/acme-challenge" mkdir -p "${SSL_CERTIFICATES_DIR}/.well-known/acme-challenge"
@ -284,66 +285,78 @@ mysql_check_connection() {
done done
} }
change_connections(){
if [ ${LOG_DEBUG} ]; then
log_debug "Change connections for ${1} then ${2}";
fi
change_connections(){
sed '/'${1}'/s/\(connectionString\s*=\s*\"\)[^\"]*\"/\1Server='${MYSQL_SERVER_HOST}';Port='${MYSQL_SERVER_PORT}';Database='${MYSQL_SERVER_DB_NAME}';User ID='${MYSQL_SERVER_USER}';Password='${MYSQL_SERVER_PASS}';Pooling=true;Character Set=utf8;AutoEnlist=false\"/' -i ${2} sed '/'${1}'/s/\(connectionString\s*=\s*\"\)[^\"]*\"/\1Server='${MYSQL_SERVER_HOST}';Port='${MYSQL_SERVER_PORT}';Database='${MYSQL_SERVER_DB_NAME}';User ID='${MYSQL_SERVER_USER}';Password='${MYSQL_SERVER_PASS}';Pooling=true;Character Set=utf8;AutoEnlist=false\"/' -i ${2}
} }
if [ "${MYSQL_SERVER_EXTERNAL}" == "true" ]; then if [ "${MYSQL_SERVER_EXTERNAL}" == "false" ]; then
chown -R mysql:mysql /var/lib/mysql/
chmod -R 755 /var/lib/mysql/
if [ ! -f /var/lib/mysql/ibdata1 ]; then
# cp /etc/mysql/my.cnf /usr/share/mysql/my-default.cnf
mysqld --initialize-insecure --user=mysql || true
fi
if [ ${LOG_DEBUG} ]; then
log_debug "Fix docker bug volume mapping for mysql";
fi
myisamchk -q -r /var/lib/mysql/mysql/proc || true
service mysql start
if [ -n "$MYSQL_SERVER_PASS" ] && mysqladmin --silent ping -u root | grep -q "mysqld is alive" ; then
mysql <<EOF
SET Password=PASSWORD("$MYSQL_SERVER_ROOT_PASSWORD");
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
DELETE FROM mysql.user WHERE User='';
DELETE FROM mysql.db WHERE Db='test' OR Db='test_%';
FLUSH PRIVILEGES;
EOF
if [ "$MYSQL_SERVER_USER" != "root" ]; then
mysql "-p${MYSQL_SERVER_ROOT_PASSWORD}" <<EOF
CREATE USER IF NOT EXISTS "$MYSQL_SERVER_USER"@"localhost" IDENTIFIED WITH mysql_native_password BY "$MYSQL_SERVER_PASS";
GRANT ALL PRIVILEGES ON *.* TO "$MYSQL_SERVER_USER"@'localhost';
FLUSH PRIVILEGES;
EOF
fi
fi
mysql_scalar_exec "GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost'" "opt_ignore_db_name";
if ! mysql_upgrade -h ${MYSQL_SERVER_HOST} -P ${MYSQL_SERVER_PORT} -u ${MYSQL_SERVER_USER} --password=${MYSQL_SERVER_PASS} | grep -q "already upgraded"; then
service mysql restart;
fi
else
service mysql stop
fi
mysql_check_connection; mysql_check_connection;
# create db if not exist
# DB_INFO=$(mysql_list_exec "SELECT SCHEMA_NAME, DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='${MYSQL_SERVER_DB_NAME}'" "opt_ignore_db_name");
# echo ${DB_INFO};
DB_IS_EXIST=$(mysql_scalar_exec "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='${MYSQL_SERVER_DB_NAME}'" "opt_ignore_db_name"); DB_IS_EXIST=$(mysql_scalar_exec "SELECT SCHEMA_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='${MYSQL_SERVER_DB_NAME}'" "opt_ignore_db_name");
DB_CHARACTER_SET_NAME=$(mysql_list_exec "SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='${MYSQL_SERVER_DB_NAME}'" "opt_ignore_db_name"); DB_CHARACTER_SET_NAME=$(mysql_list_exec "SELECT DEFAULT_CHARACTER_SET_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='${MYSQL_SERVER_DB_NAME}'" "opt_ignore_db_name");
DB_COLLATION_NAME=$(mysql_list_exec "SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='${MYSQL_SERVER_DB_NAME}'" "opt_ignore_db_name"); DB_COLLATION_NAME=$(mysql_list_exec "SELECT DEFAULT_COLLATION_NAME FROM information_schema.SCHEMATA WHERE SCHEMA_NAME='${MYSQL_SERVER_DB_NAME}'" "opt_ignore_db_name");
# if [ ${DB_INFO[@]} -nq 0 ]; then
# DB_IS_EXIST="1";
# DB_CHARACTER_SET_NAME=${#DB_INFO[1]};
# DB_COLLATION_NAME=${#DB_INFO[2]};
# fi
DB_TABLES_COUNT=$(mysql_scalar_exec "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='${MYSQL_SERVER_DB_NAME}'"); DB_TABLES_COUNT=$(mysql_scalar_exec "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='${MYSQL_SERVER_DB_NAME}'");
if [ ${LOG_DEBUG} ]; then
log_debug "DB_IS_EXIST: ${DB_IS_EXIST}";
log_debug "DB_CHARACTER_SET_NAME: ${DB_CHARACTER_SET_NAME}";
log_debug "DB_COLLATION_NAME: ${DB_COLLATION_NAME}";
log_debug "DB_TABLES_COUNT: ${DB_TABLES_COUNT}";
fi
if [ -z ${DB_IS_EXIST} ]; then if [ -z ${DB_IS_EXIST} ]; then
mysql_scalar_exec "CREATE DATABASE ${MYSQL_SERVER_DB_NAME} CHARACTER SET utf8 COLLATE utf8_general_ci" "opt_ignore_db_name"; mysql_scalar_exec "CREATE DATABASE ${MYSQL_SERVER_DB_NAME} CHARACTER SET utf8 COLLATE utf8_general_ci" "opt_ignore_db_name";
DB_CHARACTER_SET_NAME="utf8"; DB_CHARACTER_SET_NAME="utf8";
DB_COLLATION_NAME="utf8_general_ci"; DB_COLLATION_NAME="utf8_general_ci";
DB_TABLES_COUNT=0; DB_TABLES_COUNT=0;
if [ ${LOG_DEBUG} ]; then
log_debug "Create db ${MYSQL_SERVER_DB_NAME}";
fi
fi fi
if [ ${DB_CHARACTER_SET_NAME} != "utf8" ]; then if [ ${DB_CHARACTER_SET_NAME} != "utf8" ]; then
mysql_scalar_exec "ALTER DATABASE ${MYSQL_SERVER_DB_NAME} CHARACTER SET utf8 COLLATE utf8_general_ci"; mysql_scalar_exec "ALTER DATABASE ${MYSQL_SERVER_DB_NAME} CHARACTER SET utf8 COLLATE utf8_general_ci";
if [ ${LOG_DEBUG} ]; then
log_debug "Change characted set name ${MYSQL_SERVER_DB_NAME}";
fi
fi fi
if [ "${DB_TABLES_COUNT}" -eq "0" ]; then if [ "${DB_TABLES_COUNT}" -eq "0" ]; then
if [ ${LOG_DEBUG} ]; then
log_debug "Run filling tables...";
fi
mysql_batch_exec ${ONLYOFFICE_SQL_DIR}/onlyoffice.sql mysql_batch_exec ${ONLYOFFICE_SQL_DIR}/onlyoffice.sql
mysql_batch_exec ${ONLYOFFICE_SQL_DIR}/onlyoffice.data.sql mysql_batch_exec ${ONLYOFFICE_SQL_DIR}/onlyoffice.data.sql
mysql_batch_exec ${ONLYOFFICE_SQL_DIR}/onlyoffice.resources.sql mysql_batch_exec ${ONLYOFFICE_SQL_DIR}/onlyoffice.resources.sql
@ -363,49 +376,6 @@ if [ "${MYSQL_SERVER_EXTERNAL}" == "true" ]; then
sed 's!\(sql_db\s*=\s*\)\S*!\1'${MYSQL_SERVER_DB_NAME}'!' -i ${ONLYOFFICE_SERVICES_DIR}/TeamLabSvc/sphinx-min.conf.in; sed 's!\(sql_db\s*=\s*\)\S*!\1'${MYSQL_SERVER_DB_NAME}'!' -i ${ONLYOFFICE_SERVICES_DIR}/TeamLabSvc/sphinx-min.conf.in;
sed 's!\(sql_port\s*=\s*\)\S*!\1'${MYSQL_SERVER_PORT}'!' -i ${ONLYOFFICE_SERVICES_DIR}/TeamLabSvc/sphinx-min.conf.in; sed 's!\(sql_port\s*=\s*\)\S*!\1'${MYSQL_SERVER_PORT}'!' -i ${ONLYOFFICE_SERVICES_DIR}/TeamLabSvc/sphinx-min.conf.in;
service mysql stop
else
# create db if not exist
if [ ! -f /var/lib/mysql/ibdata1 ]; then
chown -R mysql:mysql /var/lib/mysql/
chmod -R 755 /var/lib/mysql/
# cp /etc/mysql/my.cnf /usr/share/mysql/my-default.cnf
mysqld --initialize-insecure --user=mysql || true
service mysql start
mysql -D "mysql" -e "update user set plugin='mysql_native_password' where user='root';"
echo "CREATE DATABASE onlyoffice CHARACTER SET utf8 COLLATE utf8_general_ci" | mysql;
mysql -D "onlyoffice" < ${ONLYOFFICE_SQL_DIR}/onlyoffice.sql
mysql -D "onlyoffice" < ${ONLYOFFICE_SQL_DIR}/onlyoffice.data.sql
mysql -D "onlyoffice" < ${ONLYOFFICE_SQL_DIR}/onlyoffice.resources.sql
service mysql restart
else
chown -R mysql:mysql /var/lib/mysql/
chmod -R 755 /var/lib/mysql/
if [ ${LOG_DEBUG} ]; then
log_debug "Fix docker bug volume mapping for mysql";
fi
myisamchk -q -r /var/lib/mysql/mysql/proc || true
service mysql start
if ! mysql_upgrade | grep -q "already upgraded"; then
service mysql restart;
fi
#DEBIAN_SYS_MAINT_PASS=$(grep "password" /etc/mysql/debian.cnf | head -1 | sed 's/password\s*=\s*//' | tr -d '[[:space:]]');
#mysql_scalar_exec "GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '${DEBIAN_SYS_MAINT_PASS}'"
mysql_scalar_exec "GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost'"
fi
fi
# update mysql db # update mysql db
for i in $(ls ${ONLYOFFICE_SQL_DIR}/onlyoffice.upgrade*); do for i in $(ls ${ONLYOFFICE_SQL_DIR}/onlyoffice.upgrade*); do