MySQLのコマンドラインを使用してユーザーアカウントのリストを取得する方法


1348

MySQLコマンドラインユーティリティを使用しており、データベース内を移動できます。次に、ユーザーアカウントのリストを表示する必要があります。これどうやってするの?

MySQLバージョンを使用しています5.4.1


@Mustaphaなぜタイトルが変わるの?この答えは、コマンドラインだけでなく、どこからでも実行できるSQLです。そして、そのタグは質問に何を追加しますか?
Rupの

私の編集の目的は、タイトルと説明の一貫性を維持することでしたが、あなたは良い点を持っていると思います。編集してくださいMr. @Rup
Mustapha Hadid

回答:


1848

このクエリを使用します。

SELECT User FROM mysql.user;

これは次のようなテーブルを出力します:

+-------+
| User  |
+-------+
| root  |
+-------+
| user2 |
+-------+

Matthew Scharley がこの回答のコメントで指摘しているUserように、一意のユーザー名のみを表示したい場合は、列でグループ化できます。


47
@ エントリUserごとに別々の行があるので、一意のユーザー値のみを取得するために、グループ化も必要になると思います。userhost
マシューシャーリー2009

5
SQLクエリなしで同じ情報を見つける方法は?
Divyanshu Das 2013

8
@barrycarter DELETE FROM mysql.user;良く持っているWHERE user='someuser' and host='somehost';あなたが行う場合はDELETE FROM mysql.user;、すべてのユーザーがなくなっています。次のmysqlの再起動後のログイン、またはFLUSH PRIVILEGES;メモリからのユーザーの排除。ここでやっての私の記事の1の例であるDELETE FROM mysql.user責任:dba.stackexchange.com/questions/4614/...
RolandoMySQLDBA

3
@GeoffreySHOW GRANTS FOR 'user'@'host';
fancyPants

5
代わりに、あなただけ使用することができ、グループ化のDISTINCT:キーワードSELECT DISTINCT user FROM mysql.user;
user2683246

445

MySQLでユーザーレコードを区別するために重要なホストフィールドが含まれているため、この形式が最も便利です。

select User,Host from mysql.user;

1
ちょっと興味があるんだけど。hostmysqlデータベースを操作するときに、いつこれが機能しますか?[
Mysql

7
@Packerはhost、別のサーバーから接続するときに効果を発揮します。への異なるアクセス権を付与することが可能である'packer'@'example.com''packer'@'google.com'
レイ・バクスター

118

ユーザーアカウントは、ユーザー名とホストレベルのアクセスで構成されます。

したがって、これはすべてのユーザーアカウントを提供するクエリです

SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;

7
これは基本的にはspkaneの回答と同じです。ユーザー列とホスト列を連結する利点は何ですか?
Iain Samuel McLean Elder

8
1つの例:このuser@host形式はパスワードの設定に使用されます。SET PASSWORDコマンドからホストを省略すると、エラーが発生します。SET PASSWORD FOR wordpressuser = PASSWORD('...');エラーを生成しますERROR 1133 (42000): Can't find any matching row in the user table。ホストを含​​めると動作します。SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...');を生成しQuery OK, 0 rows affected (0.00 sec)ます。
Iain Samuel McLean Elder

3
回答者が不満を言う可能性のあるものは何でも、ベストアンサー。変更したいのはそれにを追加するORDER BY userことだけでした。
2015年

48

ユーザーが異なる発信元から接続するときにユーザーの繰り返しを回避するには:

select distinct User from mysql.user;

31

MySQLはユーザー情報を独自のデータベースに保存します。データベースの名前はMySQLです。そのデータベース内では、ユーザー情報はという名前のテーブル、データセットにありuserます。MySQLユーザーテーブルで設定されているユーザーを確認するには、次のコマンドを実行します。

SELECT User, Host FROM mysql.user;

+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| root             | localhost |
| root             | demohost  |
| root             | 127.0.0.1 |
| debian-sys-maint | localhost |
|                  | %         |
+------------------+-----------+


23
SELECT * FROM mysql.user;

これは大きなテーブルなので、どのフィールドを選択するかをより厳選したい場合があります。


2
ホストが異なる3人のrootユーザーを取得しました。localhost127.0.0.1および::1。どれを保持する必要があり、何を削除する必要がありますか?ありがとう!
絵文字2015年

4
人々がネットワーク経由で接続することを望まない場合、古い標準はこれらすべてを削除することでした。ただし、いずれにしてもローカルホストのものはネットワーク経由でアクセスできないため、ローカルホストのものを維持することをお勧めします。つまり、代わりにそれらすべてを保持する必要があります。
トリシス2015年

18

mysqlにrootとしてログインし、次のクエリを入力します

select User from mysql.user;

+------+
| User |
+------+
| amon |
| root |
| root |
+------+

rootとしてログインすることを言及した場合は+1と言います。私はそうせずに試してみましたが、うまく
いき

ユーザーリストを表示するには、user1に権限を与える必要があります。rootユーザーがいないと、エラーが発生します。したがって、最初に特権を提供します。rootユーザーとしてログインし、コマンドを入力し GRANT SELECT ON mysql.user TO 'user1'@'localhost'; ます。user1としてログインし、コマンド select User from mysql.user; を入力します。ユーザーリストが表示されます。:) +1エンジョイ
sandip divekar 2014年

15

mysql.dbテーブルは、ユーザー権利を決定する上でおそらくより重要です。GRANTコマンドでテーブルに言及すると、そのエントリが作成されると思います。私の場合、mysql.usersテーブルには、接続や選択などが明らかにできたときに、ユーザーの権限が表示されませんでした。

mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host          | Db              | User   | Select_priv | Insert_priv | Update_priv | Del...

1
私の見解では、重要なのは、ユーザーがデータベースで実行できることです。したがって、「SHOW GRANTS」は、誰が何をすることが許可されているかを示すので、非常に便利です。
開発者MariusŽilėnas2015

12

私はこれを使用してユーザーをソートしているので、許可されたホストを見つけやすくなっています。

mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;

11

ピーターとジェシーは正しいですが、最初にmysql DBを選択していることを確認してください。

use mysql;

select User from mysql.user;

それはあなたのトリックを行う必要があります


22
それは、不可欠なのではないuse mysql;あなたのようなMySQLデータベースにテーブルがした場合、あなたのスコープで。次のことができますselect User from mysql.user;
vitaLee 2013年

5
追加use mysql;は、通常は1回限りのクエリなので、select User from user;代わりに使用できるようにするためですselect User from mysql.user;。mysqldbを使用する必要はありません
Dan

1
後でuse mysqlそれを使用した場合はselect user from user;何かがあったかもしれませんが、代わりにをmysql.user使用use mysqlしているため、最初に使用する必要はありません。
Sнаđошƒаӽ


5
$>  mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt

Linuxプロンプトでこのコマンドを実行すると、最初にmysql rootユーザーのパスワードが要求されます。正しいパスワードを入力すると、すべてのデータベースユーザーがテキストファイルに出力されます。


3

DMLとDDL権限に関する追加情報を提供するので、彼の方がより便利である

SELECT user, Select_priv, Insert_priv , Update_priv, Delete_priv, 
       Create_priv, Drop_priv, Shutdown_priv, Create_user_priv 
FROM mysql.user;

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.