# Базы данных

# Установка и первоначальная настройка MySQL (Debian/Ubuntu)

Установка сервера баз данных MySQL:

```shell
sudo apt install mysql-server
```

Вход в интерфейс управления MySQL при помощи пользователя root

```
mysql -u root
```

Установка пароля на пользователя root

```SQL
USE mysql;<br></br>ALTER USER 'root'@'localhost' IDENTIFIED BY 'password';
```

# Создание базы данных MySQL и её пользователя (Debian/Ubuntu)

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

```SQL
CREATE DATABASE DataBaseName;
```

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

```SQL
CREATE USER 'user_name'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
```

Настройка пользователю всех прав на базу данных

```SQL
GRANT ALL PRIVILEGES ON DataBaseName . * TO 'user_name'@'%';
```

# Установка и первоначальная настройка MariaDB (Debian/Ubuntu)

Установка сервера и клиентские утилиты баз данных MariaDB:

```shell
sudo apt install mariadb-server && sudo apt install mariadb-client
```

Запуск утилиты настройки сервера баз данных:

```shell
mysql_secure_installation
```

Далее утилита попросит ввести пароль для root, после утилита спросит: Switch to unix\_socket authentication, выбираем ответ "y".

Следующие вопросы и ответы на них:

Change the root password? Т.к пароль на root уже был установлен – выбираем ответ "n".

Remove anonymous users? Отвечаем "y".

Disallow root login remotely? Отключаем удаленный доступ к руту, следовательно, выбираем ответ "y".

Remove test database and access to it? Удаляем тестовую базу данных, выбираем ответ "y".

Reload privilege tables now? Перезагружаем таблицу привилегий, выбираем ответ "y".

В файле /etc/mysql/mariadb.conf.d/50-server.cnf можно поменять bind-address c 127.0.0.1 на 0.0.0.0, чтобы другие компьютеры в сети могли подключиться к серверу баз данных.

# Создание базы данных MariaDB и её пользователя (Debian/Ubuntu)

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

```SQL
CREATE DATABASE DataBaseName;
```

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

```SQL
CREATE USER 'user_name'@'%' IDENTIFIED BY 'password';
```

Настройка пользователю всех прав на базу данных

```SQL
GRANT ALL PRIVILEGES ON DataBaseName . * TO 'user_name'@'%';
```