Mysqlアカウント管理の原理と実装方法の詳細な説明

Mysqlアカウント管理の原理と実装方法の詳細な説明

この記事では、例を使用して、MySQL アカウント管理の原則と実装方法を説明します。ご参考までに、詳細は以下の通りです。

アカウント管理

実稼働環境でデータベースを操作する場合、接続にルート アカウントを使用しないでください。代わりに、特定のアカウントを作成し、このアカウントに特定の操作権限を付与してから接続して操作します。主な操作はデータの CRUD です。
MySQL アカウント システム: アカウントのさまざまな権限に応じて、MySQL アカウントは次の種類のサービス インスタンス レベルのアカウントに分類できます。データベース インスタンスである mysqld が起動すると、root などのユーザーにサービス インスタンス レベルで割り当てられた権限がある場合、アカウントはこれらのデータベース内のテーブルを含むすべてのデータベースを削除できます。データベース レベルのアカウント: 特定のデータベースに対して、追加、削除、変更、クエリなどのすべての操作を実行します。テーブル レベルのアカウント: 特定のテーブルに対して、追加、削除、変更、クエリなどのすべての操作を実行します。フィールド レベルの権限: 特定のテーブルの特定のフィールドに対して操作を実行します。ストアド プログラム レベルのアカウント: ストアド プログラムに対して、追加、削除、変更、クエリなどの操作を実行します。アカウント操作には、主にアカウントの作成、アカウントの削除、パスワードの変更、権限の承認が含まれます。注:

アカウント操作を実行するときは、ルート アカウントでログインする必要があります。このアカウントはインスタンス レベルの最高の権限を持ち、通常はデータベース レベルの操作権限を使用します。

権限を付与する

例として root を使用し、インスタンス レベルのアカウントでログインする必要があります。

主な業務は次のとおりです。

すべてのユーザーを表示 パスワードを変更 ユーザーを削除

1. すべてのユーザーを表示

すべてのユーザーと権限情報は、MySQLデータベースのユーザーテーブルに保存されます。ユーザーテーブルの構造を表示します。
desc ユーザー;
メインフィールドの説明:
ホストはアクセスが許可されているホストを示します
ユーザーはユーザー名を表します
authentication_stringはパスワードを表し、これはすべてのユーザーを表示するための暗号化された値です。

ユーザーからホスト、ユーザー、認証文字列を選択します。

結果

mysql> ユーザーからホスト、ユーザー、認証文字列を選択します。
+-----------+------------------+--------------------------------------------------------+
| ホスト | ユーザー | 認証文字列 |
+-----------+------------------+--------------------------------------------------------+
| ローカルホスト | ルート | *E74858DB86EBA20BC33D0AECAE8A8108C56B17FA |
| localhost | mysql.sys | *ここで使用できるパスワードは無効です |
| ローカルホスト | debian-sys-maint | *EFED9C764966EDB33BB7318E1CBD122C0DFE4827 |
+-----------+------------------+--------------------------------------------------------+
セット内の 3 行 (0.00 秒)

2. アカウントを作成して承認する

ログインして操作するには、インスタンスレベルのアカウントを使用する必要があります。ルートを例にとると、一般的な権限には、作成、変更、削除、挿入、更新、削除、選択などがあります。
すべての権限を割り当てたい場合は、すべての権限を使用できます

2.1 アカウントの作成と承認

'password' で識別される 'user name'@'access host' にデータベースの権限リストを付与します。

2.2 例1

パスワード 123456 を持つ laowang という名前のアカウントを作成します。このアカウントにはローカルでのみアクセスでき、jing_dong データベース内のすべてのテーブルを読み取ることしかできません。

ステップ1: rootとしてログインする

mysql -uroot -p
パスワードを入力してEnterを押してください

ステップ2: アカウントを作成し、すべての権限を付与する

jing_dong.* に対する選択権限を 'laowang'@'localhost' に '123456' で識別して付与します。

例示する

Python データベースのすべてのテーブルは、次の方法で操作できます: jing_dong.*
アクセスホストは通常​​、パーセント記号 % を使用して、このアカウントが任意の IP ホストを使用してこのデータベースにログインしてアクセスできることを示します。アクセスホストは、ローカルホストまたは特定の IP に設定でき、ローカルマシンまたは特定のホストのみがアクセスを許可されることを示します。ユーザーが持っている権限を表示します。

laowang@localhost の権限を表示します。

ステップ3: ルートからログアウトする

やめる

ステップ4: Laowangアカウントを使用してログインする

mysql -ulaowang -p
パスワードを入力してEnterを押してください

ログイン後の効果は以下のとおりです
ここに画像の説明を挿入
ここに画像の説明を挿入

2.3 例2

パスワードが 12345678 の laoli アカウントを作成します。このアカウントはどのコンピューターからでもアクセスでき、jing_dong データベース内のすべてのテーブルに対する完全な権限を持ちます。

jing_dong.* のすべての権限を、「12345678」で識別される「laoli」@「%」に付与します。

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

アカウント操作

1. 権限を変更する

GRANT オプションを使用して、データベースの権限名を account@host に付与します。

ここに画像の説明を挿入
ここに画像の説明を挿入
ここに画像の説明を挿入

2. パスワードを変更する

ルートとしてログインし、MySQLデータベースのユーザーテーブルを変更します。

パスワードを暗号化するにはpassword()関数を使用します

ユーザーを更新します。set authentication_string=password('新しいパスワード')、user='ユーザー名';
例:
ユーザーを更新します。set authentication_string=password('123') where user='laowang';

変更が完了したら権限を更新する必要があることに注意してください

権限をフラッシュする

3. リモートログイン(危険ですので、注意して使用してください)

Ubuntuでmsyqlコマンドを使用して別のMySQLサーバーにリモート接続する場合は、次の方法で実行できますが、この方法は理解のためだけのものであり、実際の運用環境では使用しないでください。

/etc/mysql/mysql.conf.d/mysqld.cnfファイルを変更する

vim /etc/mysql/mysql.conf.d/mysqld.cnf

ここに画像の説明を挿入
次にmsyqlを再起動します

サービスmysqlの再起動

別のUbuntuで接続をテストする

ここに画像の説明を挿入
それでも接続できない場合は、次の理由が考えられます。

  1. ネットワークが機能していません

ping xxx.xxx.xx.xxx を使用して、ネットワークが正常かどうかを確認できます。

2) データベースがbind_addressパラメータで設定されているかどうかを確認します。

ローカルでデータベースにログインして my.cnf ファイルを表示すると、データベースの現在のパラメータに 'bind_address' などの変数が表示されます。

bind_address=127.0.0.1が設定されている場合は、ローカルでのみログインできます。

3) データベースにskip_networkingパラメータが設定されているかどうかを確認する

このパラメータが設定されている場合、MySQLデータベースにローカルでのみログインできます。

4) ポートは正しく指定されていますか?

4. アカウントの削除

構文1: rootとしてログインする

ユーザー 'username'@'host' を削除します。
例:
ユーザー 'laowang'@'%' を削除します。

構文2: rootとしてログインし、MySQLデータベースのユーザーテーブル内のデータを削除します。

user='username' のユーザーから削除します。
例:
user='laowang' のユーザーから削除します。

-- 操作が完了したら、権限をフラッシュする必要があります

ユーザーを削除するには、構文 1 を使用することをお勧めします。構文 1 でユーザーを削除できない場合は、構文 2 を使用します。

3. ルートアカウントのパスワードを忘れてしまったらどうすればいいですか?

通常、ルートアカウントを管理するのは私たちの番ではないので、盲目的にならないでください

mysql ルート ユーザーのパスワードを忘れた場合の解決策 (skip-grant-tables):

スキップ許可テーブル
名前の通り、データベース起動時に権限テーブルの制限がスキップされ、パスワードの確認なしで直接ログインできます。

知らせ:

この状況は、ルート パスワードを忘れてデータベースを再起動する必要がある場合にのみ使用されます。データベースの再起動が必要であり、セキュリティを保証するのが難しいため、ライブ ネットワーク環境では注意して使用してください。

1. 構成パラメータを変更する

/etc/my.cnf

存在する

[mysqld] 以下を追加:

スキップ許可テーブル
構成項目。

2. MySQLを再起動する

パラメータを有効にします。

サービスmysqldを再起動

3. 注意事項

現時点では、すべてのユーザーがパスワードなしで現在のデータベースにログインできるため、データベースのセキュリティは非常に低くなります。

4. パスワードを変更する

具体的な方法:

https://www.jb51.net/article/169143.htm

5. パラメータを削除する

a. パスワードを変更した後、設定ファイルから skip-grant-tables を削除します。

b. データベースを再起動します。

MySQL 関連のコンテンツに興味のある読者は、このサイトの次のトピックをチェックしてください: 「MySQL クエリ スキル」、「MySQL 共通関数の概要」、「MySQL ログ操作スキル」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキル」、および「MySQL データベース ロック関連スキルの概要」

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQLのユーザーアカウント管理と権限管理の詳細な説明
  • MySQLは新しいユーザーを作成し、2つのアカウントを追加して例を使用します
  • MySQL ログ管理の詳細
  • MySQL 管理
  • メモを作成するためのMySQL権限管理付与コマンド
  • MySQLユーザー権限管理の詳細な説明
  • MySQL における基本的なユーザーおよび権限管理方法の概要
  • MySQL での mysqladmin 日常管理コマンドの概要 (必読)
  • MySQL ベースの学生管理システムを Java で実装する
  • mysqladmin を使って MySQL をリモート管理する方法

<<:  Nginxは特定のページへのIPアクセスを制限します

>>:  nginx を使用して特定のインターフェース (URL) をブロックする方法

推薦する

Windows での MySQL 8.0.15 のインストールと設定方法のグラフィック チュートリアル

この記事では、参考までにMySQL 8.0.15のインストールと設定方法のグラフィックチュートリアル...

docker ポートを追加して dockerfile を取得する方法

DockerイメージからDockerfileを取得する docker 履歴 --format {{....

MySQL UPDATE ステートメントの非標準実装コード

今日は、MySQL データベースと SQL 標準 (および他のデータベース) の UPDATE ステ...

MySQL 面接でよく聞かれる質問への回答

序文:さまざまな技術職の面接では、MySQL 関連の質問がよくされるようです。開発職の面接でも運用職...

HTMLプログラミングタグとドキュメント構造の詳細な説明

HTML を使用してコンテンツをマークアップする目的は、Web ページにセマンティクスを与えることで...

Vueの7つの値転送メソッドの詳細な説明

1. 父から息子へ子コンポーネントにpropsフィールドを定義し、その型は配列です (フィールド値の...

CentOS7 で yum を使用して PostgreSQL と PostGIS をインストールする方法

1. yumソースを更新するCentOS7 のデフォルトの yum リポジトリの PostgreSQ...

Nginx サーバーの https 設定方法の例

Linux: Linux バージョン 3.10.0-123.9.3.el7.x86_64 ngin...

MySQL無料インストールバージョンの設定チュートリアル

この記事では、参考までにMySQLの無料インストール構成チュートリアルを紹介します。具体的な内容は次...

Dockerでコンテナを作成するときにコンテナIPを指定する実装例

Docker はコンテナを作成するときに、デフォルトでブリッジ ネットワークを使用し、IP アドレス...

HTMLの空リンクの役割についての簡単な説明

空のリンク:つまり、ターゲット エンドポイントとのリンクはありません。フォーマット <a hr...

Vueはアコーディオン効果を実装する

この記事の例では、アコーディオン効果を実現するためのVueの具体的なコードを参考までに共有しています...

element-uiのアップロードコンポーネントでファイルやその他のパラメータを転送する際の問題を分析する

最近、element-ui を統合したプロジェクトで vuethink を使用しました。以前は bo...

MySQL エラー コード 1862 の解決方法: パスワードの有効期限が切れています

ブロガーは 1 ~ 2 か月間 MySQL を使用していませんでしたが、今日この問題に遭遇しました。...

ReactでのDOM操作の実装

目次前の単語使用シナリオ参照HTML要素クラスコンポーネント機能コンポーネント[DOMノードを親コン...