1

ユーザー アクセス制御の問題に直面しています。より明確にするために、私が作成した mysql ユーザーは、私がアクセスを許可したテーブル以外のテーブルにアクセスできます。root として mysql にログインし、多くのデータベースがあり、データベース "test" には多くのテーブルがあり、そのうちの 1 つが "news" であるとします。「test.news」から「選択」値にのみアクセスできるユーザーを作成したいと思います。これはそれがどのように見えたかです:

mysql> grant select on test.news to 'new_user2'@'localhost' identified by 'XXXXXXX';
Query OK, 0 rows affected (0.00 sec)

フラッシュされた特権:flush privileges;

ここでログアウトし、new_user2 としてログインします。

/opt/lampp/bin/./mysql -u new_user2 -p 

そこにデータベースを見たい:

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.00 sec)

「root」アカウントには、new_user2 には見えない他のデータベースがあったという意味で、これは良いことでした。次に、テスト中のテーブルを見たいと思いました。そう-

use test;
show tables;

これは私にとって最初のショックです..「テスト」データベースにすべてのテーブルがありましたが、これは予期していませんでした。私が見たかったのは「ニュース」テーブルだけでした。それとも、データベース内の 1 つのテーブルへのアクセス権を与えられたすべてのユーザーが実際にすべてのテーブルを表示できるのは正常ですか?

2 度目のショックで、select *別のテーブル「ユーザー」に使用しました。これは本質的に「テスト」の別のテーブルであり、ユーザー テーブルのすべての内容を確認できました。

では、"new_user2" を作成し、test.news へのアクセスのみを許可した場合、どのようにして test.user にアクセスできるのでしょうか? select * from news正常に動作しています..

「テスト」データベースの他のすべてのテーブルへのアクセスを本当に制限しましたか? そうでない場合、どうすればよいですか?

わかった。これでは不十分であるかのように、'root' によって作成されたテーブルを実際に削除できます。

mysql> drop table member;
Query OK, 0 rows affected (0.42 sec)

これらは、ルートにログインしたときの「new_user2」@「localhost」の許可です...

mysql> SHOW GRANTS FOR 'new_user2'@'localhost';
+------------------------------------------------------------------------------------------------------------------+
| Grants for new_user2@localhost                                                                                   |
+------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'new_user2'@'localhost' IDENTIFIED BY PASSWORD '*XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' |
| GRANT SELECT ON `test`.`news` TO 'new_user2'@'localhost'                                                         |
+------------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

ここで基本的な何かが欠けているように感じます。これを助けてください。どうもありがとう。

4

0 に答える 0