Установка и конфигурация MySQL/MariaDB — различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск
(Новая страница: «= Установка и конфигурация MySQL/MariaDB = == 1. Подготовка системы == * Войдите в систему под учет…»)
 
Строка 11: Строка 11:
  
 
1. Обновите список пакетов:
 
1. Обновите список пакетов:
<code>
+
<code>sudo apt update</code>
sudo apt update
 
</code>
 
  
 
2. Установите MariaDB сервер:
 
2. Установите MariaDB сервер:
<code>
+
<code>sudo apt install mariadb-server mariadb-client</code>
sudo apt install mariadb-server mariadb-client
 
</code>
 
  
 
3. Запустите и включите автозапуск MariaDB:
 
3. Запустите и включите автозапуск MariaDB:
<code>
+
<code>sudo systemctl start mariadb</code>
sudo systemctl start mariadb
+
<code>sudo systemctl enable mariadb</code>
sudo systemctl enable mariadb
 
</code>
 
  
 
=== Для CentOS/RHEL/Fedora ===
 
=== Для CentOS/RHEL/Fedora ===
  
 
1. Установите MariaDB:
 
1. Установите MariaDB:
<code>
+
<code>sudo yum install mariadb-server mariadb</code>
sudo yum install mariadb-server mariadb
 
</code>
 
 
# или для новых версий
 
# или для новых версий
<code>
+
<code>sudo dnf install mariadb-server mariadb</code>
sudo dnf install mariadb-server mariadb
 
</code>
 
  
 
2. Запустите и включите автозапуск:
 
2. Запустите и включите автозапуск:
<code>
+
<code>sudo systemctl start mariadb</code>
sudo systemctl start mariadb
+
<code>sudo systemctl enable mariadb</code>
sudo systemctl enable mariadb
 
</code>
 
  
 
== 3. Первоначальная настройка безопасности ==
 
== 3. Первоначальная настройка безопасности ==
  
 
1. Запустите скрипт настройки безопасности:
 
1. Запустите скрипт настройки безопасности:
<code>
+
<code>sudo mysql_secure_installation</code>
sudo mysql_secure_installation
 
</code>
 
  
 
2. Следуйте инструкциям:
 
2. Следуйте инструкциям:
Строка 62: Строка 48:
  
 
1. Подключитесь к MariaDB:
 
1. Подключитесь к MariaDB:
<code>
+
<code>sudo mysql -u root -p</code>
sudo mysql -u root -p
 
</code>
 
  
 
2. Введите пароль root пользователя.
 
2. Введите пароль root пользователя.
Строка 71: Строка 55:
  
 
1. В консоли MariaDB создайте нового пользователя:
 
1. В консоли MariaDB создайте нового пользователя:
<code>
+
<code>CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';</code>
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
 
</code>
 
  
 
2. Предоставьте все привилегии:
 
2. Предоставьте все привилегии:
<code>
+
<code>GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost' WITH GRANT OPTION;</code>
GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost' WITH GRANT OPTION;
 
</code>
 
  
 
3. Обновите привилегии:
 
3. Обновите привилегии:
<code>
+
<code>FLUSH PRIVILEGES;</code>
FLUSH PRIVILEGES;
 
</code>
 
  
 
4. Выйдите из консоли:
 
4. Выйдите из консоли:
<code>
+
<code>EXIT;</code>
EXIT;
 
</code>
 
  
 
== 5. Создание базы данных ==
 
== 5. Создание базы данных ==
  
 
1. Подключитесь к MariaDB:
 
1. Подключитесь к MariaDB:
<code>
+
<code>mysql -u newuser -p</code>
mysql -u newuser -p
 
</code>
 
  
 
2. Создайте новую базу данных:
 
2. Создайте новую базу данных:
<code>
+
<code>CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;</code>
CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
 
</code>
 
  
 
3. Выберите базу данных:
 
3. Выберите базу данных:
<code>
+
<code>USE mydatabase;</code>
USE mydatabase;
 
</code>
 
  
 
4. Создайте таблицу:
 
4. Создайте таблицу:
<code>
+
<code>CREATE TABLE users (</code>
CREATE TABLE users (
+
<code>id INT AUTO_INCREMENT PRIMARY KEY,</code>
    id INT AUTO_INCREMENT PRIMARY KEY,
+
<code>username VARCHAR(50) NOT NULL,</code>
    username VARCHAR(50) NOT NULL,
+
<code>email VARCHAR(100) NOT NULL,</code>
    email VARCHAR(100) NOT NULL,
+
<code>created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP</code>
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
+
<code>);</code>
);
 
</code>
 
  
 
== 6. Настройка конфигурации MariaDB ==
 
== 6. Настройка конфигурации MariaDB ==
Строка 122: Строка 90:
  
 
1. Отредактируйте файл конфигурации:
 
1. Отредактируйте файл конфигурации:
<code>
+
<code>sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf</code>
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
 
</code>
 
  
 
2. Настройте основные параметры:
 
2. Настройте основные параметры:
<code>
+
<code>[mysqld]</code>
[mysqld]
+
<code>port = 3306</code>
# Основные настройки
+
<code>bind-address = 127.0.0.1</code>
port = 3306
+
<code>max_connections = 100</code>
bind-address = 127.0.0.1
+
<code>innodb_buffer_pool_size = 256M</code>
 
+
<code>innodb_log_file_size = 64M</code>
# Настройки производительности
+
<code>query_cache_size = 32M</code>
max_connections = 100
+
<code>query_cache_type = 1</code>
innodb_buffer_pool_size = 256M
+
<code>local-infile = 0</code>
innodb_log_file_size = 64M
 
query_cache_size = 32M
 
query_cache_type = 1
 
 
 
# Настройки безопасности
 
local-infile = 0
 
</code>
 
  
 
3. Перезапустите MariaDB:
 
3. Перезапустите MariaDB:
<code>
+
<code>sudo systemctl restart mariadb</code>
sudo systemctl restart mariadb
 
</code>
 
  
 
== 7. Настройка удаленного доступа ==
 
== 7. Настройка удаленного доступа ==
Строка 154: Строка 111:
  
 
1. Отредактируйте файл конфигурации:
 
1. Отредактируйте файл конфигурации:
<code>
+
<code>sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf</code>
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
 
</code>
 
  
 
2. Измените bind-address:
 
2. Измените bind-address:
<code>
+
<code>bind-address = 0.0.0.0</code>
bind-address = 0.0.0.0
 
</code>
 
  
 
3. Создайте пользователя для удаленного доступа:
 
3. Создайте пользователя для удаленного доступа:
<code>
+
<code>CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'password';</code>
CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'password';
+
<code>GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%' WITH GRANT OPTION;</code>
GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%' WITH GRANT OPTION;
+
<code>FLUSH PRIVILEGES;</code>
FLUSH PRIVILEGES;
 
</code>
 
  
 
4. Перезапустите MariaDB:
 
4. Перезапустите MariaDB:
<code>
+
<code>sudo systemctl restart mariadb</code>
sudo systemctl restart mariadb
 
</code>
 
  
 
=== Настройка файрвола ===
 
=== Настройка файрвола ===
  
 
1. Разрешите MySQL трафик:
 
1. Разрешите MySQL трафик:
<code>
+
<code>sudo ufw allow 3306</code>
sudo ufw allow 3306
 
</code>
 
  
 
== 8. Резервное копирование и восстановление ==
 
== 8. Резервное копирование и восстановление ==
Строка 187: Строка 134:
  
 
1. Создайте резервную копию базы данных:
 
1. Создайте резервную копию базы данных:
<code>
+
<code>mysqldump -u root -p mydatabase > backup.sql</code>
mysqldump -u root -p mydatabase > backup.sql
 
</code>
 
  
 
2. Создайте резервную копию всех баз данных:
 
2. Создайте резервную копию всех баз данных:
<code>
+
<code>mysqldump -u root -p --all-databases > full_backup.sql</code>
mysqldump -u root -p --all-databases > full_backup.sql
 
</code>
 
  
 
=== Восстановление из резервной копии ===
 
=== Восстановление из резервной копии ===
  
 
1. Создайте новую базу данных:
 
1. Создайте новую базу данных:
<code>
+
<code>mysql -u root -p -e "CREATE DATABASE restored_db;"</code>
mysql -u root -p -e "CREATE DATABASE restored_db;"
 
</code>
 
  
 
2. Восстановите данные:
 
2. Восстановите данные:
<code>
+
<code>mysql -u root -p restored_db < backup.sql</code>
mysql -u root -p restored_db < backup.sql
 
</code>
 
  
 
== 9. Мониторинг и оптимизация ==
 
== 9. Мониторинг и оптимизация ==
Строка 213: Строка 152:
  
 
1. Подключитесь к MariaDB:
 
1. Подключитесь к MariaDB:
<code>
+
<code>mysql -u root -p</code>
mysql -u root -p
 
</code>
 
  
 
2. Просмотрите статус:
 
2. Просмотрите статус:
<code>
+
<code>SHOW STATUS;</code>
SHOW STATUS;
 
</code>
 
  
 
3. Просмотрите процессы:
 
3. Просмотрите процессы:
<code>
+
<code>SHOW PROCESSLIST;</code>
SHOW PROCESSLIST;
 
</code>
 
  
 
=== Оптимизация производительности ===
 
=== Оптимизация производительности ===
  
 
1. Установите MySQLTuner:
 
1. Установите MySQLTuner:
<code>
+
<code>wget http://mysqltuner.pl/ -O mysqltuner.pl</code>
wget http://mysqltuner.pl/ -O mysqltuner.pl
+
<code>chmod +x mysqltuner.pl</code>
chmod +x mysqltuner.pl
 
</code>
 
  
 
2. Запустите анализ:
 
2. Запустите анализ:
<code>
+
<code>./mysqltuner.pl</code>
./mysqltuner.pl
 
</code>
 
  
 
== 10. Управление MariaDB ==
 
== 10. Управление MariaDB ==
Строка 245: Строка 174:
  
 
* '''Запуск MariaDB''':
 
* '''Запуск MariaDB''':
<code>
+
<code>sudo systemctl start mariadb</code>
sudo systemctl start mariadb
 
</code>
 
  
 
* '''Остановка MariaDB''':
 
* '''Остановка MariaDB''':
<code>
+
<code>sudo systemctl stop mariadb</code>
sudo systemctl stop mariadb
 
</code>
 
  
 
* '''Перезапуск MariaDB''':
 
* '''Перезапуск MariaDB''':
<code>
+
<code>sudo systemctl restart mariadb</code>
sudo systemctl restart mariadb
 
</code>
 
  
 
* '''Проверка статуса''':
 
* '''Проверка статуса''':
<code>
+
<code>sudo systemctl status mariadb</code>
sudo systemctl status mariadb
 
</code>
 
  
 
* '''Проверка подключения''':
 
* '''Проверка подключения''':
<code>
+
<code>mysql -u root -p -e "SELECT VERSION();"</code>
mysql -u root -p -e "SELECT VERSION();"
 
</code>
 
  
 
== 11. Безопасность ==
 
== 11. Безопасность ==
Строка 274: Строка 193:
  
 
1. Регулярно обновляйте MariaDB:
 
1. Регулярно обновляйте MariaDB:
<code>
+
<code>sudo apt update && sudo apt upgrade mariadb-server</code>
sudo apt update && sudo apt upgrade mariadb-server
 
</code>
 
  
 
2. Настройте логирование:
 
2. Настройте логирование:
<code>
+
<code>log-error = /var/log/mysql/error.log</code>
# В файле конфигурации добавьте:
+
<code>slow_query_log = 1</code>
log-error = /var/log/mysql/error.log
+
<code>slow_query_log_file = /var/log/mysql/slow.log</code>
slow_query_log = 1
+
<code>long_query_time = 2</code>
slow_query_log_file = /var/log/mysql/slow.log
 
long_query_time = 2
 
</code>
 
  
 
3. Ограничьте права пользователей:
 
3. Ограничьте права пользователей:
<code>
+
<code>CREATE USER 'readonly'@'localhost' IDENTIFIED BY 'password';</code>
# Создайте пользователя только для чтения
+
<code>GRANT SELECT ON mydatabase.* TO 'readonly'@'localhost';</code>
CREATE USER 'readonly'@'localhost' IDENTIFIED BY 'password';
 
GRANT SELECT ON mydatabase.* TO 'readonly'@'localhost';
 
</code>
 
  
 
== 12. Устранение неполадок ==
 
== 12. Устранение неполадок ==
Строка 299: Строка 210:
  
 
* '''Логи ошибок''':
 
* '''Логи ошибок''':
<code>
+
<code>sudo tail -f /var/log/mysql/error.log</code>
sudo tail -f /var/log/mysql/error.log
 
</code>
 
  
 
* '''Медленные запросы''':
 
* '''Медленные запросы''':
<code>
+
<code>sudo tail -f /var/log/mysql/slow.log</code>
sudo tail -f /var/log/mysql/slow.log
 
</code>
 
  
 
=== Сброс пароля root ===
 
=== Сброс пароля root ===
  
 
1. Остановите MariaDB:
 
1. Остановите MariaDB:
<code>
+
<code>sudo systemctl stop mariadb</code>
sudo systemctl stop mariadb
 
</code>
 
  
 
2. Запустите в безопасном режиме:
 
2. Запустите в безопасном режиме:
<code>
+
<code>sudo mysqld_safe --skip-grant-tables &</code>
sudo mysqld_safe --skip-grant-tables &
 
</code>
 
  
 
3. Подключитесь и сбросьте пароль:
 
3. Подключитесь и сбросьте пароль:
<code>
+
<code>mysql -u root</code>
mysql -u root
+
<code>UPDATE mysql.user SET password=PASSWORD('newpassword') WHERE User='root';</code>
UPDATE mysql.user SET password=PASSWORD('newpassword') WHERE User='root';
+
<code>FLUSH PRIVILEGES;</code>
FLUSH PRIVILEGES;
+
<code>EXIT;</code>
EXIT;
 
</code>
 
  
 
4. Перезапустите MariaDB:
 
4. Перезапустите MariaDB:
<code>
+
<code>sudo systemctl restart mariadb</code>
sudo systemctl restart mariadb
 
</code>
 
  
 
== Заключение ==
 
== Заключение ==

Версия 20:03, 14 октября 2025

Содержание

Установка и конфигурация MySQL/MariaDB

1. Подготовка системы

  • Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
  • Обновите систему до последней версии пакетов.

2. Установка MariaDB

Для Ubuntu/Debian

1. Обновите список пакетов: sudo apt update

2. Установите MariaDB сервер: sudo apt install mariadb-server mariadb-client

3. Запустите и включите автозапуск MariaDB: sudo systemctl start mariadb sudo systemctl enable mariadb

Для CentOS/RHEL/Fedora

1. Установите MariaDB: sudo yum install mariadb-server mariadb

  1. или для новых версий

sudo dnf install mariadb-server mariadb

2. Запустите и включите автозапуск: sudo systemctl start mariadb sudo systemctl enable mariadb

3. Первоначальная настройка безопасности

1. Запустите скрипт настройки безопасности: sudo mysql_secure_installation

2. Следуйте инструкциям:

  • Установите root пароль (рекомендуется)
  • Удалите анонимных пользователей (Y)
  • Запретите root вход удаленно (Y)
  • Удалите тестовую базу данных (Y)
  • Перезагрузите таблицы привилегий (Y)

4. Подключение к MariaDB

Подключение от root

1. Подключитесь к MariaDB: sudo mysql -u root -p

2. Введите пароль root пользователя.

Создание нового пользователя

1. В консоли MariaDB создайте нового пользователя: CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

2. Предоставьте все привилегии: GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost' WITH GRANT OPTION;

3. Обновите привилегии: FLUSH PRIVILEGES;

4. Выйдите из консоли: EXIT;

5. Создание базы данных

1. Подключитесь к MariaDB: mysql -u newuser -p

2. Создайте новую базу данных: CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

3. Выберите базу данных: USE mydatabase;

4. Создайте таблицу: CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );

6. Настройка конфигурации MariaDB

Основные параметры конфигурации

1. Отредактируйте файл конфигурации: sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

2. Настройте основные параметры: [mysqld] port = 3306 bind-address = 127.0.0.1 max_connections = 100 innodb_buffer_pool_size = 256M innodb_log_file_size = 64M query_cache_size = 32M query_cache_type = 1 local-infile = 0

3. Перезапустите MariaDB: sudo systemctl restart mariadb

7. Настройка удаленного доступа

Разрешение удаленного подключения

1. Отредактируйте файл конфигурации: sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

2. Измените bind-address: bind-address = 0.0.0.0

3. Создайте пользователя для удаленного доступа: CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;

4. Перезапустите MariaDB: sudo systemctl restart mariadb

Настройка файрвола

1. Разрешите MySQL трафик: sudo ufw allow 3306

8. Резервное копирование и восстановление

Создание резервной копии

1. Создайте резервную копию базы данных: mysqldump -u root -p mydatabase > backup.sql

2. Создайте резервную копию всех баз данных: mysqldump -u root -p --all-databases > full_backup.sql

Восстановление из резервной копии

1. Создайте новую базу данных: mysql -u root -p -e "CREATE DATABASE restored_db;"

2. Восстановите данные: mysql -u root -p restored_db < backup.sql

9. Мониторинг и оптимизация

Просмотр статуса

1. Подключитесь к MariaDB: mysql -u root -p

2. Просмотрите статус: SHOW STATUS;

3. Просмотрите процессы: SHOW PROCESSLIST;

Оптимизация производительности

1. Установите MySQLTuner: wget http://mysqltuner.pl/ -O mysqltuner.pl chmod +x mysqltuner.pl

2. Запустите анализ: ./mysqltuner.pl

10. Управление MariaDB

Основные команды управления

  • Запуск MariaDB:

sudo systemctl start mariadb

  • Остановка MariaDB:

sudo systemctl stop mariadb

  • Перезапуск MariaDB:

sudo systemctl restart mariadb

  • Проверка статуса:

sudo systemctl status mariadb

  • Проверка подключения:

mysql -u root -p -e "SELECT VERSION();"

11. Безопасность

Дополнительные настройки безопасности

1. Регулярно обновляйте MariaDB: sudo apt update && sudo apt upgrade mariadb-server

2. Настройте логирование: log-error = /var/log/mysql/error.log slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2

3. Ограничьте права пользователей: CREATE USER 'readonly'@'localhost' IDENTIFIED BY 'password'; GRANT SELECT ON mydatabase.* TO 'readonly'@'localhost';

12. Устранение неполадок

Просмотр логов

  • Логи ошибок:

sudo tail -f /var/log/mysql/error.log

  • Медленные запросы:

sudo tail -f /var/log/mysql/slow.log

Сброс пароля root

1. Остановите MariaDB: sudo systemctl stop mariadb

2. Запустите в безопасном режиме: sudo mysqld_safe --skip-grant-tables &

3. Подключитесь и сбросьте пароль: mysql -u root UPDATE mysql.user SET password=PASSWORD('newpassword') WHERE User='root'; FLUSH PRIVILEGES; EXIT;

4. Перезапустите MariaDB: sudo systemctl restart mariadb

Заключение

MariaDB успешно установлен и настроен! Теперь вы можете создавать базы данных и управлять ими.

Для размещения ваших проектов с базой данных на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой MariaDB и оптимизацией производительности вашей базы данных!