Фикс
This commit is contained in:
224
install.sh
224
install.sh
@@ -945,7 +945,7 @@ EOF
|
|||||||
else
|
else
|
||||||
log_error "Ошибка: $description"
|
log_error "Ошибка: $description"
|
||||||
if [[ -s "$error_file" ]]; then
|
if [[ -s "$error_file" ]]; then
|
||||||
cat "$error_file" | head -10 >&2
|
cat "$error_file" | head -5 >&2
|
||||||
fi
|
fi
|
||||||
rm -f "$temp_file" "$error_file"
|
rm -f "$temp_file" "$error_file"
|
||||||
return 1
|
return 1
|
||||||
@@ -964,31 +964,19 @@ EOF
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Функция для современной установки пароля MariaDB
|
# Функция для проверки подключения
|
||||||
set_password_modern() {
|
test_connection() {
|
||||||
local connection_cmd="$1"
|
local user="$1"
|
||||||
local password="$2"
|
local password="$2"
|
||||||
|
local connection_params=""
|
||||||
|
|
||||||
# Используем только современные команды MariaDB
|
if [[ -n "$password" ]]; then
|
||||||
local sql="
|
connection_params="-u $user -p$password"
|
||||||
-- Установка пароля современным способом
|
|
||||||
ALTER USER 'root'@'localhost' IDENTIFIED BY '$password';
|
|
||||||
FLUSH PRIVILEGES;"
|
|
||||||
|
|
||||||
if execute_sql_safe "$connection_cmd" "Установка пароля root (современный способ)" "$sql"; then
|
|
||||||
return 0
|
|
||||||
else
|
else
|
||||||
# Если не получилось, попробуем SET PASSWORD
|
connection_params="-u $user"
|
||||||
local sql_alt="
|
|
||||||
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('$password');
|
|
||||||
FLUSH PRIVILEGES;"
|
|
||||||
|
|
||||||
if execute_sql_safe "$connection_cmd" "Установка пароля root (альтернативный способ)" "$sql_alt"; then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
mysql $connection_params -e "SELECT 1;" >/dev/null 2>&1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Основная логика - пробуем разные способы подключения
|
# Основная логика - пробуем разные способы подключения
|
||||||
@@ -997,25 +985,25 @@ FLUSH PRIVILEGES;"
|
|||||||
log_info "Попытка подключения к MariaDB..."
|
log_info "Попытка подключения к MariaDB..."
|
||||||
|
|
||||||
# 1. Попробуем подключиться как root без пароля
|
# 1. Попробуем подключиться как root без пароля
|
||||||
if mysql -u root -e "SELECT 1;" >/dev/null 2>&1; then
|
if test_connection "root" ""; then
|
||||||
log_success "Подключение как root без пароля успешно"
|
log_success "Подключение как root без пароля успешно"
|
||||||
|
|
||||||
# Сначала создаем базу данных
|
|
||||||
if create_database_only "mysql -u root"; then
|
if create_database_only "mysql -u root"; then
|
||||||
log_success "База данных создана"
|
log_success "База данных создана"
|
||||||
|
DB_CONFIGURED=true
|
||||||
|
|
||||||
# Пытаемся установить пароль (не критично, если не получится)
|
# Попробуем установить пароль (не критично если не получится)
|
||||||
if set_password_modern "mysql -u root" "$DB_PASSWORD"; then
|
log_info "Попытка установки пароля для root..."
|
||||||
|
local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '$DB_PASSWORD'; FLUSH PRIVILEGES;"
|
||||||
|
if echo "$sql" | mysql -u root >/dev/null 2>&1; then
|
||||||
log_success "Пароль root установлен"
|
log_success "Пароль root установлен"
|
||||||
DB_CONFIGURED=true
|
|
||||||
else
|
else
|
||||||
log_info "Пароль не установлен, но база данных создана"
|
log_info "Не удалось установить пароль, но база данных создана"
|
||||||
DB_CONFIGURED=true
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 2. Попробуем подключиться как root с паролем
|
# 2. Попробуем подключиться как root с паролем
|
||||||
elif mysql -u root -p"$DB_PASSWORD" -e "SELECT 1;" >/dev/null 2>&1; then
|
elif test_connection "root" "$DB_PASSWORD"; then
|
||||||
log_success "Подключение как root с паролем успешно"
|
log_success "Подключение как root с паролем успешно"
|
||||||
|
|
||||||
if create_database_only "mysql -u root -p$DB_PASSWORD"; then
|
if create_database_only "mysql -u root -p$DB_PASSWORD"; then
|
||||||
@@ -1024,7 +1012,7 @@ FLUSH PRIVILEGES;"
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# 3. Попробуем подключиться как текущий пользователь
|
# 3. Попробуем подключиться как текущий пользователь
|
||||||
elif mysql -u "$CURRENT_USER" -e "SELECT 1;" >/dev/null 2>&1; then
|
elif test_connection "$CURRENT_USER" ""; then
|
||||||
log_success "Подключение как $CURRENT_USER без пароля успешно"
|
log_success "Подключение как $CURRENT_USER без пароля успешно"
|
||||||
|
|
||||||
if create_database_only "mysql -u $CURRENT_USER"; then
|
if create_database_only "mysql -u $CURRENT_USER"; then
|
||||||
@@ -1032,42 +1020,46 @@ FLUSH PRIVILEGES;"
|
|||||||
DB_CONFIGURED=true
|
DB_CONFIGURED=true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 4. Попробуем через sudo
|
# 4. Попробуем подключиться как текущий пользователь с паролем
|
||||||
|
elif test_connection "$CURRENT_USER" "$DB_PASSWORD"; then
|
||||||
|
log_success "Подключение как $CURRENT_USER с паролем успешно"
|
||||||
|
|
||||||
|
if create_database_only "mysql -u $CURRENT_USER -p$DB_PASSWORD"; then
|
||||||
|
log_success "База данных создана пользователем $CURRENT_USER"
|
||||||
|
DB_CONFIGURED=true
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 5. Попробуем через sudo
|
||||||
elif sudo mysql -e "SELECT 1;" >/dev/null 2>&1; then
|
elif sudo mysql -e "SELECT 1;" >/dev/null 2>&1; then
|
||||||
log_success "Подключение через sudo успешно"
|
log_success "Подключение через sudo успешно"
|
||||||
|
|
||||||
if create_database_only "sudo mysql"; then
|
if create_database_only "sudo mysql"; then
|
||||||
log_success "База данных создана через sudo"
|
log_success "База данных создана через sudo"
|
||||||
|
DB_CONFIGURED=true
|
||||||
|
|
||||||
# Попробуем установить пароль через sudo
|
# Попробуем установить пароль через sudo
|
||||||
|
log_info "Попытка установки пароля через sudo..."
|
||||||
local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '$DB_PASSWORD'; FLUSH PRIVILEGES;"
|
local sql="ALTER USER 'root'@'localhost' IDENTIFIED BY '$DB_PASSWORD'; FLUSH PRIVILEGES;"
|
||||||
if echo "$sql" | sudo mysql >/dev/null 2>&1; then
|
if echo "$sql" | sudo mysql >/dev/null 2>&1; then
|
||||||
log_success "Пароль root установлен через sudo"
|
log_success "Пароль root установлен через sudo"
|
||||||
else
|
else
|
||||||
log_info "Пароль не удалось установить, но база создана"
|
log_info "Пароль не удалось установить, но база создана"
|
||||||
fi
|
fi
|
||||||
DB_CONFIGURED=true
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 5. Последняя попытка - возможно MariaDB запущен в безопасном режиме
|
else
|
||||||
elif systemctl stop mariadb && mysqld_safe --skip-grant-tables --skip-networking &
|
log_error "Не удалось подключиться к MariaDB ни одним из способов"
|
||||||
then
|
log_info ""
|
||||||
sleep 5
|
log_info "Попробуйте выполнить настройку вручную:"
|
||||||
MYSQL_PID=$!
|
log_info "1. Проверьте статус MariaDB: sudo systemctl status mariadb"
|
||||||
|
log_info "2. Запустите мастер настройки: sudo mysql_secure_installation"
|
||||||
|
log_info "3. Создайте базу данных вручную:"
|
||||||
|
log_info " sudo mysql -e \"CREATE DATABASE ALTCor CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\""
|
||||||
|
log_info "4. Или создайте отдельного пользователя:"
|
||||||
|
log_info " sudo mysql -e \"CREATE USER 'altcor'@'localhost' IDENTIFIED BY 'password';\""
|
||||||
|
log_info " sudo mysql -e \"CREATE DATABASE ALTCor; GRANT ALL ON ALTCor.* TO 'altcor'@'localhost';\""
|
||||||
|
|
||||||
if mysql -u root -e "SELECT 1;" >/dev/null 2>&1; then
|
exit 1
|
||||||
log_info "Подключение в безопасном режиме успешно"
|
|
||||||
|
|
||||||
if create_database_only "mysql -u root"; then
|
|
||||||
log_success "База данных создана в безопасном режиме"
|
|
||||||
DB_CONFIGURED=true
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Завершаем безопасный режим
|
|
||||||
kill $MYSQL_PID 2>/dev/null || true
|
|
||||||
sleep 2
|
|
||||||
systemctl start mariadb
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Проверяем результат
|
# Проверяем результат
|
||||||
@@ -1085,140 +1077,12 @@ FLUSH PRIVILEGES;"
|
|||||||
log_info "База создана, но требуется проверка подключения"
|
log_info "База создана, но требуется проверка подключения"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
log_error "Не удалось настроить базу данных автоматически"
|
log_error "Не удалось настроить базу данных"
|
||||||
log_info ""
|
|
||||||
log_info "Попробуйте выполнить настройку вручную:"
|
|
||||||
log_info "1. Проверьте статус MariaDB: sudo systemctl status mariadb"
|
|
||||||
log_info "2. Запустите мастер настройки: sudo mysql_secure_installation"
|
|
||||||
log_info "3. Создайте базу данных вручную:"
|
|
||||||
log_info " sudo mysql -e \"CREATE DATABASE ALTCor CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\""
|
|
||||||
log_info "4. Или создайте отдельного пользователя:"
|
|
||||||
log_info " sudo mysql -e \"CREATE USER 'altcor'@'localhost' IDENTIFIED BY 'password';\""
|
|
||||||
log_info " sudo mysql -e \"CREATE DATABASE ALTCor; GRANT ALL ON ALTCor.* TO 'altcor'@'localhost';\""
|
|
||||||
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
log_success "Настройка базы данных завершена"
|
log_success "Настройка базы данных завершена"
|
||||||
|
|
||||||
# Функция для проверки подключения
|
|
||||||
test_connection() {
|
|
||||||
local user="$1"
|
|
||||||
local password="$2"
|
|
||||||
local connection_params=""
|
|
||||||
|
|
||||||
if [[ -n "$password" ]]; then
|
|
||||||
connection_params="-u $user -p$password"
|
|
||||||
else
|
|
||||||
connection_params="-u $user"
|
|
||||||
fi
|
|
||||||
|
|
||||||
mysql $connection_params -e "SELECT 1;" >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
log_info "Выполнение базовой настройки безопасности MariaDB..."
|
|
||||||
|
|
||||||
# Сценарий 1: Подключение как root без пароля
|
|
||||||
if test_connection "root" ""; then
|
|
||||||
log_info "Подключение как 'root' без пароля успешно. Настраиваем root-пользователя..."
|
|
||||||
|
|
||||||
SQL_SCRIPT="
|
|
||||||
SET sql_mode = '';
|
|
||||||
UPDATE mysql.user SET authentication_string = PASSWORD('$DB_PASSWORD') WHERE User = 'root' AND Host = 'localhost';
|
|
||||||
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root' AND Host = 'localhost';
|
|
||||||
DELETE FROM mysql.user WHERE User='';
|
|
||||||
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
|
|
||||||
DROP DATABASE IF EXISTS test;
|
|
||||||
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
|
|
||||||
FLUSH PRIVILEGES;
|
|
||||||
CREATE DATABASE IF NOT EXISTS ALTCor CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
||||||
GRANT ALL PRIVILEGES ON ALTCor.* TO 'root'@'localhost';
|
|
||||||
FLUSH PRIVILEGES;"
|
|
||||||
|
|
||||||
if execute_sql "root" "" "$SQL_SCRIPT"; then
|
|
||||||
log_success "Первичная настройка MariaDB выполнена успешно"
|
|
||||||
else
|
|
||||||
log_error "Не удалось выполнить первичную настройку MariaDB"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Сценарий 2: Подключение как root с паролем
|
|
||||||
elif test_connection "root" "$DB_PASSWORD"; then
|
|
||||||
log_info "MariaDB уже настроен с текущим паролем для root..."
|
|
||||||
|
|
||||||
SQL_SCRIPT="CREATE DATABASE IF NOT EXISTS ALTCor CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
|
||||||
|
|
||||||
if execute_sql "root" "$DB_PASSWORD" "$SQL_SCRIPT"; then
|
|
||||||
log_success "База данных ALTCor создана/проверена"
|
|
||||||
else
|
|
||||||
log_error "Не удалось создать базу данных ALTCor"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Сценарий 3: Подключение как текущий пользователь без пароля
|
|
||||||
elif test_connection "$CURRENT_USER" ""; then
|
|
||||||
log_info "Подключение как '$CURRENT_USER' без пароля успешно."
|
|
||||||
|
|
||||||
# Проверяем права пользователя
|
|
||||||
if mysql -u "$CURRENT_USER" -e "SELECT User FROM mysql.user WHERE User='root';" >/dev/null 2>&1; then
|
|
||||||
log_info "Пользователь '$CURRENT_USER' имеет доступ к системным таблицам. Настраиваем root..."
|
|
||||||
|
|
||||||
SQL_SCRIPT="
|
|
||||||
SET sql_mode = '';
|
|
||||||
UPDATE mysql.user SET authentication_string = PASSWORD('$DB_PASSWORD') WHERE User = 'root' AND Host = 'localhost';
|
|
||||||
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root' AND Host = 'localhost';
|
|
||||||
DELETE FROM mysql.user WHERE User='';
|
|
||||||
DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
|
|
||||||
DROP DATABASE IF EXISTS test;
|
|
||||||
DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
|
|
||||||
FLUSH PRIVILEGES;
|
|
||||||
CREATE DATABASE IF NOT EXISTS ALTCor CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
||||||
GRANT ALL PRIVILEGES ON ALTCor.* TO 'root'@'localhost';
|
|
||||||
FLUSH PRIVILEGES;"
|
|
||||||
|
|
||||||
if execute_sql "$CURRENT_USER" "" "$SQL_SCRIPT"; then
|
|
||||||
log_success "Первичная настройка MariaDB выполнена успешно"
|
|
||||||
else
|
|
||||||
log_error "Не удалось выполнить первичную настройку MariaDB"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
log_info "Пользователь '$CURRENT_USER' не имеет прав администратора. Создаем только базу данных..."
|
|
||||||
|
|
||||||
SQL_SCRIPT="CREATE DATABASE IF NOT EXISTS ALTCor CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
|
||||||
|
|
||||||
if execute_sql "$CURRENT_USER" "" "$SQL_SCRIPT"; then
|
|
||||||
log_success "База данных ALTCor создана"
|
|
||||||
else
|
|
||||||
log_error "Не удалось создать базу данных ALTCor"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Сценарий 4: Подключение как текущий пользователь с паролем
|
|
||||||
elif test_connection "$CURRENT_USER" "$DB_PASSWORD"; then
|
|
||||||
log_info "MariaDB уже настроен с текущим паролем для пользователя '$CURRENT_USER'..."
|
|
||||||
|
|
||||||
SQL_SCRIPT="CREATE DATABASE IF NOT EXISTS ALTCor CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
|
|
||||||
|
|
||||||
if execute_sql "$CURRENT_USER" "$DB_PASSWORD" "$SQL_SCRIPT"; then
|
|
||||||
log_success "База данных ALTCor создана/проверена"
|
|
||||||
else
|
|
||||||
log_error "Не удалось создать базу данных ALTCor"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
else
|
|
||||||
log_error "Не удалось подключиться к MariaDB."
|
|
||||||
log_info "Попробуйте выполнить настройку вручную:"
|
|
||||||
log_info "1. sudo mysql_secure_installation"
|
|
||||||
log_info "2. mysql -u root -p"
|
|
||||||
log_info "3. Проверьте состояние службы: systemctl status mariadb"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
log_success "База данных настроена"
|
|
||||||
|
|
||||||
log_step "Проверка конфигурации Apache..."
|
log_step "Проверка конфигурации Apache..."
|
||||||
if [ "$DISTRO_FAMILY" = "debian" ]; then
|
if [ "$DISTRO_FAMILY" = "debian" ]; then
|
||||||
if ! apache2ctl configtest 2>/dev/null; then
|
if ! apache2ctl configtest 2>/dev/null; then
|
||||||
|
|||||||
Reference in New Issue
Block a user