Korzystam z narzędzia wiersza polecenia MySQL i mogę nawigować po bazie danych. Teraz muszę zobaczyć listę kont użytkowników. W jaki sposób mogę to zrobić?
Używam wersji MySQL 5.4.1
.
Korzystam z narzędzia wiersza polecenia MySQL i mogę nawigować po bazie danych. Teraz muszę zobaczyć listę kont użytkowników. W jaki sposób mogę to zrobić?
Używam wersji MySQL 5.4.1
.
Odpowiedzi:
Użyj tego zapytania:
SELECT User FROM mysql.user;
Które wygeneruje tabelę taką jak ta:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
Jak zauważa Matthew Scharley w komentarzach do tej odpowiedzi , możesz pogrupować dane według User
kolumny, jeśli chcesz zobaczyć unikalne nazwy użytkowników.
User
, aby uzyskać tylko unikalne wartości użytkownika, ponieważ dla każdego wpisu user
@ jest osobny wiersz host
.
DELETE FROM mysql.user;
lepiej mieć WHERE user='someuser' and host='somehost';
Jeśli to zrobisz DELETE FROM mysql.user;
, wszyscy użytkownicy znikną. Loguje się po następnym uruchomieniu mysql lub FLUSH PRIVILEGES;
wyeliminowaniu użytkowników z pamięci. Oto przykład jednego z moich postów na temat DELETE FROM mysql.user
odpowiedzialnego działania : dba.stackexchange.com/questions/4614/…
SHOW GRANTS FOR 'user'@'host';
DISTINCT
słowa kluczowego:SELECT DISTINCT user FROM mysql.user;
Uważam ten format za najbardziej użyteczny, ponieważ zawiera pole hosta, które jest ważne w MySQL do rozróżnienia rekordów użytkownika.
select User,Host from mysql.user;
host
w grę podczas pracy z bazami danych MySQL? [Mysql Noob]
host
wchodzi w grę, gdy łączysz się z innego serwera. Możliwe jest przyznanie innego dostępu do 'packer'@'example.com'
i'packer'@'google.com'
Konto użytkownika obejmuje nazwę użytkownika i dostęp na poziomie hosta.
Dlatego jest to zapytanie, które daje wszystkie konta użytkowników
SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
user@host
format służy do ustawiania haseł. Pominięcie hosta w SET PASSWORD
poleceniu powoduje błąd. SET PASSWORD FOR wordpressuser = PASSWORD('...');
produkuje błąd ERROR 1133 (42000): Can't find any matching row in the user table
. Dołącz hosta i to działa. SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...');
produkuje Query OK, 0 rows affected (0.00 sec)
.
ORDER BY user
do niej.
aby uniknąć powtórzeń użytkowników, gdy łączą się z innego źródła:
select distinct User from mysql.user;
MySQL przechowuje informacje o użytkowniku we własnej bazie danych. Nazwa bazy danych to MySQL
. W tej bazie danych informacje o użytkowniku znajdują się w tabeli, w zbiorze danych o nazwie user
. Jeśli chcesz zobaczyć, którzy użytkownicy są skonfigurowani w tabeli użytkowników MySQL, uruchom następującą komendę:
SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| root | localhost |
| root | demohost |
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| | % |
+------------------+-----------+
Jeśli masz na myśli rzeczywistych użytkowników MySQL, spróbuj:
select User from mysql.user;
SELECT * FROM mysql.user;
To duży stół, więc możesz chcieć być bardziej selektywnym w wybranych polach.
localhost
, 127.0.0.1
I ::1
. Który muszę zachować, a co usunąć? Dzięki!
Zaloguj się do mysql jako root i wpisz następujące zapytanie
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
GRANT SELECT ON mysql.user TO 'user1'@'localhost';
teraz zaloguj się jako użytkownik1 i wpisz polecenie select User from mysql.user;
Zobaczysz wyświetloną listę użytkowników. :) +1 Enjoy
Tabela mysql.db jest prawdopodobnie ważniejsza przy określaniu uprawnień użytkownika. Wydaje mi się, że tworzony jest w nim wpis, jeśli wspominasz o tabeli w poleceniu GRANT. W moim przypadku tabela mysql.users nie pokazała żadnych uprawnień dla użytkownika, gdy oczywiście był w stanie połączyć się i wybrać itp.
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Del...
Używam tego do sortowania użytkowników, więc łatwiejszymi do zlokalizowania dozwolonymi hostami są:
mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
Peter i Jesse mają rację, ale upewnij się, że najpierw wybrałeś DB MySQL.
use mysql;
select User from mysql.user;
to powinno wystarczyć
use mysql;
w przypadku, gdy zakres tabeli zostanie zawarty w bazie danych mysql. Możesz po prostuselect User from mysql.user;
use mysql;
jest tylko po to, abyś mógł użyć select User from user;
zamiast tego, select User from mysql.user;
ponieważ jest to zwykle zapytanie jednorazowe, nie ma potrzeby używania mysql db
use mysql
jeśli użyłeś, select user from user;
to mogło być coś, ale zamiast tego używasz mysql.user
, co sprawia, że używanie use mysql
na początku nie jest konieczne.
Wyświetla listę unikalnych użytkowników:
SELECT DISTINCT User FROM mysql.user;
$> mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
Wykonanie tej komendy w wierszu poleceń linuksa najpierw poprosi o hasło użytkownika root mysql, po podaniu prawidłowego hasła wydrukuje wszystkich użytkowników bazy danych do pliku tekstowego.
Uważam, że jest on bardziej przydatny, ponieważ zapewnia dodatkowe informacje na temat uprawnień DML i 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;
użyj powyższego zapytania, aby uzyskać użytkowników MySQL