NetTOOLSLib home page

GoУправление базами данных и пользователями MySQL или MarinaDB на Centos 7.html

В данной статье рассматриваются вопросы управления базами данныи и пользователями MySQL на компьютере с CentOS 7.
Для установки MySQL требуются права администратора.

Данная статье написана в расчете, что на сервере установлены MySQL или MarinaDB. Для выполнения команд требуются права администратора.

Для подключения к MySQL с командной строки выполните команду и введите пароль root:


#mysql -u root -p



Создание новой базу данных MySQL

Для создания новой базы данных выполните команду, dbexample замените именем своей базы:


CREATE DATABASE dbexample;

Query OK, 1 row affected (0,07 sec)



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


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



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


CREATE DATABASE IF NOT EXISTS dbexample;

Query OK, 1 row affected, 1 warning (0,00 sec)



Фраза 1 warning сообщает, что база уже существует.

Получение списка баз данных на сервере

Для получения списка баз данных MySQL или MariaDB необходимо выполнить команду:


SHOW DATABASES;

mysql> SHOW DATABASES;

+--------------------+
| Database |
+--------------------+
| dbexample |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
6 rows in set (0,00 sec)




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

Удаление базы данных

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


DROP DATABASE dbexample;

Query OK, 0 rows affected (0,03 sec)



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


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



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


DROP DATABASE IF EXISTS dbexample;

Query OK, 0 rows affected, 1 warning (0,00 sec)



Фраза 1 warning сообщает, что база отсутствует.

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

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

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


CREATE USER 'userexample'@'localhost' IDENTIFIED BY 'userpassword'

Query OK, 0 rows affected (0,06 sec)



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


ERROR 1396 (HY000): Operation CREATE USER failed for 'userexample'@'localhost'



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

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


CREATE USER IF NOT EXISTS 'userexample'@'localhost' IDENTIFIED BY 'userpassword';



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

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


mysql --version



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


ALTER USER 'userexample'@'localhost' IDENTIFIED BY 'new_userpassword';



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


SET PASSWORD FOR 'userexample'@'localhost' = PASSWORD('new_userpassword');



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


Query OK, 0 rows affected (0,09 sec)



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

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


SELECT user, host FROM mysql.user;

+------------------+-----------+
| user | host |
+------------------+-----------+
| userexample | localhost |
| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
5 rows in set (0,00 sec)




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

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


DROP USER 'userexample'@'localhost';

Query OK, 0 rows affected (0,04 sec)



При попытке удаления не существующей учетной записи будет выдано сообщение:


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



Для того чтобы избежать ошибку используйте команду:


DROP USER IF EXISTS 'userexample'@'localhost';



Ограничение привелегий пользователя MySQL

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

В статье рассмотрим несколько примеров:

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


GRANT ALL PRIVILEGES ON dbexample.* TO 'userexample'@'localhost';



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


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



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


GRANT ALL PRIVILEGES ON dbexample.table_name TO 'userexample'@'localhost';



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


GRANT SELECT, INSERT, DELETE ON dbexample.* TO userexample@'localhost';



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

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


REVOKE ALL PRIVILEGES ON dbexample.* TO 'userexample'@'localhost';



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

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


SHOW GRANTS FOR 'userexample'@'localhost';

+---------------------------------------------------------------------------+
| Grants for userexample@localhost |
+---------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'userexample'@'localhost' |
| GRANT ALL PRIVILEGES ON `dbexample`.* TO 'userexample'@'localhost' |
+---------------------------------------------------------------------------+
2 rows in set (0.00 sec)



Заключение

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

Go


NetTOOLSLib home page
(online network tools and utilities)