我正在使用 MySQL 命令行实用程序,并且可以浏览数据库。现在我需要查看用户帐户列表。我怎样才能做到这一点?
我正在使用 MySQL 5.4.1 版。
使用此查询:
SELECT User FROM mysql.user;
这将输出如下表格:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
作为 Matthew Scharley points out in the comments on this answer,如果您只想查看唯一的用户名,可以按 User
列进行分组。
我发现这种格式最有用,因为它包含在 MySQL 中用于区分用户记录的主机字段。
select User,Host from mysql.user;
host
什么时候会起作用? [Mysql菜鸟]
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
。我必须保留哪一个,我必须删除什么?谢谢!
以 root 身份登录 MySQL 并键入以下查询:
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;
Peter 和 Jesse 是正确的,但请确保您首先选择“mysql”数据库。
use mysql;
select User from mysql.user;
那应该做你的伎俩。
use 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 命令行提示符下执行此命令将首先询问 MySQL root 用户的密码。提供正确的密码后,它会将所有数据库用户打印到文本文件中。
我发现他的一个更有用,因为它提供了有关 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 用户。
要查看您的用户,可以使用 mysql 数据库。
USE mysql;
然后进行选择。
SELECT user,host FROM user;
另一种选择是放置BD.Table。
例如 :
SELECT user,host FROM mysql.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;