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) をブロックする方法

推薦する

CocosCreatorでゲームコントローラーを使用する方法

目次1. シーンレイアウト2. ハンドルリスナーを追加する1. イベントの変更を監視する2. 座標設...

MySQL がデフォルト値を持つ NULL 列の使用を推奨しない理由

よく聞かれる答えは、列に NULL 値を使用するとインデックスが無効になるというものですが、実際にテ...

LinuxにRocketMQインスタンスをインストールする手順

1. JDKをインストールする1.1 現在の仮想マシン環境にJDKがあるかどうかを確認する rpm ...

MySQLの使い方の詳細な説明

目次1. はじめに2. 本文2.1 Where句の位置2.2 演算子2.3 NULL値1. はじめに...

WeChat アプレット wxss で外部 CSS ファイルとアイコンフォントを参照する方法

原因外部ファイルをミニプログラムにインポートする方法は次のとおりです: @import "...

CSS3 は反転可能なホバー効果を実現します

CSS3 は反転可能なホバー効果を実装します。具体的なコードは次のとおりです。 1.css /*基本...

Nginx は動的と静的の分離を実装します 例の説明

ウェブサイトの解析を高速化するために、動的ページと静的ページを異なるサーバーで解析して、解析速度を向...

win10 mysql 5.6.35 winx64 無料インストールバージョン設定チュートリアル

mysql 5.6.35 winx64無料インストールバージョン構成チュートリアルwin10、具体的...

JS 矢印関数に適さないシナリオは何ですか?

目次概要オブジェクトにメソッドを定義するオブジェクトリテラルオブジェクトプロトタイプ動的コンテキスト...

Vueルーティングナビゲーションガードの簡単な理解

目次1. グローバルガード1. グローバル前線警備2. グローバル解像度ガード3. グローバルポスト...

MySQL のマスター スレーブ レプリケーション オプションをオンラインで変更する方法

序文: MySQL で最も一般的に使用されるアーキテクチャは、マスター スレーブ レプリケーションで...

mysql-8.0.19-winx64 をインストールしてログインするための初心者向けチュートリアル (初心者必読)

目次1. インストールパッケージ(64ビット)をダウンロードする2. MySQLデータベースをインス...

ミニマルなウェブサイトデザインの例

Web アプリケーション クラス1. みんなのためにダウンまたは私だけのためにこのウェブサイトは、ウ...

MySQLはmysqldump+binlogを使用して、削除されたデータベースの原理分析を完全に復元します。

1. 概要MySQL データベースの日常的な操作とメンテナンスにおいて、ユーザーが誤ってデータを削...

Javascript 非同期プログラミング: Promise を本当に理解していますか?

目次序文基本的な使い方文法エラー処理プロミスチェーン呼び出し非同期と待機よく使われる方法1. Pro...