MySQL ユーザーと権限、およびルートパスワードをクラックする方法の例

MySQL ユーザーと権限、およびルートパスワードをクラックする方法の例

MySQL ユーザーと権限

MySQL には、MySQL と呼ばれるシステムに付属するデータベースがあります。データベースをインストールすると、システムにはいくつかのデータベースが付属しますが、MySQL はその 1 つです。MySQL データベースには、ユーザー テーブルと呼ばれるユーザー アカウント権限に関連するテーブルがあり、作成されたユーザーが含まれています。

MySQL の完全なユーザー名は、ユーザー + ホスト名で構成されます。ホスト名によって、ユーザーがログインできるホストが決まります。

1. ユーザーの作成とパスワードの変更

1. ユーザーの作成

'PASSWORD' で識別されるユーザー 'USERNAME'@'HOST' を作成します。

ユーザー名: ユーザー名
HOST: ホストアドレス
パスワード: パスワード

例:

MariaDB [(なし)]> 'centos' で識別されるユーザー [email protected] を作成します。
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

MariaDB [(なし)]> mysql.user からユーザー、ホスト、パスワードを選択します。
+--------+-----------------------+--------------------------------------------------------+
| ユーザー | ホスト | パスワード |
+--------+-----------------------+--------------------------------------------------------+
| ルート | ローカルホスト | |
| ルート | localhost.localdomain | |
| ルート | 127.0.0.1 | |
| ルート | ::1 | |
| | ローカルホスト | |
| | ローカルホスト.ローカルドメイン | |
| マスリ | 192.168.73.133 | *128977E278358FF80A246B5046F51043A2B1FCED |
+--------+-----------------------+--------------------------------------------------------+
セット内の行数は 7 です (0.00 秒)

MySQL には匿名アカウントがあり、セキュリティ強化スクリプト mysql_secure_installation を実行して削除することも、手動で削除することもできます。

ユーザーを削除するには:

ユーザー 'ユーザー名'@'ホスト' を削除します。

例:

MariaDB [(なし)]> mysql.user からユーザー、ホスト、パスワードを選択します。
+--------+-----------------------+--------------------------------------------------------+
| ユーザー | ホスト | パスワード |
+--------+-----------------------+--------------------------------------------------------+
| ルート | ローカルホスト | |
| ルート | localhost.localdomain | |
| ルート | 127.0.0.1 | |
| ルート | ::1 | |
| | ローカルホスト | |
| | ローカルホスト.ローカルドメイン | |
| マスリ | 192.168.73.133 | *128977E278358FF80A246B5046F51043A2B1FCED |
+--------+-----------------------+--------------------------------------------------------+
セット内の行数は 7 です (0.00 秒)

MariaDB [(なし)]> DROP USER ''@'localhost';
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

MariaDB [(なし)]> DROP USER ''@'localhost.localdomain';
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

MariaDB [(なし)]> mysql.user からユーザー、ホスト、パスワードを選択します。
+--------+-----------------------+--------------------------------------------------------+
| ユーザー | ホスト | パスワード |
+--------+-----------------------+--------------------------------------------------------+
| ルート | ローカルホスト | |
| ルート | localhost.localdomain | |
| ルート | 127.0.0.1 | |
| ルート | ::1 | |
| マスリ | 192.168.73.133 | *128977E278358FF80A246B5046F51043A2B1FCED |
+--------+-----------------------+--------------------------------------------------------+
セット内の行数は 5 です (0.00 秒)

2. パスワードの変更

MySQLのパスワードを変更する

ユーザーのパスワードを設定する = PASSWORD('クリアテキストパスワード')
UPDATE テーブル SET パスワード = password('クリアテキスト パスワード')

例:

masuriユーザーのパスワードを変更する

MariaDB [(なし)]> [email protected] のパスワードを設定する = PASSWORD ('magedu');
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

MariaDB [(なし)]> mysql.user からユーザー、ホスト、パスワードを選択します。
+--------+-----------------------+--------------------------------------------------------+
| ユーザー | ホスト | パスワード |
+--------+-----------------------+--------------------------------------------------------+
| ルート | ローカルホスト | |
| ルート | localhost.localdomain | |
| ルート | 127.0.0.1 | |
| ルート | ::1 | |
| マスリ | 192.168.73.133 | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |
+--------+-----------------------+--------------------------------------------------------+
#パスワードは現在変更されています

ルートアカウントのパスワードが空です。ルートパスワードを設定します。いちいち設定するのは面倒なので、テーブル変更操作を使ってパスワードを変更することもできます。

MariaDB [(なし)]> mysql.user を更新し、password=password('centos') を設定し、user='root' とします。
クエリは正常、4 行が影響を受けました (0.01 秒)
一致した行: 4 変更された行: 4 警告: 0

MariaDB [(なし)]> mysql.user からユーザー、ホスト、パスワードを選択します。
+--------+-----------------------+--------------------------------------------------------+
| ユーザー | ホスト | パスワード |
+--------+-----------------------+--------------------------------------------------------+
| ルート | ローカルホスト | *128977E278358FF80A246B5046F51043A2B1FCED |
| ルート | localhost.localdomain | *128977E278358FF80A246B5046F51043A2B1FCED |
| ルート | 127.0.0.1 | *128977E278358FF80A246B5046F51043A2B1FCED |
| ルート | ::1 | *128977E278358FF80A246B5046F51043A2B1FCED |
| マスリ | 192.168.73.133 | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |
+--------+-----------------------+--------------------------------------------------------+
セット内の行数は 5 です (0.00 秒)

現時点では、パスワードは変更されていますが、まだログインできません。権限を更新する必要があります。

MariaDB [(なし)]> FLUSH PRIVILEGES;
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

2. MySQL 権限管理

権限管理には、管理、プログラム、データベース レベル、テーブル レベル、フィールド レベルなど、複数のカテゴリの権限が含まれます。

管理: ユーザーを作成できるかどうか、データベース リストを表示できるかどうか、構成ファイルを再ロードできるかどうか、データベースを閉じることができるかどうか、レプリケーションに関連する機能を実行できるかどうか、プロセスを管理できるかどうか、一時テーブルを作成できるかどうか、データベース内のファイルを作成できるかどうか。

プログラムには、主に関数、ストアド プロシージャ、トリガーの 3 種類のプログラムが含まれます。たとえば、これらのプログラムを作成、変更、削除、実行できます。また、ライブラリ、テーブル、フィールド レベルで権限を使用することもできます。たとえば、ライブラリ、テーブル、フィールドで操作を追加、削除、クエリ、変更することができます。

1. 認可 GRANT

ユーザーを認証する際に、ユーザーが存在しない場合は作成することができます。認証する前に、認証権限を持つ管理者であることを確認する必要があります。

付与 
 priv_type [(列リスト)]
  [, priv_type [(列リスト)]] ...
 ON [オブジェクトタイプ] 特権レベル
 TO user_specification [, user_specification] ...
 [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}]
 [with_option と共に...]

例:

WordPress ユーザーを作成し、承認します。

MariaDB [(なし)]> CREATE DATABASE wordpress;
クエリは正常、1 行が影響を受けました (0.02 秒)

MariaDB [(なし)]> 'mylinuxops' によって識別される wpuser@'192.168.73.%' に wordpress.* のすべての権限を付与します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

2. ユーザーの権限を確認する

MariaDB [(なし)]> wpuser@'192.168.73.%' の権限を表示します。
+--------------------------------------------------------------------------------------------------------------------------------------------------+
| [email protected].% への許可 |
+--------------------------------------------------------------------------------------------------------------------------------------------------+
| パスワード '*EC0DBFB480593BB6ED2EC028A4231A72D8137406' で識別される 'wpuser'@'192.168.73.%' に *.* の使用を許可 |
| `wordpress`.* のすべての権限を 'wpuser'@'192.168.73.%' に付与します |
+--------------------------------------------------------------------------------------------------------------------------------------------------+
セット内の 2 行 (0.00 秒)

3. 認可のためのその他のオプション

MAX_QUESRIES_PER_HOUR count #1 時間あたりのクエリの最大数 MAX_UPDATES_PER_HOUR count #1 時間あたりの変更の最大数 MAX_CONNECTIONS_PER_HOUR count #1 時間あたりの接続の最大数 MAX_USER_CONNECTIONS count #ユーザー接続の最大数

権限を取り消す

取り消す
 priv_type [(列リスト)]
  [, priv_type [(列リスト)]] ...
 ON [オブジェクトタイプ] 特権レベル
 ユーザー[、ユーザー]から...

例:

MariaDB [(なし)]> wordpress.* の wpuser@'192.168.73.%' からの削除を取り消します。
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

MariaDB [(なし)]> wpuser@'192.168.73.%' の権限を表示します。
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| [email protected].% への許可 |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| パスワード '*EC0DBFB480593BB6ED2EC028A4231A72D8137406' で識別される 'wpuser'@'192.168.73.%' に *.* の使用を許可 |
| 'wpuser'@'192.168.73.%' に対して、`wordpress`.* に対して SELECT、INSERT、UPDATE、CREATE、DROP、REFERENCES、INDEX、ALTER、CREATE TEMPORARY TABLES、LOCK TABLES、EXECUTE、CREATE VIEW、SHOW VIEW、CREATE ROUTINE、ALTER ROUTINE、EVENT、TRIGGER の権限を付与します |
+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
セット内の 2 行 (0.00 秒)
# この時点で、wpuser@'192.168.73.%' には削除権限がありません

MySQL ルートパスワードのクラッキング

作業中にルート パスワードを紛失してしまうことがあります。ルート パスワードを取得するには、次の方法を使用できます。

以下はルートパスワードを解読する方法のデモンストレーションです

1. パスワードが不明なためMySQLにログインできない

[root@localhost ~]# mysql
エラー 1045 (28000): ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワード使用: NO)

2. クラッキング

1. 設定ファイル/etc/my.cnfを変更し、2行のパラメータを追加します。

skip_grant_tables: 認証テーブル情報をスキップします。このオプションを有効にすると、MySQL を再度使用するためにパスワードを使用する必要がなくなりますが、他のリモート ユーザーもパスワードなしでログインできるため、一定のリスクがあります。

skip_networking: ネットワーク機能をオフにします。skip_grant_tables オプションのみを有効にすると、他のユーザーがパスワードなしで MySQL にログインできてしまい、非常に危険です。そのため、ネットワーク機能をオフにして、ローカルユーザーのみが操作できるようにする必要があります。

[root@localhost ~]# vim /etc/my.cnf
[mysqld]
skip_networking=on #ネットワーク機能を有効にしない skip_grant_tables=on #認証テーブルをスキップする [root@localhost ~]# service mysqld restart #ロケーションファイルを変更した後、サービスを再起動する必要があります mysqld を再起動しています (systemctl 経由): [ OK ]

2. MySQLにログインしてパスワードを変更する

[root@localhost ~]# mysql #パスワードを入力せずにログインできます。MariaDB モニターへようこそ。コマンドは ; または \g で終わります。
MariaDB接続IDは11です
サーバーバージョン: 10.2.23-MariaDB-log ソース配布

Copyright (c) 2000、2018、Oracle、MariaDB Corporation Ab およびその他。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

MariaDB [(なし)]> UPDATE mysql.user SET password=PASSWORD('123456') where user='root'; #ルートパスワードを変更します クエリは正常です。4 行が影響を受けました (0.01 秒)
一致した行: 4 変更された行: 4 警告: 0

3. パスワードを変更した後、設定ファイルを復元する必要があります。

有効にした2つのオプションを登録解除または削除し、サービスを再起動します。

[root@localhost ~]# vim /etc/my.cnf
[mysqld]
#ネットワークをスキップ=オン   
#skip_grant_tables=オン   

[root@localhost ~]# サービスmysqldを再起動します
mysqld を再起動しています (systemctl 経由): [ OK ]

4. 新しいパスワードを使用してMySQLにログインします

[root@localhost ~]# mysql -uroot -p123456 
MariaDB モニターへようこそ。コマンドは ; または \g で終わります。
MariaDB接続IDは10です
サーバーバージョン: 10.2.23-MariaDB-log ソース配布

Copyright (c) 2000、2018、Oracle、MariaDB Corporation Ab およびその他。

ヘルプを表示するには、「help;」または「\h」と入力します。現在の入力ステートメントをクリアするには、「\c」と入力します。

MariaDB [(なし)]> 

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MySQL のユーザー権限を照会する方法の概要
  • 新しいユーザーを作成し、MySQLに権限を付与する最も簡単な方法
  • MySQLユーザーと権限管理の詳細な説明
  • mysql ステートメントを使用してユーザー権限を照会するプロセスの詳細な説明
  • MySQLのユーザーアカウント管理と権限管理の詳細な説明
  • mysql8.0 でユーザーを作成して権限を付与する際のエラーの解決方法の詳細な説明
  • MySQLのユーザー権限の確認と管理方法の詳細な説明
  • MySQL でローカル ユーザーを作成し、データベース権限を付与する方法の例
  • MySQLユーザー権限管理の詳細な説明
  • MySqlは指定されたユーザーのデータベースビュークエリ権限を設定します

<<:  Vue3 の SetUp 関数のプロパティとコンテキスト パラメータの詳細な説明

>>:  Alibaba Cloud Ubuntu 16.04 が IPSec サービスを構築

推薦する

Linuxにソフトウェアをインストールするいくつかの方法の詳細な説明

1. RPM パッケージのインストール手順: 1. soft.version.rpm などの対応する...

JavaScript ファイルの読み込みとブロックの問題: パフォーマンス最適化のケーススタディ

まず質問させてください。HTML ページを作成するときに、外部から JS ファイルをインポートする場...

Centos7.3 Nginx をインストールして展開し、https を設定する方法

設置環境1. gccのインストールnginxをインストールするには、まず公式サイトからダウンロードし...

グリーンスタイルのウェブデザイン作品18点の最新コレクション

トイ・ストーリー3 オンラインマーケティングウェブサイトゼンモバイル鉄から鉄へスプラウトファンドバー...

JavaScript で一意の ID を生成するいくつかの方法

考えられる解決策1. Math.randomは[0,1)の範囲の乱数を生成します。 //今回は生成さ...

SEATAトランザクションサービスDockerのデプロイ手順の詳細説明

1. データベース認証ステートメントを作成する > データベース seata を作成します。 ...

MySQLでユーザーを作成し、権限を管理する方法

1. ユーザーとパスワードの作成方法1. MySQLデータベースに入る mysql> mysq...

CSS で 2 列レイアウトを実現する N 通りの方法

1. 2 列レイアウトとは何ですか? 2 列レイアウトには、左側が固定幅で右側が適応幅のレイアウトと...

CSS における px、em、rem、pt の特徴、違い、変換について詳しく説明します。

コンセプト紹介: 1. px (ピクセル):仮想的な長さの単位で、コンピュータ システムのデジタル画...

Ubuntuにmysql5.7.10を手動でインストールする

このチュートリアルでは、UbuntuにMySQL 5.7.10を手動でインストールする手順を参考まで...

MySQL5.7.27-winx64 バージョン win10 のダウンロードとインストールのチュートリアル図

MySQL 5.7 のインストール私たちは学校で MySQL データベースを学んでいます。先生は私た...

ウェブページをデザインするには?ウェブページを作成するには?

Web デザインの理解に関しては、多くの人がまだ Web ページ制作のレベルにとどまっているようで...

html-cssタグのスタイル設定が機能しない2つの理由

1 セミコロン「;」のない CSS スタイル2 タグが閉じられておらず、「>」がありません...

IE6 および IE7 で DIV コンテナの固定高さを使用するためのヒント

IE6 と IE7 では CSS の解釈に多くの違いがあります。今日はそのうちの 1 つである高さに...

Vue を使用して Web ページのスクリーンショットを撮る方法をご存知ですか?

目次1. html2Canvasをインストールする2. 必要なVueコンポーネントを導入する3. ス...