はじめに
データベースの主な機能は、情報を構造化された方法で保存して、その情報に簡単にアクセスできるようにすることです。 MySQLサーバーにアクセスして作業する権限を持つ多くのユーザーがいると、セキュリティ上の問題になる可能性があります。
MySQLクライアントでの短い一連のクエリは、潜在的な問題を防ぐのに役立つ貴重な情報を提供します。このチュートリアルで概説されているコマンドを使用して、MySQLサーバー上のすべてのユーザーアカウントを一覧表示する方法を学習します。
前提条件
- コマンドライン/ターミナルウィンドウ
- MySQLまたはMariaDBがインストールされています
- sudoのユーザー またはルート 特権
ルートとしてMySQLにアクセスする方法
rootとしてMySQLサーバーにアクセスします ターミナルで次のコマンドを入力して、ユーザーを使用します。
sudo mysql --user=root mysql -p
または:
sudo mysql -u root -p
-p
このオプションは、rootユーザーに事前定義されたパスワードがある場合にのみ必須です。パスワードが定義されていない場合は、 -p
を指定せずにコマンドを使用してください オプション。
上記の出力は、 rootとしてMySQLクライアントにアクセスできることを示しています。 ユーザー。
これで、MySQLクエリを実行して、 mysql.userから情報を取得できます。 データベース。
すべてのMySQLユーザーを表示する方法
次のコマンドは、サーバーにアクセスできるユーザー名を一覧表示します。
SELECT user FROM mysql.user;
このコマンドは、MySQLにテーブルを作成するように指示します。システムはユーザーから情報を取得します mysql.userの列 データベース。
この例の出力は、4行のテーブルを示しています。
私たちが受け取ったリストの価値は限られています。 MySQLユーザーとその権限のより詳細な概要を取得するために、検索パラメーターを拡張して列を追加できます。
リストする方法mysql.user データベースフィールド
クエリを展開する前に、 mysql.userで使用可能なフィールドを一覧表示しましょう。 データベース。次のコマンドは、使用可能なすべての列を一覧表示します。
desc mysql.user;
フィールドのオプション 列は、 mysql.userにリクエストできる情報を表します データベース。
1つのコマンドで複数のオプションを組み合わせて、詳細なユーザー情報を取得することができます。
MySQLユーザー情報を表示する方法
次のクエリは、ユーザーのテーブルを提供します 、ホスト 、および authentication_string 列:
SELECT User, Host, authentication_string FROM mysql.user;
このクエリは、[ユーザー]列にさらに2つの列を追加し、ユーザーのパスワードやホスト名などの貴重な情報を提供します。
一意のMySQLユーザーのみを一覧表示する方法
もう1つの便利なオプションは、複数の行に表示されるMySQLユーザー名を削除することです。一意のMySQLユーザー名のみを表示するには、次のコマンドを入力します。
SELECT DISTINCT User FROM mysql.user;
出力は重複するMySQL行を削除し、特定のユーザー名を1回だけ表示します。
現在のMySQLユーザーを表示
user()
を使用します またはcurrent_user()
現在のMySQLユーザーの詳細を取得する関数:
SELECT user();
または:
SELECT current_user();
どちらの場合も、出力には、現在のMySQLユーザーが[メール保護]であることが示されます。 。
ログインしているMySQLユーザーを表示する
いつでも、MySQLデータベースサーバーに現在ログインしているユーザーを確認できます。この機能は、MySQLサーバーの不正使用を監視する際に非常に貴重な洞察を提供します。
このクエリを入力して、現在ログインしているMySQLユーザーのリストを表示します。
SELECT user, host,db, command FROM information_schema.processlist;
出力には、ログインしているユーザー、データベース、および実行中のコマンドが一覧表示されます。