Photo by Jan Antonin Kolar
Создать BD MyCQL из командной строки

Создать базу данных MySQL из командной строки

18.11.22
29.03.24

Не всегда есть возможность пользоваться более продвинутыми средствами администрирования типа Webmin, чтобы создать базу данных. Поэтому часто возникает необходимость создать базу данных MySQL из командной строки.

Собственно, всё просто. Для входа команда:

$ mysql -u root -p

где -u root имя пользователя и -p авторизация по паролю. После успешной авторизации вы увидите приглашение и можно приступать к созданию базы данных:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1620
Server version: 8.0.31-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> CREATE DATABASE database_name;

В конце точка с запятой обязательно. После чего создаём пользователя и пароль для него:

mysql> CREATE USER user_name@localhost IDENTIFIED BY 'password';

Пароль надо заключать в кавычки обязательно, localhost добавляем для привязки пользователя к локальному хосту для повышения безопасности. Если БД на другом сервере, то можно прописать сервер БД или убрать.

При попытки создания пароля может выскочить ошибка «ERROR 1819 (HY000): Your password does not satisfy the current policy requirements» — ваш пароль не удовлетворяет требованиям безопасности. Проверить можно командой

SHOW VARIABLES LIKE 'validate_password%';
+-------------------------------------------------+--------+
| Variable_name                                   | Value  |
+-------------------------------------------------+--------+
| validate_password.changed_characters_percentage | 0      |
| validate_password.check_user_name               | ON     |
| validate_password.dictionary_file               |        |
| validate_password.length                        | 8      |
| validate_password.mixed_case_count              | 1      |
| validate_password.number_count                  | 1      |
| validate_password.policy                        | MEDIUM |
| validate_password.special_char_count            | 1      |
+-------------------------------------------------+--------+

Далее, можно сменить какую-то политику:

SET GLOBAL validate_password.length = 6;
SET GLOBAL validate_password.special_char_count = 0;

Далее, выдадим привилегии этому пользователю:

mysql> GRANT ALL PRIVILEGES ON database_name.* TO user_name@localhost;

и в заключении, обновим привилегии:

mysql> FLUSH PRIVILEGES;

Проверить пользователей и привилегии

Лучше всего воспользоваться командой:

mysql> select host,db,user,select_priv from mysql.db;
+-----------+--------------------+---------------+-------------+
| host      | db                 | user          | Select_priv |
+-----------+--------------------+---------------+-------------+
| localhost | db_site1           | user1         | Y           |
| localhost | db_site2           | user2         | Y           |
+-----------+--------------------+---------------+-------------+
2 rows in set (0,00 sec)

если вместо host,db,user,select_priv поставить * то будет выведен полный список привилегий.

Импортировать данные в базу

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

mysql> USE database_name;
mysql> SOURCE /path_to_locatedatabase_data.sql

Экспортировать базу данных

Экспорт всей БД делается командой:

mysqldump -u user -p base_name > base_name.sql

Если объём большой можно пропустить сразу через архиватор:

mysqldump -u user -p base_name | gzip > base_name.sql.gz

Если надо экспортировать только одну таблицу:

mysqldump -u user -p base_name table_name > table_name.sql

Манипуляции с базой данных

Посмотреть список баз данных можно командой

mysql> SHOW DATABASES;

Посмотреть таблицы в базе данных:

mysql> USE bd_name;
mysql> SHOW TABLES;

Обнулить (очистить) какое-то поле таблицы:

mysql> USE bd_name;
mysql> UPDATE `table_name` SET `field_name` = '';

Или последняя команда может быть такая:

mysql> UPDATE `table_name` SET `field_name` = NULL;

выход \q