Я использую утилиту командной строки MySQL и могу перемещаться по базе данных. Теперь мне нужно увидеть список учетных записей пользователей. Как я могу это сделать?
Я использую версию MySQL 5.4.1
.
Я использую утилиту командной строки MySQL и могу перемещаться по базе данных. Теперь мне нужно увидеть список учетных записей пользователей. Как я могу это сделать?
Я использую версию MySQL 5.4.1
.
Ответы:
Используйте этот запрос:
SELECT User FROM mysql.user;
Который выведет таблицу следующим образом:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
Как отмечает Мэтью Шарли в комментариях к этому ответу , вы можете группировать по User
столбцу, если хотите видеть только уникальные имена пользователей.
User
, чтобы получить только уникальные пользовательские значения, поскольку для каждой записи user
@ существует отдельная строка host
.
DELETE FROM mysql.user;
лучше, WHERE user='someuser' and host='somehost';
если вы DELETE FROM mysql.user;
все пользователи ушли. Вход в систему после следующего перезапуска mysql или FLUSH PRIVILEGES;
удаления пользователей из памяти. Вот пример одного из моих сообщений о том, как действоватьDELETE FROM mysql.user
ответственно: dba.stackexchange.com/questions/4614/…
SHOW GRANTS FOR 'user'@'host';
DISTINCT
ключевое слово:SELECT DISTINCT user FROM mysql.user;
Я считаю этот формат наиболее полезным, поскольку он включает в себя поле хоста, которое важно в MySQL для различения записей пользователя.
select User,Host from mysql.user;
host
вступит в силу при работе с базами данных mysql? [Mysql Noob]
host
вступает в игру, когда вы подключаетесь с другого сервера. Можно предоставить различный доступ к 'packer'@'example.com'
и'packer'@'google.com'
Учетная запись пользователя содержит имя пользователя и доступ на уровне хоста.
Таким образом, это запрос, который дает все учетные записи пользователей
SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
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)
.
ORDER BY user
к нему.
чтобы избежать повторений пользователей при подключении из разных источников:
select distinct User from mysql.user;
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 |
| | % |
+------------------+-----------+
Если вы имеете в виду реальных пользователей MySQL, попробуйте:
select User from mysql.user;
SELECT * FROM mysql.user;
Это большая таблица, поэтому вы можете быть более разборчивы в выборе полей.
localhost
, 127.0.0.1
И ::1
. Какой из них я должен сохранить и что я должен удалить? Спасибо!
Войдите в MySQL как root и введите следующий запрос
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
GRANT SELECT ON mysql.user TO 'user1'@'localhost';
now, войдите как user1 и введите команду. select User from mysql.user;
Вы увидите список пользователей. :) +1 Наслаждайтесь
Таблица mysql.db, возможно, более важна для определения прав пользователя. Я думаю, что запись в нем создается, если вы упомянули таблицу в команде GRANT. В моем случае таблица mysql.users не показала никаких полномочий для пользователя, когда он, очевидно, мог подключаться и выбирать и т. Д.
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Del...
Я использую это для сортировки пользователей, поэтому разрешенные хосты легче обнаружить:
mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
Питер и Джесси правы, но сначала убедитесь, что вы выбрали БД mysql.
use mysql;
select User from mysql.user;
это должно сделать ваш трюк
use mysql;
в случае, если вы поместите таблицу в базу данных mysql, как вы это сделали. Вы можете простоselect User from mysql.user;
use mysql;
просто так, что вы можете использовать select User from user;
вместо этого, select User from mysql.user;
так как это, как правило, однократный запрос, нет необходимости использовать mysql db
use mysql
если бы вы использовали, select user from user;
то это могло бы быть чем-то, но вместо этого вы используете mysql.user
, что делает использование use mysql
в начале ненужным.
Это отображает список уникальных пользователей:
SELECT DISTINCT User FROM mysql.user;
$> mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
Выполнение этой команды в приглашении linux сначала запросит пароль пользователя root mysql, при предоставлении правильного пароля он распечатает всех пользователей базы данных в текстовый файл.
Я нашел его еще одним полезным, поскольку он предоставляет дополнительную информацию о привилегиях DML и DDL
SELECT user, Select_priv, Insert_priv , Update_priv, Delete_priv,
Create_priv, Drop_priv, Shutdown_priv, Create_user_priv
FROM mysql.user;
SELECT User FROM mysql.user;
используйте запрос выше, чтобы получить пользователей Mysql