[РЕШЕНО] Пользователь с привилегиями root в базе данных MySQL

Добрый день, Форум!
Помогите пожалуйста разобраться с пользователями в MySQL

Описание проблемы:
Есть удаленный доступ к серверу, на нем установлен классический LAMP и поднят Firewall.
Насколько я знаю, работать под root'ом плохо и для этой цели я создал отдельного пользователя MySQL и пытаюсь предоставить ему полные права на MySQL

# Вхожу в MySQL под пользователем root
[skyrewir@ArchLinux ~]$ mysql -u root -p
# Ввожу пароль
Enter password:

# Попадаю в консоль MariaDB и создаю пользователя с паролем
MariaDB [(none)]> CREATE USER `skyrewir`@`localhost` IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.000 sec)

# Предоставляю пользователю полные права
MariaDB [(none)]> GRANT ALL ON * . * TO `skyrewir`@`localhost` IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.000 sec)

#Обновляю права
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.000 sec)

# Создаю тестовую базу
MariaDB [(none)]> CREATE DATABASE `test` DEFAULT CHARACTER SET utf8;
Query OK, 1 row affected (0.000 sec)

# Выхожу из пользователя root
MariaDB [(none)]> quit;
Bye

Дальше стараюсь работать от пользователя skyrewir, которому я предоставил права root

# Вхожу в MySQL под пользователем skyrewir
[skyrewir@ArchLinux ~]$ mysql -u skyrewir -p
# Ввожу пароль
Enter password:

# Попадаю в консоль MariaDB и создаю нового пользователя с полными правам на отдельную базу test
MariaDB [(none)]> CREATE USER `testuser`@`localhost` IDENTIFIED BY 'testuser';
Query OK, 0 rows affected (0.000 sec)

# Пытаюсь предоставить пользователю testuser полные права на базу test и получаю ошибку о Запрете доступа
MariaDB [(none)]> GRANT ALL ON `test` . *  TO `testuser`@`localhost` IDENTIFIED BY 'testuser';
ERROR 1044 (42000): Access denied for user 'skyrewir'@'localhost' to database 'test'

Помогите пожалуйста разобраться, объясните что я делаю не так, почему я не могу предоставить пользователю доступ на отдельную базу?

Дополнительно хотелось бы получить временный доступ к базе из сети Интернет, для этого я добавил правило в Firewall
Правильно ли я понял, что пользователя для доступа из вне необходимо создать вот так? Вместо @'localhost' нужно вписать @'%'

MariaDB [(none)]> CREATE USER `testuser`@`%` IDENTIFIED BY 'testuser';
Query OK, 0 rows affected (0.000 sec)

# Пытаюсь предоставить пользователю testuser полные права на базу test и получаю ошибку о Запрете доступа
MariaDB [(none)]> GRANT ALL ON `test` . *  TO `testuser`@`%` IDENTIFIED BY 'testuser';
ERROR 1044 (42000): Access denied for user 'skyrewir'@'localhost' to database 'test'

Спасибо за Ваши ответы!
Всем добра!
Вы создали базу от одного пользователя с его правами, а права пытаетесь менять уже от другого.
На счёт удалённого доступа на wiki всё очень подробно расписано, не вижу смысла переписывать.
Ошибки в тексте-неповторимый стиль автора©
indeviral
Вы создали базу от одного пользователя с его правами, а права пытаетесь менять уже от другого.
На счёт удалённого доступа на wiki всё очень подробно расписано, не вижу смысла переписывать.
Indeviral, спасибо за ответ!
Не могу разобраться как это работает, т.е я пытаюсь создать пользователя skyrewir@localhost для того, чтобы не работать из под пользователя root, предоставляю этому пользователю полные права на все базы данных внутри MySQL

# Предоставляю пользователю полные права
MariaDB [(none)]> GRANT ALL ON * . * TO `skyrewir`@`localhost` IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.000 sec)

Весь день смотрел права и только что наткнулся на вот это
ALL (admin) — пользователю, получившему данную привилегию, автоматически назначаются все права в рамках уровня привилегий (возможных привилегий в принципе, согласно контексту выдачи привилегий). Не назначается только привилегия GRANT OPTION в данном случае.
А привилегия GRAND OPTION отвечает за
GRANT OPTION — позволяет назначить конкретные права определенному пользователю (также и отобрать). Возможно дать/отобрать только те права, которыми назначающий сам располагает.
Т.е полный запрос для подмены пользователем root'а должен быть таким

GRANT ALL ON * . * TO `skyrewir`@`localhost` WITH GRANT OPTION;
FLUSH PRIVILEGES;
И по идеи, после этого я должен подменить учетную запись root'а своим пользователем и получить права на полное администрирование MySQL

Завтра попробую это сделать отпишусь о результате

Всем спасибо!
Нашел решение

GRANT ALL ON * . * TO `skyrewir`@`localhost` WITH GRANT OPTION;
FLUSH PRIVILEGES;

Всем спасибо за помощь!
 
Зарегистрироваться или войдите чтобы оставить сообщение.