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

Управление базами данных MySQL или MariaDB и пользователями

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 :

 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, если вы его забыли.

Вот и всё! Если у вас есть вопросы или пожелания, смело оставляйте комментарии.

mysql mariadb

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *