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

MySQL — самая популярная система управления реляционными базами данных с открытым исходным кодом. Сервер MySQL позволяет нам создавать множество пользователей и баз данных и предоставлять соответствующие привилегии, чтобы пользователи могли получать доступ к базам данных и управлять ими.

В этом руководстве объясняется, как использовать командную строку для создания и управления базами данных MySQL или MariaDB и пользователями.

Подготовка

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

Чтобы открыть приглашение MySQL, введите следующую команду и при появлении запроса введите пароль пользователя root MySQL:

mysql -u root -p

Создать новую базу данных MySQL

Чтобы создать новую базу данных MySQL, выполните следующую команду, просто замените database_name на имя базы данных, которую вы хотите создать:

CREATE DATABASE database_name;
Query OK, 1 row affected (0.00 sec)

Если вы попытаетесь создать базу данных, которая уже существует, вы увидите следующее сообщение об ошибке:

ERROR 1007 (HY000): Can't create database 'database_name'; database exists

Чтобы избежать ошибок, если база данных с тем же именем, которое вы пытаетесь создать, существует, вы можете использовать следующую команду:

CREATE DATABASE IF NOT EXISTS database_name;
Query OK, 1 row affected, 1 warning (0.00 sec)

В выходных данных выше Query OK означает, что запрос был успешным, а одно 1 warning сообщает нам, что база данных уже существует и новая база данных не была создана.

Список всех баз данных MySQL

Вы можете перечислить все базы данных , существующие на нашем сервере MySQL или MariaDB, с помощью следующей команды:

SHOW DATABASES;

Результат будет выглядеть примерно так:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| database_name      |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

Базы данных information_schema , mysql , performance_schema и sys создаются во время установки и хранят информацию обо всех других базах данных, конфигурации системы, пользователях, разрешениях и других важных данных. Эти базы данных необходимы для правильной работы установки MySQL.

Удалить базу данных MySQL

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

Чтобы удалить MySQL или MariaDB, в базе данных выполните следующую команду:

DROP DATABASE database_name;
Query OK, 0 rows affected (0.00 sec)

Если вы попытаетесь удалить несуществующую базу данных, вы увидите следующее сообщение об ошибке:

ERROR 1008 (HY000): Can't drop database 'database_name'; database doesn't exist

Чтобы избежать этой ошибки, вы можете использовать следующую команду:

DROP DATABASE IF EXISTS database_name;

Создайте новую учетную запись пользователя MySQL

Учетная запись пользователя в MySQL состоит из частей имени пользователя и имени хоста.

Чтобы создать новую учетную запись пользователя MySQL, выполните следующую команду, просто замените database_user именем пользователя, которого вы хотите создать:

CREATE USER 'database_user'@'localhost' IDENTIFIED BY 'user_password';

В приведенной выше команде мы установили часть имени хоста на localhost что означает, что этот пользователь сможет подключаться к серверу MySQL только с локального хоста (то есть из системы, в которой работает сервер MySQL). Если вы хотите предоставить доступ с другого хоста (ов), просто измените localhost на IP-адрес удаленного компьютера или используйте подстановочный знак '%' для части хоста, что означает, что учетная запись пользователя сможет подключаться с любого хоста.

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

CREATE USER IF NOT EXISTS 'database_user'@'localhost' IDENTIFIED BY 'user_password';
Query OK, 0 rows affected, 1 warning (0.00 sec)

Изменить пароль учетной записи пользователя MySQL

Синтаксис для изменения пароля учетной записи пользователя MySQL или MariaDB зависит от версии сервера, который вы используете в своей системе.

Вы можете узнать версию своего сервера, выполнив следующую команду:

mysql --version

Если у вас MySQL 5.7.6 и новее или MariaDB 10.1.20 и новее, для изменения пароля используйте следующую команду:

ALTER USER 'database_user'@'localhost' IDENTIFIED BY 'new_password';

Если у вас MySQL 5.7.5 и старше или MariaDB 10.1.20 и старше, используйте:

SET PASSWORD FOR 'database_user'@'localhost' = PASSWORD('new_password');

В обоих случаях результат должен выглядеть так:

Query OK, 0 rows affected (0.00 sec)

Список всех учетных записей пользователей MySQL

Вы можете перечислить все учетные записи пользователей MySQL или MariaDB , mysql.users таблицу mysql.users :

SELECT user, host FROM mysql.user;

Результат должен выглядеть примерно так:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| database_user    | %         |
| database_user    | localhost |
| debian-sys-maint | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
6 rows in set (0.00 sec)

Удалить учетную запись пользователя MySQL

Чтобы удалить учетную запись пользователя , используйте следующую команду:

DROP USER 'database_user@'localhost';

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

ERROR 1396 (HY000): Operation DROP USER failed for 'database_user'@'localhost'

То же, что и при работе с базами данных, чтобы избежать ошибки, вы можете использовать:

DROP USER IF EXISTS 'database_user'@'localhost';
Query OK, 0 rows affected, 1 warning (0.00 sec)

Предоставление разрешений учетной записи пользователя MySQL

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

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

GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';

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

GRANT ALL PRIVILEGES ON *.* TO 'database_user'@'localhost';

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

GRANT ALL PRIVILEGES ON database_name.table_name TO 'database_user'@'localhost';

Если вы хотите предоставить учетной записи пользователя только определенные привилегии для определенного типа базы данных:

GRANT SELECT, INSERT, DELETE ON database_name.* TO database_user@'localhost';

Отзыв разрешений учетной записи пользователя MySQL

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

REVOKE ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';

Показать права учетной записи пользователя MySQL

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

SHOW GRANTS FOR 'database_user'@'localhost';
+---------------------------------------------------------------------------+
| Grants for database_user@localhost                                        |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'database_user'@'localhost'                         |
| GRANT ALL PRIVILEGES ON `database_name`.* TO 'database_user'@'localhost'  |
+---------------------------------------------------------------------------+
2 rows in set (0.00 sec)

Выводы

Это руководство охватывает только основы, но оно должно стать хорошим началом для всех, кто хочет научиться управлять базами данных MySQL и пользователями из командной строки. Вы также можете проверить руководство о том, как сбросить пароль root MySQL, если вы его забыли.

Это все! Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Оставьте комментарий