Mysql 権限システムは非常に重要ですが、同時に多くの開発者や管理者が無視しているものでもあります。権力の分散が取り返しのつかない悲劇的な結果を招くだけではありません。私が以前働いていた会社では、データベースの権限はまったく考慮されておらず、開発者全員がオンライン システムに対して最高の権限を持っていました。考えてみてください。ある日、そのうちの 1 人がデータベースを削除したとしたら、非常に多くの人の中で誰がそれを行ったか知っていますか?したがって、誰もがそれに注意を払う必要があります。
一般的には、最高の権限を 1 人だけに与え、その人がマネージャーとして機能し、対応する権限を他の開発者に割り当てることをお勧めします。開発段階ではローカル ライブラリの方が適していますが、オンライン ライブラリの場合は、権限を付与するときに注意してください。
権限認証の原理
MySQL の権限認証は 2 つの側面を通じて認証されます。まず、ユーザーの IP、ユーザー名、パスワードが検証され、検証に合格したユーザーのみが MySQL に接続できます。接続すると、ユーザーが何らかの操作を実行すると、Mysql はその権限を検証し、その権限がある場合にのみ、ユーザーが要求した操作が実行されます。それ以外の場合は実行されません。
MySQL 権限の分類
MySQL 権限は、大きく次の 3 つのカテゴリに分類されます。
データ操作追加、削除、変更、確認など。
ライブラリの作成、テーブル構造の変更などの構造操作。
ユーザーの作成、権限の割り当てなどの管理権限。
Mysql 権限割り当ての原則
最小限の権限 (たとえば、ユーザー) を付与します。読み取り権限があり、1 つのテーブルのみを表示する必要がある場合は、すべてのテーブルに読み取り権限を割り当てないでください。権限を 1 つのテーブルのみに制限します。すべてのテーブルに読み取り権限を与える手間を恐れる必要はありません。
ユーザーを作成するときは、必ず IP アドレスを制限し、十分な強度のパスワードを設定してください。
不要なユーザーを定期的にクリーンアップし、不要な権限を再利用します。
#アカウント管理
##アカウントの作成 # #mysql ドキュメントでユーザーを作成するための構文は次のとおりです:
CREATE USER [IF NOT EXISTS] user [auth_option] [, user [auth_option]] ... [REQUIRE {NONE | tls_option [[AND] tls_option] ...}] [WITH resource_option [resource_option] ...] [password_option | lock_option] ...パラメータがたくさんありますが、心配しないで、時間をかけて例を見てください。まずは最小限のオプションでアカウントを作成します。
# 创建一个无需密码即可本地登录的用户 mysql> CREATE USER 'u1'@'localhost'; Query OK, 0 rows affected # 创建一个需要密码授权的用户,但不限制ip mysql> CREATE USER 'u2'@'%' identified by '321232'; # 注意,密码必须使用引号,单引号或双引号都行,但不加就出错。 # 如果不想使用明文的密码,可以使用password mysql> select password('111111'); +-------------------------------------------+ | password('111111') | +-------------------------------------------+ | *FD571203974BA9AFE270FE62151AE967ECA5E0AA | +-------------------------------------------+ 1 row in set mysql> CREATE USER 'u3'@'192.168.1.%' IDENTIFIED BY PASSWORD '*FD571203974BA9AFE270FE62151AE967ECA5E0AA'; Query OK, 0 rows affectedユーザー リストの表示
システム ユーザー リストは、mysql ライブラリのユーザー テーブルに保存されます。
mysql> SELECT user,host,account_locked FROM mysql.user;--------------- ------------- ----------------
| ユーザー | ホスト | アカウントロック | --------------- ------ ------- -------------
| root | localhost | N |
| mysql.session | localhost | Y |
| mysql .sys |ローカルホスト | Y |
| u1 | ローカルホスト | N |
| u2 | % | N | ローカルホスト | N |
| u3 | 192.168.1.% | N |
----- ------------------------ ---------------- --------------
7 行in set
ユーザーの削除
ユーザーを削除するための構文は次のとおりです。 DROP USER 用户名@ip;
次に、u2@ を削除しましょう。 '%'
mysql> drop user u2@'%'; Query OK, 0 rows affected
u2 ユーザーは削除されます。
ユーザー アカウントの変更
構文は次のとおりです: rename user old@'oldip' to new@'newip';
ケースは次のとおりです:
mysql> RENAME USER u1@localhost to user1@'127.0.0.1'; Query OK, 0 rows affected
認可
学完了如何创建账号及管理账号后,我们来看看如何给用户授权以及如何回收不需要的权限。 用户授权 给用户授权语法如下: 案例如下: 查看用户的权限 给用户授权后,我们来查看用户是否已经获得到了这些权限。 回收用户权限 当发现给与的权限多了,那么就应该及时回收这些权限。回收权限的语法和授权的语法非常像。GRANT 权限 ON 数据库名*表名 TO 用户名@ip;
mysql> GRANT SELECT ON *.* TO 'u1'@'localhost' ;
Query OK, 0 rows affected (0.00 sec)
-- 全局级别授权
mysql> GRANT ALL ON test.* TO 'u2'@'localhost';
Query OK, 0 rows affected (0.00 sec)
-- 数据库级别授权
mysql> GRANT ALL ON test.student TO 'u3'@'localhost' WITH GRANT OPTION;
-- 表级别授权
REVOKE 权限 ON 数据库*表 FROM 用户名@ip地址
以上がMySQL の権限とセキュリティ管理の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。