0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【備忘録】WebAPサーバーからMariaDBへログインしたユーザにおいて権限付与ができない時の対処法

Last updated at Posted at 2021-10-17

#はじめに
WebAPサーバーからDBサーバーへログインし、データベース作成とユーザー作成を行い、ユーザへDBの操作権限を付与しようとした際にエラーが出た。この時の対処法を備忘録として残すために執筆する。
※筆者はあまりDBサーバーでの操作に慣れていない初心者です。

#前提
WebAPサーバーのIPアドレス:10.0.10.221
DBサーバーのプライベートIPアドレス:10.0.10.228

事前に、DBサーバー上で、WebAPサーバーからDBサーバーへrootユーザーでログインできるようにするために下記コマンドを実行していた。

GRANT ALL PRIVILEGES ON *.* TO root@10.0.10.221;

#問題
WebAPサーバーからDBサーバーへログインし、データベース作成とユーザー作成を行なった。
しかし、作成したユーザーへデータベースの権限を付与しようとすると下記の様なエラーがでてしまって権限の付与ができない。

 GRANT ALL ON 20211017_db.* TO '20211017_user'@'10.0.10.221';
ERROR 1044 (42000): Access denied for user 'root'@'10.0.10.221' to database '20211017_db'

##(参考)DB作成やユーザ作成の操作ログ

[root@ip-10-0-10-221 ~]# mysql -h 10.0.10.228 -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE 20211017_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> CREATE USER '20211017_user'@'10.0.10.221' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL ON 20211017_db.* TO '20211017_user'@'10.0.10.221';
ERROR 1044 (42000): Access denied for user 'root'@'10.0.10.221' to database '20211017_db'

#調査
・ユーザとDBの名前の入力ミスはないか?
→ない。

・お互いのサーバーのmysqlのバージョンの違いによるものか?
→同じバージョンのため、この可能性はない。

・DBサーバーで付与した権限が不十分ではないか?
→localhost (10.0.10.228)と10.0.10.221のrootユーザーで権限を比べると10.0.10.221には「with grant option」がないめ、この可能性がある。

MariaDB [(none)]> show grants for root@localhost;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec)

MariaDB [(none)]> show grants for root@10.0.10.221;
+-----------------------------------------------------+
| Grants for root@10.0.10.221                         |
+-----------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.0.10.221' |

#原因
DBサーバー(localhost)でWebAPサーバーへ権限を付与する際に、「with grant option」コマンドを実行しなかったため。
つまり、下記のコマンドを実行しただけでは、WebAPサーバーのrootユーザーでgrantコマンドを実行する事ができななかった。

GRANT ALL PRIVILEGES ON *.* TO root@10.0.10.221;

#実施
DBサーバー上(localhost)で「with grant option」をつけた状態で権限付与した。

GRANT ALL PRIVILEGES ON *.* TO root@10.0.10.221 WITH GRANT OPTION;

確認してみると、「with grant option」の権限が付与された

MariaDB [(none)]> show grants for root@10.0.10.221;
+-----------------------------------------------------------------------+
| Grants for root@10.0.10.221                                           |
+-----------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.0.10.221' WITH GRANT OPTION |
+-----------------------------------------------------------------------+

その後、WebAPサーバー上でDBへログインして権限付与をやってみるとエラーコードが出る事なく、無事に権限付与ができた。

[root@ip-10-0-10-221 ~]# mysql -h 10.0.10.228 -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 23
Server version: 5.5.68-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> GRANT ALL ON 20211017_db.* TO '20211017_user'@'10.0.10.221';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show grants for 20211017_user@10.0.10.221;
+------------------------------------------------------------------------------------------------------------------------+
| Grants for 20211017_user@10.0.10.221                                                                                   |
+------------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO '20211017_user'@'10.0.10.221' IDENTIFIED BY PASSWORD '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' |
| GRANT ALL PRIVILEGES ON `20211017_db`.* TO '20211017_user'@'10.0.10.221'                                              |
+------------------------------------------------------------------------------------------------------------------------+

#参考
https://qiita.com/yukibe/items/4ba2aa49510ab1f6b1f1

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?