この記事では、例を使用して、MySQL ユーザー権限を確認および管理する方法を説明します。ご参考までに、詳細は以下の通りです。 1.MySQLの権限は2段階で検証されます 1. サーバーは、接続が許可されているかどうかを確認します: ユーザー名、パスワード、ホスト アドレス。 2. 各リクエストに実装権限があるかどうかを確認します。 2.MySQL権限リスト
3.MySQLユーザー権限管理操作 1. 権限クエリ: (1)すべてのmysqlユーザーとその権限を表示します。 mysql.user\G から * を選択します。 (フォーマット表示) (2)現在のMySQLユーザー権限を表示します。 助成金を表示する。 (3)ユーザーの権限を表示する: username@host の許可を表示します。 例: root@localhost の権限を表示します。 2. MySQLユーザーを作成します。 方法 1: create user コマンドを使用してアカウントを作成します。 'password' で識別されるユーザー 'username'@'host' を作成します。 例: 'wujuntian' によって識別されるユーザー 'wjt'@'localhost' を作成します。 方法 2: ユーザー レコードを mysql.user テーブルに直接挿入します。 例: 次のようにコードをコピーします。 mysql.user に挿入し、user='wujuntian'、host='localhost'、password=password('123123') を設定します。 知らせ: 方法 2 を使用する場合は、必ずフラッシュ権限を実行して権限を更新してください。次に、MySQL 5.7 以降では、mysql.user テーブルのパスワード フィールドが authentication_string に置き換えられたため、「password」を「authentication_string」に変更し、パスワードを password 関数を使用して暗号化する必要があります。 3. MySQLユーザーの削除: ユーザー 'username'@'host' を削除します。 4.Mysqlユーザーに権限を付与します。 新しく作成されたユーザーにはデフォルトでは権限がないため、 grant コマンドを使用して権限を付与する必要があります。 助成金指示書の完全な形式は次のとおりです。 'password' で識別される 'user name'@'host' に、データベース名。テーブル名に対する権限リストを GRANT オプション付きで付与します。 例: 付与オプションを使用して、"wujuntian" で識別される 'wjt'@'localhost' に *.* のすべての権限を付与します。 「*」を使用してすべてのデータベースまたはすべてのテーブルを表すことができ、「%」を使用して任意のホスト アドレスを表すことができます。 grant を使用すると、ユーザーに権限を繰り返し追加して権限をスタックすることができます。 付与オプション付き: このオプションは、ユーザーが自分の権限を他のユーザーに付与できることを意味します。 承認後に権限を更新することを忘れないでください: 権限をフラッシュします。 5.Mysql ユーザー権限を取り戻す: 取り消し命令の形式は次のとおりです。 ユーザー名@ホストからデータベース名.データテーブル名の権限リストを取り消します。 例: wjt@localhost からの test.user の選択を取り消します。 知らせ: 実際、GRANT ステートメントを実行すると、権限テーブルにターゲット アカウントが存在しない場合はアカウントが作成され、すでに存在する場合は権限が追加されます。 使用権限は取り消すことができません。つまり、REVOKE ユーザー権限ではユーザーを削除できません。 6. アカウント名を変更します。 ユーザー名「古いユーザー名」@「古いホスト」を「新しいユーザー名」@「新しいホスト」に変更します。 例: ユーザーの名前 'wujuntian'@'localhost' を 'ajun'@'localhost' に変更します。 7. MySQLユーザーのパスワードを変更します。 方法 1: set password コマンドを使用します。 'username'@'host' のパスワードを設定します = password('新しいパスワード'); 例: 'root'@'localhost' のパスワードを設定します = password('123456'); 方法 2: mysql.user テーブルの password (または authentication_string) フィールドを変更します。 例: 次のようにコードをコピーします。 mysql.user を更新し、password=password('123123') を設定します。ここで、user='root'、host='localhost' です。 知らせ: この方法では、権限を更新するために「flush privileges;」コマンドを実行する必要があります。そうしないと、パスワードの変更は有効になりません。 MySQL 5.7 以降では、「password」を「authentication_string」に変更する必要があります。 方法 3: grant コマンドを使用して、認証中にパスワードを変更します。 '新しいパスワード' で識別されるユーザー名@ホストに、データベース名.テーブル名に対する選択権限を付与します (付与オプション付き)。 例: 次のようにコードをコピーします。 '111111' で識別される ajun@localhost に、 grant オプションを使用して test.user に対する select 権限を付与します。 方法 4: mysqladmin スクリプト ファイルを実行します。 このファイルは通常、MySQL インストール ディレクトリの下の bin ディレクトリにあります。ディレクトリに入り、次の 2 つの特定の状況に応じてコマンドを入力します (この権限を持つのは root ユーザーのみです)。 (1)ユーザーにパスワードがない場合 mysqladmin -u ユーザー名 パスワード 新しいパスワード; (2)ユーザーは既にパスワードを持っています: mysqladmin -u ユーザー名 -p パスワード 新しいパスワード; (Enter キーを押すと、古いパスワードの入力を求められます。入力すると変更が成功します。) 知らせ: パスワードを変更する場合は、PASSWORD 関数を使用する必要があります (mysqladmin および GRANT の場合は自動的に追加されるため、記述する必要はありません)。 8. MySQLにログインするためのパスワードを忘れました: 方法1: まず、実行中の Mysql サービスを停止し、コマンド ライン ウィンドウの mysql インストール ディレクトリの下の bin ディレクトリに移動し、-skip-grant-tables パラメータで mysqld ファイルを実行します (Linux システムでは mysqld_safe ファイルを実行する方が安全です)。 mysqld --skip-grant-tables これにより、Mysql のアクセス制御をスキップし、コンソールで管理者として MySQL データベースにアクセスできるようになります。さらに、別のコマンドラインウィンドウを開き、MySQL インストールディレクトリの下の bin ディレクトリに入り、直接「mysql」と入力して Enter キーを押すと、MySQL にログインでき、その後パスワードをリセットできます (注: この時点では、「Mysql ユーザーパスワードの変更」の 4 つの方法のうち 2 番目の方法のみを使用できます)。設定が成功したら、Mysql サービスを終了して再起動します。 方法 2: MySQL 構成ファイル my.ini を変更します。 実際、原理は方法 1 と同じで、どちらも MySQL が提供する --skip-grant-tables パラメータを使用して MySQL アクセス制御をスキップします。 MySQL 構成ファイル my.ini を開き、[mysqld] の下に「skip-grant-tables」を追加して保存し、MySQL サービスを再起動すると、パスワードなしで MySQL にログインしてパスワードを変更できます。 Mysql の「mysql」データベースには、すべての Mysql ユーザーの権限情報データ テーブルが保存されます。 MySQL を起動すると、すべての権限テーブルの内容がメモリに読み込まれ、メモリ内の内容が権限の判定に直接使用されます。 grant、revoke、または set password を使用して権限テーブルに加えられた変更は、サーバーによってすぐに認識されます。 GRANT 操作の本質は、権限テーブルを変更した後に権限を更新することです。ただし、挿入、更新、削除などを使用して権限テーブルを手動で変更する場合は、権限のフラッシュ コマンドを実行する必要があります。これにより、サーバーは権限テーブルの内容をメモリに再読み込みし、変更が有効になります。このコマンドを実行しない場合は、コマンドを有効にするために MySQL サービスを再起動する必要があります。したがって、権限テーブルを操作するには、grant、revoke、またはset passwordを使用するのが最適です。これにより、flush privilegesコマンドを実行する手間が省けます。このコマンドの実行を忘れると、非常に困ったことになります。 。 。 それだけでなく、ユーザーを削除したり名前を変更したりするには、delete コマンドや update コマンドではなく、それぞれ drop user コマンドや rename user コマンドを使用するのが最適です。前者は、mysql.user データ テーブルを操作するだけでなく、他の権限テーブルのレコードも更新しますが、後者は、mysql.user テーブルのデータのみを操作します。ユーザーの権限情報は mysql.user テーブルにのみ存在するわけではないため、多くの問題が発生します。たとえば、delete を使用して mysql.user テーブル内のユーザーを削除したが、他の権限データ テーブルを操作しなかった場合、tables_priv などの他の権限データ テーブル内のユーザーに関する権限レコードはそのまま残ります。次回、create user コマンドを使用して同じ名前のユーザーを作成すると、失敗します。insert into コマンドを使用して mysql.user テーブルにレコードを挿入するか、他の権限データ テーブル内のユーザー名に関連するレコードを先に削除することしかできません。更新コマンドを使用してユーザー名を変更すると、大きな問題が発生することもあります。名前を変更すると、ユーザーは多くの権限を失い、他の権限テーブルにある元のユーザー名のレコードは、各権限テーブルで同じ更新操作を実行しない限り、役に立たないレコードになります。これは非常に面倒です。したがって、drop user と rename user を使用してください。 1 つのコマンドで、システムが自動的にすべてを完了できます。 ぜひ試してみてください。 Mysql 権限チェック: MySQL は、まず、より大きなスコープに対する権限があるかどうかを確認し、ない場合は、より小さなスコープに対する権限があるかどうかを確認します。たとえば、まずこのデータベースに選択権限があるかどうかを確認します。ある場合は、実行を許可します。そうでない場合は、テーブルに対する選択権限が、最も細かい粒度まで存在するかどうかを確認します。権限がない場合、実行は拒否されます。したがって、制御の粒度が細かくなるほど、権限の検証の手順が増え、パフォーマンスが低下します。 MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL トランザクション操作スキル」、「MySQL ストアド プロシージャ スキル」、「MySQL データベース ロック関連スキルの概要」、および「MySQL 共通関数の概要」 この記事が皆様のMySQLデータベース設計に役立つことを願っています。 以下もご興味があるかもしれません:
|
<<: Linux に Python クローラー スクリプトを展開し、スケジュールされたタスクを設定する方法
>>: Node.js での組み込みモジュールとカスタムモジュールの実装
アプリケーション ソフトウェアには通常、次のようなビジネス要件があります。新しいバージョンの APP...
導入:スライダー ドラッグ検証は現在、多くの場所で使用されています。週末に 1 つ作成しようと思い、...
序文JavaScript を学習した人なら誰でも、さまざまな環境で this がどこを指すかという問...
Dockerコンテナ接続1. ネットワークポートマッピングPythonアプリケーション用のコンテナを...
Docker ベースのデータベースをデプロイするsudo docker pull influxdb ...
目次導入:感情のインストール:一般的な CSS コンポーネントを追加します。既存のコンポーネントにス...
EXPLAIN ステートメントは、MySQL がステートメントを実行する方法に関する情報を提供します...
Postfix は、Linux システム上で電子メールをルーティングまたは配信するために使用される無...
1. まず、インタラクティブに使用するための .json ファイルを作成します。json データ形式...
HTML 仕様書では、画像の crossorigin 属性が導入されています。適切なヘッダー情報 ...
目次mysql マスタースレーブレプリケーションMySQL マスタースレーブレプリケーション方式My...
目次継承ES5 プロトタイプ継承ES6 クラス継承両者の違いES5プロトタイプ継承の内部実装ES6 ...
このプロジェクトでは、環境を構築するために Docker コンテナを使用します。Dockerfile...
元のテキスト: https://dev.mysql.com/doc/refman/8.0/en/gr...
1. Docker公式サイトにアクセスするまず、Dockerの公式ウェブサイトにアクセスして、最新の...