Mysql create user with root privilege

Mysql create user with root privilege Техника

Тематические термины: MySQL, MariaDB.

В инструкции мы рассмотрим базовые аспекты работы с пользователями и рассмотрим некоторые примеры.

Содержание
  1. Создание пользователя и выдача прав
  2. 1. С помощью команды CREATE USER.
  3. 2. С помощью команды GRANT.
  4. Посмотреть существующих пользователей и их привилегии
  5. Смена пароля
  6. MySQL
  7. MariaDB
  8. Смена пароля пользователю root после установки
  9. MySQL < 8 или MariaDB
  10. MySQL 8 и выше
  11. Сброс пароля для root
  12. Доступ по сети
  13. Создание учетной записи
  14. Настройка сервера для работы по сети
  15. Настройка брандмауэра
  16. Проверка
  17. Примеры работы с пользователями
  18. 1. Особые права
  19. 2. Удаленное подключение
  20. 3. Права на резервное копирование
  21. 4. Права доступа к определенной таблице
  22. 5. Удаление пользователя
  23. 6. Права на создание других пользователей
  24. Возможные ошибки
  25. Введение
  26. Зачем нужны пользователи
  27. Пользователи MySQL
  28. Имя пользователя MySQL
  29. Просмотр всех пользователей
  30. Создание нового пользователя MySQL
  31. FLUSH PRIVILEGES
  32. Удаление пользователя MySQL
  33. Создание дополнительного суперпользователя
  34. Отзыв полномочий у пользователя
  35. Смена пароля
  36. Предоставление доступа пользователю MySQL
  37. Наследование привилегий
  38. Доступ к таблице
  39. Доступ к столбцу
  40. Просмотр привилегий пользователей MySQL
  41. Проверка текущих полномочий пользователя
  42. Проверка полномочий к данным
  43. Просмотр привилегий через системную БД mysql
  44. Просмотр глобальных привилегий
  45. Заключение
  46. Создание облачного сервера
  47. Подготовка системы
  48. Подключение по SSH
  49. Настройка брандмауэра в Ubuntu
  50. Установка MySQL
  51. Начальная настройка MySQL
  52. Настройка аутентификации и управление пользователями
  53. Аутентификация по паролю
  54. Дополнительный пользователь (опционально)
  55. Тестирование MySQL
  56. Удаление MySQL
  57. How to Grant Permissions in MySQL
  58. MySQL User Management
  59. How to List MySQL User Account-Privileges
  60. How to Grant All Privileges on a Database in MySQL
  61. Revoke Privileges MySQL User Account
  62. Remove an Entire User Account
  63. Access MariaDB Server
  64. Grant Privileges to MariaDB User
  65. Remove MariaDB User Account

Создание пользователя и выдача прав

Рассмотрим два варианта создания учетных записей в СУБД MySQL/MariaDB.

1. С помощью команды CREATE USER.

Данный метод является универсальным. Он позволяет создать пользователя в системе без каких либо прав. После права назначаются командой GRANT.

Пример создания учетной записи:

После можно задать права командой:

> GRANT <тип привилегий> ON <объект> TO <пользователь> <дополнительные опции>;

  • ALL PRIVILEGES — предоставляет полные права на использование данных.
  • *.* — права предоставляются на все базы и все таблицы.
  • dbuser — имя учетной записи.
  • localhost — доступ для учетной записи будет предоставлен только с локального компьютера.

2. С помощью команды GRANT.

Например, эта команда предоставляет права доступа пользователю и, если его не существует, создает его:

  • ALL PRIVILEGES — предоставляет полные права на использование данных.
  • *.* — права предоставляются на все базы и все таблицы.
  • dbuser — имя учетной записи.
  • localhost — доступ для учетной записи будет предоставлен только с локального компьютера.
  • password — пароль, который будет задан пользователю.
  • WITH GRANT OPTION — будут предоставлены дополнительные права на изменение структуры баз и таблиц.

Посмотреть существующих пользователей и их привилегии

Список привилегий (для кажого пользователя смотряться отдельно):

Смена пароля

Команды отличаются в зависимости от версии СУБД.

MySQL

Версия 5.7.6 и более современная:

Версия 5.7.5 и древнее:

* посмотреть версию СУБД можно командой mysql -V.

MariaDB

В MariaDB команда для смены пароля одна, независимо от версии:

* в данном примере будет задан пароль New_Password для пользователя root.

Смена пароля пользователю root после установки

Для старых версий СУБД и новых процедуры различаются.

MySQL < 8 или MariaDB

Первый раз пароль задается из командной строки операционной системы (для MySQL/MariaDB):

Для смены пароля root необходимо выполнить команду в оболочке mysql по инструкции, описанной выше.

MySQL 8 и выше

Пароль создается автоматически при установке системы. Его можно посмотреть командой:

grep ‘password’ /var/log/mysqld.log

Мы увидим что-то на подобие:

* где oi25?wznro%W — пароль для пользователя root.

Заходим в оболочку sql с помощью данного пароля:

и меняем его.

Сброс пароля для root

При необходимости, мы можем сбросить пароль для суперпользователя mysql. Для этого необходимо запустить сервер баз данных в безопасном режиме и ввести команду на смену пароля.

Для начала необходимо остановить сервис:

systemctl stop mysql

systemctl stop mariadb

Создаем каталог /var/run/mysqld и зададим для него нужные права:

mkdir -p /var/run/mysqld

chown mysql:mysql /var/run/mysqld

* в некоторых системах данного каталога может не быть, однако, для безопасного режима mysql он необходим.

Запускаем в безопасном режиме СУБД:

mysqld_safe —skip-grant-tables &

Запускаем оболочку sql — система не потребует пароль:

Выполняем запрос FLUSH PRIVILEGES:

> FLUSH PRIVILEGES;

Меняем пароль вышеописанным способом.

Выходим из оболочки:

Уничтожаем процесс, который запустили ранее:

После, запускаем mysql в нормальном режиме:

systemctl start mysql

systemctl start mariadb

Доступ по сети

Для успешного подключения к СУБД по сети нам нужно выполнить 3 условия:

  1. Создать правильную учетную запись.
  2. Сервер баз данных должен слушать сетевые запросы.
  3. Правила брандмауэра не должны блокировать доступ по порту mysql (по умолчанию 3306).

Рассмотрим выполнение данных условий по-очереди.

Создание учетной записи

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

Для этого используем вместо IP знак %:

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

* в этом случае мы получим доступ с любого компьютера в сети 192.168.0.0/24.

Не забываем данному пользователю предоставить привилении:

Настройка сервера для работы по сети

Проверить, на каком сетевом интерфейсе слушает сервер можно командой:

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

* обратите внимание, что наш сервер слушает на адресе 127.0.0.1, что означает обработку только локальных запросов.

Открываем конфигурационный файл. Раньше он находился по пути /etc/my.cnf, но теперь данный файл не содержит настроек, а просто подгружает конфигурационные файлы из каталога /etc/my.cnf.d. В зависимости от СУБД и ее версии, файлы настройки могут находиться в разных местах последнего, например:

Откроем его и задачим значение для опции bind-address:

bind-address            = 0.0.0.0

* в данном примере мы разрешаем серверу слушать на любом адресе (0.0.0.0). Если нужно ограничить конкретным, то просто впишите его.

systemctl restart mysql

Настройка брандмауэра

В зависимости от утилиты управления правилами фаервола, наши действия будут отличаться.

а) Для iptables (как правило, в системах на основе deb):

Дополнительно:  Root User in Ubuntu- Important Things You Should Know

iptables -I INPUT -p tcp —dport 3306 -j ACCEPT

Чтобы сохранить правила, можно использовать iptables-persistent:

б) Для firewalld (как правило, в системах на основе rpm):

firewall-cmd —permanent —add-port=3306/tcp

Проверка

Можно пробовать подключаться. Пример команды для подключения клиентом mysql к удаленному серверу:

Примеры работы с пользователями

Рассмотрим часто встречаемые операции по работе с пользователями сервера баз данных.

1. Особые права

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

2. Удаленное подключение

Разрешение на удаленное подключение и использование базы MySQL:

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

* в данном примере мы разрешим подключение для любого узла из сети 192.168.0.0/24.

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

3. Права на резервное копирование

Создание учетной записи MySQL с правами создания резервных копий:

4. Права доступа к определенной таблице

По сути, это такое же предоставление прав, но с указанием конкретной таблицы после базы:

* в данном примере предоставлены все права на таблицу table1 в базе base1.

5. Удаление пользователя

Нам может также понадобиться удалить ранее созданного пользователя. Это делается в два этапа:

6. Права на создание других пользователей

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

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

Если нужно, чтобы из под данной учетной записи можно было также назначать права, добавим:

* обратите внимание, что мы просто добавили WITH GRANT OPTION.

Возможные ошибки

1. ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

Причина: в новых версиях по умолчанию активированы политики на проверку сложности пароля. Их список можно посмотреть командой:

> SHOW VARIABLES LIKE ‘validate_password%’;

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

  • validate_password_check_user_name — пароль не должен совпадать с именем пользователя.
  • validate_password_dictionary_file — использовать специальный файл со словарем запрещенных паролей.
  • validate_password_length — минимальная длина пароля.
  • validate_password_mixed_case_count — сколько, как минимум, должно быть символов в малой и большой раскладках.
  • validate_password_number_count — какое минимальное количество цифр использовать в пароле.
  • validate_password_policy — позволяет задать определенный набор правил. Доступны значения LOW (или 0), MEDIUM (1), STRONG (2).
  • validate_password_special_char_count — минимальное количество специальных символов (например, # или !).
  1. Привести пароль в соответствие требованиям политик.
  2. Отключить политику, которая не позволяет использовать желаемый пароль. Например, чтобы отключить требование использовать цифры вводим:

> SET GLOBAL validate_password_number_count = 0;

2. ERROR 1728 (HY000): Cannot load from mysql.tables_priv. The table is probably corrupted

Причина: система считает, что таблица tables_priv в базе mysql неисправна.

Решение: чаще всего, ошибка возникает при переносе баз с одного сервера в другой. Если версии СУБД разные, таблица tables_priv может работать со сбоями. Для исправления необходимо выполнить команду mysql_upgrade — она проверяет все таблицы на совместимость с текущей версией MySQL/MariaDB и вносит исправления. Применение команды:

mysql_upgrade -u root -p

3. ERROR 1290 (HY000): The MySQL server is running with the —skip-grant-tables option so it cannot execute this statement

Ошибка появляется при попытке посмотреть права пользователя, поменять привилегии, создать новую роль.

Причина: СУБД загружена в режиме skip-grant-tables — без загрузки таблиц разрешений.

Решение: открываем конфигурационный файл СУБД. Это может быть:

И комментируем ее:

systemctl restart mysql

Введение

В статье речь пойдет о работе с пользователями открытой реляционной системы управления базами данных (СУБД) MySQL, появившейся в 1994 году. В 2008 году Sun Microsystems купил MySQL AB, а в 2010 уже Sun была поглощена Oracle. Эти продажи побудили авторов исходной СУБД создать форк — MariaDB, свободный от лицензионных ограничений текущего владельца и совместимый с Oracle MySQL. Помимо «Марии» известен другой форк, Percona, — от Петра Зайцева и Вадима Ткаченко. Оба форка совместимы с MySQL.

БД от Percona обладает дополнительными функциями, направленными на повышение производительности. Многие дистрибутивы (например, Red Hat) перешли на MariaDB из-за предсказуемой лицензионной политики. В своих проектах автор использует MariaDB.

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

Зачем нужны пользователи

После установки MySQL технически мы можем подключаться из нашего ПО от имени root’а, но это не безопасно. Работая с информационными системами, мы всегда должны помнить и соблюдать принцип наименьших привилегий. Для более безопасной работы и создаются пользователи БД. Привилегии должны быть предоставлены пользователю строго только те, что действительно необходимы.

Администратору MariaDB в работе требуется создавать учетные записи «обычных» пользователей с ограниченным доступом к данным, определять права доступа, при необходимости — создавать дополнительных (привилегированных) суперпользователей. Также важно проводить аудит — просматривать выданные полномочия и корректировать их по мере необходимости.

Пользователи MySQL

Имя пользователя MySQL

В MySQL имя пользователя состоит из 2-х частей: имени пользователя (обязательно) и хоста (может быть опущена, тогда она означает ‘%’):

Примеры записи хоста:

somehost.example.com
localhost
127.0.0.1
::1
192.168.123.%
192.168.123.0/255.255.255.0
%

Примечание: имена и адреса следует указывать в том формате, в каком возвращает системный DNS resolver сервера.

Просмотр всех пользователей

Давайте проверим, какие пользователи есть в нашей БД. Выведем основную информацию о пользователях:

SELECT host, user, password, password_expired FROM mysql.user;

Когда список получается большим, мы можем добавить фильтр (в примере — по хостам, начинающимся с msk):

SELECT host, user, password FROM mysql.user WHERE host LIKE 'msk%';

Или использовать в конце модификатор \G, оптимизирующий вывод для отображения в консоли:

SELECT host, user, password FROM mysql.user\G;
SELECT * FROM mysql.user[\G];

Создание нового пользователя MySQL

Новый пользователь в MySQL добавляется командой:

CREATE USER 'some_user'@'somehost.somedomain' IDENTIFIED BY 'some_password';

Теперь давайте создадим нашего первого пользователя:

CREATE USER 'test'@'localhost' IDENTIFIED BY 'secret';
FLUSH PRIVILEGES;

Полезная возможность — добавление комментария:

CREATE USER 'test'@'localhost' COMMENT 'My 1st user for app';

FLUSH PRIVILEGES

Удаление пользователя MySQL

Для удаления пользователя используется команда

DROP USER 'some_user'@'somehost.somedomain';

На нашем предыдущем примере:

DROP USER 'test'@'localhost';
FLUSH PRIVILEGES;

Создание дополнительного суперпользователя

Это не лучшая практика, но бывают ситуации, когда у СУБД несколько хозяев и всем нужно быть суперпользователями. В MySQL добавить пользователя с root-правами можно так:

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Отзыв полномочий у пользователя

Команда отзыва привилегий функционально обратна GRANT, “TO” заменяется на “FROM”:

REVOKE SELECT ON `somedb`.* FROM 'someuser'@'somehost';
REVOKE ALL PRIVILEGES ON `somedb`.* FROM 'someuser'@'somehost';
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'someuser'@'somehost';

Смена пароля

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

Предоставление доступа пользователю MySQL

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

GRANT SELECT ON `some_db`.* TO 'some_user'@'somehost.somedomain';
FLUSH PRIVILEGES;

Создадим пользователя и БД (часто БД называют схемой, в терминах MySQL):

CREATE SCHEMA test_DB;
CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'secret';

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

GRANT SELECT ON `test_db`.* TO 'test_user'@'localhost';
FLUSH PRIVILEGES;

Наследование привилегий

В предыдущем примере наш пользователь сможет только читать данные из базы test_db, но передать свои права другому пользователю не сможет. Используя GRANT OPTION, мы можем позволить ему сделать это. Тогда пользователь получит возможность передавать другим то, что разрешено ему самому.

GRANT SELECT, INSERT, UPDATE, DELETE ON `some_db`.* TO 'some_user'@'somehost' WITH GRANT OPTION;

Из соображений безопасности использовать GRANT OPTION небезопасно! В случае компрометации учетной записи злоумышленник сможет не только получить доступ к данным, но и сделать закладку в виде копии учетной записи. 

Дополнительно:  Root fly iq4514

Доступ к таблице

Примеры выше дают доступ ко всей БД. Часто доступ должен быть ограничен строго определенным набором таблиц:

GRANT SELECT ON `test_db`.`table_users` TO 'test_user'@'localhost';

Выполнение команды приведет к ошибке, т.к. этой таблицы еще нет.

CREATE TABLE `test_db`.`table_users` (id INT AUTO_INCREMENT PRIMARY KEY, user_name VARCHAR(16) NOT NULL, password VARCHAR(32));

и повторим предоставление доступа:

GRANT SELECT ON `test_db`.`table_users` TO 'test_user'@'localhost';

Доступ к столбцу

Предоставляется перечислением столбцов:

GRANT SELECT (id, user_name), UPDATE (user_name) ON `test_db`.`table_users` TO 'test_user'@'localhost';

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

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

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

Проверка текущих полномочий пользователя

Нам пригодится команда:

SHOW GRANTS FOR 'someuser'@'somehost.somedomain';
SHOW GRANTS FOR 'appuser'@'srv14.example.com';
+--------------------------------------------------------------------------------------------------------------------------------+
| Grants for appuser@srv14.example.com	|
+--------------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'appuser'@'srv14.example.com' IDENTIFIED BY PASSWORD '*F4E0A7F0B10264F70558CF07A4ABD4E041182D6E' |
| GRANT SELECT ON `net_database`.* TO 'appuser'@'srv14.example.com'	|
+--------------------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

Проверка полномочий к данным

Через read-only БД information_schema доступно множество метаданных — системной информации. Информация о доступе на БД (схемы), таблицы и столбцы доступны в таблицах schema_privileges, table_privileges и column_privileges. Работа с ними — обычные SQL-запросы:

SELECT * FROM information_schema.schema_privileges;
SELECT * FROM information_schema.table_privileges;
SELECT * FROM information_schema.column_privileges;
SELECT * FROM information_schema.column_privileges WHERE GRANTEE="'test_user'@'localhost'";
MariaDB [information_schema]> select * from information_schema.column_privileges WHERE GRANTEE="'test_user'@'localhost'";
+-------------------------+---------------+--------------+------------+-------------+----------------+--------------+
| GRANTEE	| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | PRIVILEGE_TYPE | IS_GRANTABLE |
+-------------------------+---------------+--------------+------------+-------------+----------------+--------------+
| 'test_user'@'localhost' | def	| test_db	| table_usr | id	| INSERT	| NO	|
| 'test_user'@'localhost' | def	| test_db	| table_usr | user_name | UPDATE	| NO	|
+-------------------------+---------------+--------------+------------+-------------+----------------+--------------+
2 rows in set (0.001 sec)

Просмотр привилегий через системную БД mysql

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

Информация о пользователях:

SELECT * FROM mysql.user;

Привилегии на базы данных:

SELECT * FROM mysql.db;

Права, назначенные на таблицы:

SELECT * FROM mysql.tables_priv;

И на столбцы:

 SELECT * FROM mysql.columns_priv;

Просмотр глобальных привилегий

Глобальные полномочия смотрим здесь:

SELECT * FROM information_schema.user_privileges;

Заключение

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

Всем высоких скоростей, безаварийной работы и долгого аптайма!

MySQL — это реляционная СУБД, которая использует язык запросов SQL. В инструкции мы рассмотрим, как запустить MySQL на Ubuntu 20.04. Для этого нам потребуется облачный сервер.

Создание облачного сервера

Создать облачный сервер с операционной системой Ubuntu 20.04 можно в Облачной платформе Selectel.

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

Mysql create user with root privilege

В качестве источника выберите в списке Ubuntu 20.04.

Mysql create user with root privilege

Сконфигурировать сервер можно любым образом, подробнее о настройках в Базе знаний.

Mysql create user with root privilege

Подготовка системы

Перед установкой MySQL сервер нужно подготовить: подключиться к нему по SSH и настроить брандмауэр с помощью UFW.

Подключение по SSH

Для подключения по SSH в терминале локальной машины введите:

ssh root@server_ip

Пароль для root-пользователя, который требуется при аутентификации, можно найти на вкладке Консоль.

Настройка брандмауэра в Ubuntu

После подключения настройте брандмауэр так, чтобы он разрешал подключения к серверу по SSH.

Обновите индекс пакетов:

sudo apt update

Установите утилиту UFW для настройки брандмауэра:

sudo apt install ufw

Проверьте список профилей UFW:

sudo ufw app list

В списке должен быть указан OpenSSH:

Available applications: OpenSSH

Разрешите подключения по SSH:

sudo ufw allow OpenSSH
sudo ufw enable

Убедитесь, что брандмауэр активен, и включены профили OpenSSH:

sudo ufw status

Вывод будет выглядеть так:

Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6) 

Теперь можно переходить к установке и настройке MySQL на облачном сервере.

Установка MySQL

Установить MySQL на Ubuntu 20.04 можно через пакет:

sudo apt install mysql-server

На момент публикации инструкции по умолчанию ставится версия 8.0.23.

Вы можете проверить установленную версию:

mysql --version

Начальная настройка MySQL

Запустите скрипт для повышения безопасности MySQL:

sudo mysql_secure_installation

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

Если вы хотите установить этот плагин, введите в консоли y или Y.

Есть три уровня защищенности пароля: LOW (0), MEDIUM (1) и STRONG (2). Чтобы задать уровень пароля, нажмите соответствующую цифру, например, 2 для сильного пароля. Даже если вы на предыдущем шаге не установили плагин, система запросит вас поставить пароль для пользователя root — введите его два раза.

Если плагин установлен, будет показан уровень надёжности пароля Estimated strength of the password.

Далее система задаст ряд вопросов: хотите ли вы использовать этот пароль для продолжения работы, удалить ли всех анонимных пользователей, запретить удаленно подключаться как root, удалить тестовую БД и доступ к ней, перезагрузить таблицы с привилегиями. Вы можете ответить на все эти вопросы положительно: y, Y или Enter.

Если в выводе появится All done!, то пароль для root успешно настроен.

Дополнительно:  Download Root Explorer for PC on Windows 7, 10, 8.1, 8 and Mac OS

По умолчанию вход в MySQL в Ubuntu не будет происходить по паролю. Чтобы настроить подключение через пароль, следуйте инструкции ниже.

Настройка аутентификации и управление пользователями

Аутентификация по паролю

Для root-пользователя аутентификация в MySQL происходит с использованием плагина auth_socket. Чтобы при подключении запрашивался пароль, нужно изменить плагин.

Войдите в оболочку MySQL:

sudo mysql

Посмотрите, какой плагин используется:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Для пользователя root используется auth_socket:

Mysql create user with root privilege

Назначьте пользователю root новый плагин caching_sha2_password. Также установите пароль того уровня надежности, который вы задали ранее (на шаге Базовая настройка MySQL) — это может быть, например, тот же самый пароль. Введите его вместо password:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
mysql> FLUSH PRIVILEGES;

Проверьте, что для пользователя root плагин изменился на caching_sha2_password:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;

Закройте командную строку MySQL:

mysql> exit

Дополнительный пользователь (опционально)

Вы можете создать дополнительного пользователя для работы с MySQL.

Если вы установили аутентификацию по паролю, изменилась команда для подключения к консоли MySQL:

mysql -u root -p

Если у вас не установлена аутентификация по паролю, то для входа в MySQL используйте:

sudo mysql

Создайте нового пользователя и поставьте пароль:

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

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

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

Закройте консоль MySQL:

mysql> exit

Тестирование MySQL

Посмотрите статус MySQL:

systemctl status mysql

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

● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2021-03-22 09:57:07 UTC; 2h 39min ago Main PID: 2630 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 1107) Memory: 331.4M CGroup: /system.slice/mysql.service └─2630 /usr/sbin/mysqld

По какой-то причине сервис может быть не активен. В таком случае запуск MySQL в Ubuntu происходит через команду:

sudo systemctl start mysql
sudo mysqladmin version -u root -p

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

mysqladmin Ver 8.0.23-0ubuntu0.20.04.1 for Linux on x86_64 ((Ubuntu))
Copyright (c) 2000, 2021, 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.
Server version	8.0.23-0ubuntu0.20.04.1
Protocol version	10
Connection	Localhost via UNIX socket
UNIX socket	/var/run/mysqld/mysqld.sock
Uptime:	2 hours 47 min 34 sec
Threads: 2 Questions: 28 Slow queries: 0 Opens: 141 Flush tables: 3 Open tables: 60 Queries per second avg: 0.002

Удаление MySQL

Если по какой-то причине вам нужно удалить MySQL из Ubuntu 20.04, сначала остановите сервисы:

sudo systemctl stop mysql

Удалите пакеты MySQL:

sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*

Удалите всех пользователей:

sudo deluser --remove-home mysql
sudo delgroup mysql

Удалите файлы базы данных, конфигурационные файлы и логи:

sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql

Удалите оставшиеся зависимости:

sudo apt-get autoremove
sudo apt-get autoclean
  • A Linux server with MySQL or MariaDB installed and running
  • Access to the MySQL root user credentials
  • Access to a terminal window/command-line (Ctrl-Alt-T / Ctrl-Alt-F2)
sudo mysql –u root –p

2. Type in the root password for this account and press Enter.

The prompt should change to show that you are in the mysql> shell.

CREATE USER 'username' IDENTIFIED BY 'password';
  • If you are working on the machine with MySQL, use username@localhost to define the user.
  • If you are connecting remotely, use username@ip_address, and replace ip_address with the actual address of the remote system hosting MySQL.

Therefore, the command will be:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
CREATE USER 'username'@'ip_address' IDENTIFIED BY 'password';
CREATE USER 'username'@'%' IDENTIFIED BY 'password';

How to Grant Permissions in MySQL

  • All Privileges: The user account has full access to the database
  • Insert: The user can insert rows into tables
  • Delete: The user can remove rows from tables
  • Create: The user can create entirely new tables and databases
  • Drop: The user can drop (remove) entire tables and databases
  • Select: The user gets access to the select command, to read the information in the databases
  • Update: The user can update table rows
  • Grant Option: The user can modify other user account privileges
GRANT permission_type ON database.table TO 'username'@'localhost';
GRANT INSERT ON *.* TO 'username'@'localhost';

You can replace the privilege level according to your needs. Run the command for each privilege you wish to grant.

GRANT INSERT *database_name.table_name* TO 'username'@'localhost';

MySQL User Management

How to List MySQL User Account-Privileges

SHOW GRANTS FOR username;

How to Grant All Privileges on a Database in MySQL

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

Revoke Privileges MySQL User Account

REVOKE permission_type ON database.table TO 'username'@'localhost';

Remove an Entire User Account

DROP USER 'username'@'localhost';
  • Access to command line/terminal window
  • A user account with sudo privileges
  • A working instance of MariaDB

Access MariaDB Server

sudo mysql -u root
sudo mysql -u root -p

Enter your password and access the MariaDB client.

MariaDB shell successfully accessed
CREATE DATABASE 'yourDB';

Access a list of existing databases by typing this command:

SHOW DATABASES;

The database we just created is on the list.

new mariadb database is now available.
CREATE USER 'user1'@localhost IDENTIFIED BY 'password1';

In this case, we use the ‘localhost’ host-name and not the server’s IP. This practice is commonplace if you plan to SSH in to your server, or when using the local client to connect to a local MySQL server.

SELECT User FROM mysql.user;

Grant Privileges to MariaDB User

GRANT ALL PRIVILEGES ON *.* TO 'user1'@localhost IDENTIFIED BY 'password1';
GRANT ALL PRIVILEGES ON 'yourDB'.* TO 'user1'@localhost;

It’s crucial to refresh the privileges once new ones have been awarded with the command:

FLUSH PRIVILEGES;
SHOW GRANTS FOR 'user1'@localhost;

The information provided by the system is displayed on the terminal.

Remove MariaDB User Account

DROP USER 'user1'@localhost;

Оцените статью
Master Hi-technology