Как получить список учетных записей пользователей MySQL

1113

Я использую утилиту командной строки MySQL и могу перемещаться по базе данных. Теперь мне нужно увидеть список учетных записей пользователей. Как я могу это сделать?

Я использую версию MySQL 5.4.1.

Теги:
mysql5

14 ответов

1530
Лучший ответ

Используйте этот запрос:

SELECT User FROM mysql.user;

Будет выводиться таблица следующим образом:

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

Как отмечает Matthew Scharley в комментариях к этому ответу, вы можете группировать столбец User, если хотите видеть только уникальные имена пользователей.

  • 45
    Я думаю, что может потребоваться сгруппировать и по User , чтобы получить только уникальные пользовательские значения, поскольку для каждой записи user @ host существует отдельная строка.
  • 4
    Как найти ту же информацию без запроса SQL ??
Показать ещё 6 комментариев
388

Я считаю этот формат наиболее полезным, поскольку он включает в себя поле хоста, которое важно в MySQL, чтобы различать записи пользователей.

select User,Host from mysql.user;
  • 1
    Просто любопытно. Когда этот host вступит в игру при работе с базами данных mysql? [Mysql Noob]
  • 5
    @Packer host вступает в игру, когда вы подключаетесь с другого сервера. Можно предоставить разный доступ к 'packer'@'example.com' и 'packer'@'google.com'
92

Учетная запись пользователя содержит имя пользователя и доступ к хосту.

Следовательно, это запрос, который предоставляет все учетные записи пользователей

SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
  • 7
    Это в основном то же самое, что и ответ Спканэ . В чем преимущество объединения столбцов пользователя и хоста?
  • 8
    Один пример: формат 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) .
Показать ещё 1 комментарий
42

чтобы избежать повторения пользователей при их подключении из разных источников:

select distinct User from mysql.user;
24

Если вы обращаетесь к фактическим пользователям MySQL, попробуйте:

select User from mysql.user;
18
SELECT * FROM mysql.user;

Это большая таблица, поэтому вы можете захотеть быть более избирательным в том, какие поля вы выберете.

  • 2
    У меня есть 3 пользователя root с разных хостов. localhost , 127.0.0.1 и ::1 . Какой из них я должен сохранить и что я должен удалить? Спасибо!
  • 4
    Если вы не хотите, чтобы люди подключались через сеть, старый стандарт заключался в том, чтобы удалить все это. Тем не менее, в настоящее время, похоже, рекомендуется сохранить локальные хосты, так как они все равно недоступны по сети; это означает, что вы должны вместо этого сохранить все из них.
15

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 |
|                  | %         |
+------------------+-----------+
13

Войдите в mysql как пользователь root и введите следующий запрос

select User from mysql.user;

+------+
| User |
+------+
| amon |
| root |
| root |
+------+
  • 0
    Я бы сказал +1 за упоминание входа в систему как root. Я пытался без этого, и это не сработало;)
  • 0
    Вам нужно дать привилегии user1 для отображения списка пользователей. Без пользователя root вы получите ошибку. Поэтому сначала предоставьте привилегии. Войдите в систему как пользователь root, затем введите команду GRANT SELECT ON mysql.user TO 'user1'@'localhost'; войдите в систему как user1 и введите команду select User from mysql.user; Вы увидите список пользователей. :) +1 Наслаждайтесь
12

Таблица 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» весьма полезен, поскольку показывает, кому и как разрешено делать.
9

Питер и Джесси верны, но просто убедитесь, что вы сначала выберите базу данных mysql.

use mysql;

select User from mysql.user;

который должен сделать трюк

  • 22
    Нет необходимости use mysql; в случае, если вы поместите таблицу в базу данных mysql, как вы это сделали. Вы можете просто select User from mysql.user;
  • 5
    Добавление use mysql; это просто, так что вы можете использовать select User from user; вместо этого select User from mysql.user; так как обычно это однократный запрос, нет необходимости использовать mysql db
Показать ещё 1 комментарий
8

Я использую это для сортировки пользователей, поэтому разрешенные хосты легче обнаружить:

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

Здесь отображается список уникальных пользователей.

SELECT DISTINCT User FROM mysql.user;
0

Я нашел его еще полезным. он сообщает вам привилегии DML и DDL

SELECT user,Select_priv, Insert_priv , Update_priv, Delete_priv, Create_priv,Drop_priv, Shutdown_priv,Create_user_priv FROM mysql.user;
0
$>  mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt

Эта команда при выполнении запросит пароль пользователя root в mysql и затем выведет всех пользователей в текстовый файл.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню