Создание (удаление) базы данных MySQL и пользователя из командной строки (BASH)

В этой статье рассмотрим, как создавать новые базы данных в MySQL из командной строки сервера, (а также BASH-скрипт для автоматического создания базы данных и пользователя MySQL на сервере).



Вход под root на MySQL-сервер

Для того, чтобы воспользоваться интерфейсом MySQL на удалённом сервере, необходимо сперва законнектится к серверу MySQL. В Debian это можно сделать командой mysql -uroot так, чтобы сразу войти в интерфейс с правами root. После удачного входа появится приветствие сервера MySQL и приглашение для ввода команд на языке MySQL:

root@server:~# mysql -uroot
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 15
Server version: 10.1.38-MariaDB-0+deb9u1 Debian 9.8

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

Выход в консоли из режима работы с MySQL-сервером

Для того, чтобы выйти из режима работы с MySQL-сервером в консоли нужно набрать команду exit:

MariaDB [(none)]> exit
Bye
root@server:~#

CREATE DATABASE — команда MySQL для создания базы данных

Для того, чтобы создать базу данных на сервере нужно воспользоваться командой MySQL CREATE DATABASE, введя после неё в `` название базы данных. Помним про синтаксис MySQL и после команды обязательно ставим ;:

MariaDB [(none)]> CREATE DATABASE `new_db`;
Query OK, 1 row affected (0.00 sec)

Более полная конструкция команды CREATE DATABASE:

CREATE DATABASE new_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • CHARACTER SET задаёт порядок сортировки.
  • COLLATE задаёт кодировку таблиц создаваемой базы данных.

Если при создании таблицы эти параметры не указываются, то кодировка и порядок сортировки вновь создаваемой таблицы берутся из значений, указанных для всей базы данных, которую мы и прописываем этой командой.

  • Если задан параметр CHARACTER SET, но не задан параметр COLLATE, то используется стандартный порядок сортировки.
  • Если задан параметр COLLATE, но не задан CHARACTER SET, то кодировку определяет первая часть имени порядка сортировки в COLLATE.
    • Кодировка, заданная в CHARACTER SET, должна поддерживаться сервером,
    • а порядок сортировки должен быть допустимым для текущей кодировки.
  • Если не заданы оба параметра, то берётся значение по умолчанию.

Как посмотреть настройки уже существующей базы данных

Для того, чтобы посмотреть настройки уже существующей базы данных необходимо выполнить команду SHOW CREATE DATABASE, указав имя базы данных, настройки которой нужно посмотреть:

MariaDB [(none)]> SHOW CREATE DATABASE `new_db`;
+----------+-----------------------------------------------------------------------------------------------+
| Database | Create Database                                                                               |
+----------+-----------------------------------------------------------------------------------------------+
| new_db   | CREATE DATABASE `new_db` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci */ |
+----------+-----------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

Как посмотреть список всех баз данных на сервере MySQL

Для того, чтобы вывести список всех баз данных на сервере MySQL нужно воспользоваться командой show databases:

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| new_db             |
+--------------------+
3 rows in set (0.00 sec)

Как удалить базу данных MySQL с сервера

Для удаления базы данных MySQL с сервера нужно воспользоваться командой DROP DATABASE и ввести имя удаляемой базы данных:

MariaDB [(none)]> DROP DATABASE `new_db`;
Query OK, 0 rows affected (0.00 sec)

CREATE USER — команда MySQL для создания пользователя базы данных

Для создания пользователя базы данных нужно воспользоваться командой CREATE USER:

MariaDB [(none)]> CREATE USER new_user;
Query OK, 0 rows affected (0.00 sec)

Для задания/изменения пароля пользователя базы данных нужно воспользоваться командой:

MariaDB [(none)]> UPDATE mysql.user SET Password=PASSWORD('tyt_parol') WHERE User='new_user';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

DROP USER — команда MySQL для удаления пользователя базы данных

Для того, чтобы удалить пользователя баз данных нужно выполнить команду DROP USER:

MariaDB [(none)]> DROP USER `new_user`;
Query OK, 0 rows affected (0.00 sec)

Простейший BASH-скрипт для создания новой базы данным MySQL с пользователем и паролем

Быстро создавать базы данных можно с помощью такого BASH-скрипта:

#!/bin/bash

mysql -uroot <<MYSQL_SCRIPT
CREATE DATABASE $1 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER '$1'@'localhost' IDENTIFIED BY '$2';
GRANT ALL PRIVILEGES ON $1.* TO '$1'@'localhost';
FLUSH PRIVILEGES;
MYSQL_SCRIPT

echo "MySQL database created."
echo "Database:   $1"
echo "Username:   $1"
echo "Password:   $2"

На входе этому скрипту нужно задать два параметра:

  1. Имя базы данных (у пользователя будет такое же имя)
  2. Пароль пользователя базы данных.

Пример работы такого скрипта create-mysql.sh при создании базы данных test c пользователем test и паролем 123:

root@server:~# ./create-mysql.sh test 123
MySQL database created.
Database:   test
Username:   test
Password:   123

Простейший BASH-скрипт для удаления базы данным MySQL с пользователем

Также можно создать BASH-скрипт для удаления базы данным MySQL с пользователем, имеющим такое же имя, что и база данных. Работает с одним параметром на входе:

#!/bin/bash

mysql -uroot <<MYSQL_SCRIPT
DROP DATABASE $1;
DROP USER '$1'@'localhost';
MYSQL_SCRIPT

echo "MySQL database and user deleted."
echo "Database:   $1"
echo "Username:   $1"

Резюме

Таким образом можно создавать и удалять базы данных MySQL и их пользователей на сервере, а также автоматизировать работу по их созданию и удалению.

Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню