---
description: MySQL — система управління базами даних.
---

# Встановлення

Після [встановлення Apache](../../linux/apache/install):

***

## **Встановлення MySQL**

```bash
sudo apt install mysql-server -y
```

### Якщо MySQL встановлюється для для локальної розробки

Щоб мати можливість заходити в MySQL через команду `sudo mysql` без введення root-пароля (корисно для локальної розробки), необхідно переконатися, що MySQL налаштований на використання **плагіна аутентифікації `auth_socket`** для користувача `root`. Ось кроки для налаштування:

***

#### 1. **Увійдіть у MySQL**

Запустіть MySQL під користувачем `root` за допомогою `sudo`:

```bash
sudo mysql
```

***

#### 2. **Перевірте плагін аутентифікації для `root`**

Виконайте SQL-запит, щоб перевірити, який плагін використовується для аутентифікації:

```sql
SELECT user, plugin, host FROM mysql.user WHERE user = 'root';
```

У стовпці `plugin` ви можете побачити поточний плагін. Найпоширеніші варіанти:

* `auth_socket`: дозволяє входити без пароля через `sudo mysql`.
* `mysql_native_password`: вимагає пароль для доступу.

***

#### 3. **Змініть плагін на `auth_socket` (якщо потрібно)**

Якщо `auth_socket` ще не використовується, змініть плагін:

```sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
FLUSH PRIVILEGES;
```

***

#### 4. **Вийдіть із MySQL**

```sql
EXIT;
```

***

#### 5. **Перевірте доступ**

Спробуйте підключитися до MySQL:

```bash
sudo mysql
```

Якщо все налаштовано правильно, ви повинні увійти без запиту пароля.

***

#### 6. **Повернення до пароля (якщо необхідно в майбутньому)**

Якщо вам знадобиться змінити плагін назад на парольну аутентифікацію, виконайте таку команду:

```bash
sudo mysql
```

```sql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ваш_пароль';
FLUSH PRIVILEGES;
```

Після цього для доступу до MySQL від імені root знову буде потрібен пароль:

```bash
mysql -u root -p
```

***

#### Примітка

Метод `auth_socket` зручний для локальної розробки, але **не рекомендується** для серверів у продакшні, оскільки він спрощує доступ до MySQL для користувачів із правами `sudo` на сервері.

### Якщо MySQL встановлюється на сервері

**Захист і налаштування MySQL:**

Після встановлення виконайте команду для базового налаштування безпеки:

```bash
sudo mysql_secure_installation
```

* Вас запитають про налаштування root-пароля, видалення анонімних користувачів, заборону віддаленого доступу root тощо.

**Перевірка статусу MySQL:**

```bash
sudo systemctl status mysql
```

**Запуск і автоматичне завантаження MySQL:**

```bash
sudo systemctl start mysql
sudo systemctl enable mysql
```

***

#### **Перевірка роботи MySQL**

Увійдіть у MySQL для тестування:

```bash
sudo mysql -u root -p
```

Виконайте просту команду:

```sql
SHOW DATABASES;
```

***

