Sto usando l'utilità della riga di comando di MySQL e posso navigare attraverso un database. Ora ho bisogno di vedere un elenco di account utente. Come posso fare questo?
Sto usando la versione di MySQL 5.4.1
.
Sto usando l'utilità della riga di comando di MySQL e posso navigare attraverso un database. Ora ho bisogno di vedere un elenco di account utente. Come posso fare questo?
Sto usando la versione di MySQL 5.4.1
.
Risposte:
Usa questa query:
SELECT User FROM mysql.user;
Che produrrà una tabella come questa:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
Come sottolinea Matthew Scharley nei commenti su questa risposta , puoi raggruppare per User
colonna se desideri vedere solo nomi utente univoci.
User
anche per ottenere valori utente univoci, poiché esiste una riga separata per ogni voce user
@ host
.
DELETE FROM mysql.user;
better have WHERE user='someuser' and host='somehost';
Se lo fai DELETE FROM mysql.user;
, tutti gli utenti se ne sono andati. Gli accessi dopo il successivo mysql si riavviano o FLUSH PRIVILEGES;
eliminano gli utenti dalla memoria. Ecco un esempio di uno dei miei post sul fare DELETE FROM mysql.user
responsabilmente: dba.stackexchange.com/questions/4614/…
SHOW GRANTS FOR 'user'@'host';
DISTINCT
parola chiave:SELECT DISTINCT user FROM mysql.user;
Trovo questo formato il più utile in quanto include il campo host che è importante in MySQL per distinguere tra i record degli utenti.
select User,Host from mysql.user;
host
entrerà in gioco quando si lavora con i database mysql? [Mysql Noob]
host
entra in gioco quando ci si connette da un altro server. È possibile concedere un accesso diverso a 'packer'@'example.com'
e'packer'@'google.com'
Un account utente comprende il nome utente e l'accesso a livello di host.
Pertanto, questa è la query che fornisce tutti gli account utente
SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
user@host
formato viene utilizzato per impostare le password. L'omissione dell'host dal SET PASSWORD
comando produce un errore. SET PASSWORD FOR wordpressuser = PASSWORD('...');
produce l'errore ERROR 1133 (42000): Can't find any matching row in the user table
. Includi l'host e funziona. SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...');
produce Query OK, 0 rows affected (0.00 sec)
.
ORDER BY user
.
per evitare ripetizioni degli utenti quando si connettono da origini diverse:
select distinct User from mysql.user;
MySQL memorizza le informazioni dell'utente nel proprio database. Il nome del database è MySQL
. All'interno di quel database, le informazioni dell'utente si trovano in una tabella, un set di dati, denominato user
. Se vuoi vedere quali utenti sono impostati nella tabella utenti MySQL, esegui il seguente comando:
SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| root | localhost |
| root | demohost |
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| | % |
+------------------+-----------+
Se ti riferisci agli utenti MySQL attuali, prova:
select User from mysql.user;
SELECT * FROM mysql.user;
È un grande tavolo, quindi potresti voler essere più selettivo su quali campi scegli.
localhost
, 127.0.0.1
E ::1
. Quale devo conservare e cosa devo cancellare? Grazie!
Accedi a mysql come root e digita la seguente query
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
GRANT SELECT ON mysql.user TO 'user1'@'localhost';
ora accedi come user1 e digita comando select User from mysql.user;
Verrà visualizzato l'elenco utenti. :) +1 Divertiti
La tabella mysql.db è forse più importante nel determinare i diritti dell'utente. Penso che venga creata una voce se si menziona una tabella nel comando GRANT. Nel mio caso la tabella mysql.users non mostrava autorizzazioni per un utente quando ovviamente era in grado di connettersi e selezionare, ecc.
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Del...
Lo uso per ordinare gli utenti, quindi gli host consentiti sono più facili da individuare:
mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
Peter e Jesse sono corretti, ma assicurati di selezionare prima il database mysql.
use mysql;
select User from mysql.user;
quello dovrebbe fare il tuo trucco
use mysql;
nel caso in cui la tabella venga portata nel database mysql come hai fatto tu. Puoi soloselect User from mysql.user;
use mysql;
è solo per poter utilizzare select User from user;
invece select User from mysql.user;
poiché di solito è una query singola, non è necessario utilizzare mysql db
use mysql
se avessi usato select user from user;
di quello avrebbe potuto essere qualcosa, ma invece stai usando mysql.user
, il che rende l'uso use mysql
all'inizio inutile.
Viene visualizzato un elenco di utenti unici:
SELECT DISTINCT User FROM mysql.user;
$> mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
L'esecuzione di questo comando sul prompt di Linux richiederà prima la password dell'utente root mysql, fornendo una password corretta stamperà tutti gli utenti del database nel file di testo.
Ho trovato il suo più utile in quanto fornisce ulteriori informazioni sui privilegi DML e 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;
utilizzare la query sopra per ottenere utenti Mysql