Estou usando o utilitário de linha de comando MySQL e posso navegar através de um banco de dados. Agora eu preciso ver uma lista de contas de usuário. Como posso fazer isso?
Eu estou usando a versão MySQL 5.4.1
.
Estou usando o utilitário de linha de comando MySQL e posso navegar através de um banco de dados. Agora eu preciso ver uma lista de contas de usuário. Como posso fazer isso?
Eu estou usando a versão MySQL 5.4.1
.
Respostas:
Use esta consulta:
SELECT User FROM mysql.user;
O que produzirá uma tabela como esta:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
Como Matthew Scharley aponta nos comentários desta resposta , você pode agrupar pela User
coluna se quiser ver apenas nomes de usuários exclusivos.
User
também, para obter apenas valores de usuário únicos, pois há uma linha separada para cada entrada user
@ host
.
DELETE FROM mysql.user;
melhor ter WHERE user='someuser' and host='somehost';
Se o fizer DELETE FROM mysql.user;
, todos os usuários se foram. Logins após o próximo mysql reiniciam ou FLUSH PRIVILEGES;
eliminam usuários da memória. Aqui está um exemplo de uma das minhas postagens sobre como agir com DELETE FROM mysql.user
responsabilidade: dba.stackexchange.com/questions/4614/…
SHOW GRANTS FOR 'user'@'host';
DISTINCT
palavra-chave:SELECT DISTINCT user FROM mysql.user;
Acho esse formato o mais útil, pois inclui o campo host, que é importante no MySQL para distinguir entre os registros do usuário.
select User,Host from mysql.user;
host
entrará em jogo ao trabalhar com bancos de dados mysql? [Mysql Noob]
host
entra em ação quando você está se conectando a partir de um servidor diferente. É possível conceder acesso diferente a 'packer'@'example.com'
e'packer'@'google.com'
Uma conta de usuário inclui o nome de usuário e o acesso no nível do host.
Portanto, essa é a consulta que fornece todas as contas de usuário
SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
user@host
formato é usado para definir senhas. Omitir o host do SET PASSWORD
comando produz um erro. SET PASSWORD FOR wordpressuser = PASSWORD('...');
produz o erro ERROR 1133 (42000): Can't find any matching row in the user table
. Inclua o host e ele funciona. SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...');
produz Query OK, 0 rows affected (0.00 sec)
.
ORDER BY user
a ele.
para evitar repetições de usuários quando eles se conectam de origem diferente:
select distinct User from mysql.user;
O MySQL armazena as informações do usuário em seu próprio banco de dados. O nome do banco de dados é MySQL
. Dentro desse banco de dados, as informações do usuário estão em uma tabela, um conjunto de dados, nomeado user
. Se você deseja ver quais usuários estão configurados na tabela de usuários do MySQL, execute o seguinte comando:
SELECT User, Host FROM mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| root | localhost |
| root | demohost |
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| | % |
+------------------+-----------+
Se você está se referindo aos usuários reais do MySQL, tente:
select User from mysql.user;
SELECT * FROM mysql.user;
É uma mesa grande, portanto, você pode querer ser mais seletivo em quais campos escolher.
localhost
, 127.0.0.1
E ::1
. Qual devo manter e o que devo excluir? Obrigado!
Entre no mysql como root e digite a seguinte consulta
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
GRANT SELECT ON mysql.user TO 'user1'@'localhost';
agora entre como user1 e digite command select User from mysql.user;
Você verá a lista de usuários exibida. :) +1 Enjoy
A tabela mysql.db é possivelmente mais importante na determinação dos direitos do usuário. Eu acho que uma entrada nele é criada se você mencionar uma tabela no comando GRANT. No meu caso, a tabela mysql.users não mostrou permissões para um usuário quando obviamente conseguiu conectar e selecionar, etc.
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Del...
Eu uso isso para classificar os usuários, para que os hosts permitidos sejam mais fáceis de identificar:
mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;
Peter e Jesse estão corretos, mas apenas certifique-se de selecionar primeiro o banco de dados mysql.
use mysql;
select User from mysql.user;
isso deve fazer o seu truque
use mysql;
no caso de você colocar a tabela no banco de dados mysql, como você fez. Você pode apenasselect User from mysql.user;
use mysql;
é apenas para que você pode usar select User from user;
em vez select User from mysql.user;
desde que é geralmente uma consulta uma vez, não há necessidade de usar o banco de dados mysql
use mysql
se você tivesse usado, select user from user;
isso poderia ter sido algo, mas você está usando mysql.user
, o que torna o uso use mysql
no início desnecessário.
Isso exibe a lista de usuários únicos:
SELECT DISTINCT User FROM mysql.user;
$> mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
A execução deste comando no prompt do linux solicitará primeiro a senha do usuário root do mysql; ao fornecer a senha correta, imprimirá todos os usuários do banco de dados no arquivo de texto.
Achei o seu mais útil, pois fornece informações adicionais sobre os privilégios 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;
use a consulta acima para obter usuários do Mysql