Я використовую утиліту командного рядка 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';
тепер увійдіть як 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;
Пітер та Джессі є правильними, але просто переконайтеся, що спочатку виберіть DB-файл 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