Câu hỏi Cách lấy danh sách tài khoản người dùng MySQL


Tôi đang sử dụng tiện ích dòng lệnh MySQL và có thể điều hướng thông qua một cơ sở dữ liệu. Bây giờ tôi cần xem danh sách tài khoản người dùng. Tôi có thể làm cái này như thế nào?

Tôi đang sử dụng phiên bản MySQL 5.4.1.


1214
2017-07-16 03:23


gốc




Các câu trả lời:


Sử dụng truy vấn này:

SELECT User FROM mysql.user;

Mà sẽ xuất ra một bảng như thế này:

+-------+
| User  |
+-------+
| root  |
+-------+
| user2 |
+-------+

Như Matthew Scharley chỉ ra trong các ý kiến ​​về câu trả lời này, bạn có thể nhóm theo User nếu bạn chỉ muốn xem tên người dùng duy nhất.


1744
2017-07-06 18:21



Tôi nghĩ có thể cần phải nhóm User quá, để chỉ nhận được giá trị người dùng duy nhất, vì có một hàng riêng biệt cho mỗi giá trị user@host mục nhập. - Matthew Scharley
Làm thế nào để tìm thấy cùng một thông tin mà không cần truy vấn sql ?? - Divyanshu
@barrycarter DELETE FROM mysql.user; tốt hơn có WHERE user='someuser' and host='somehost'; Nếu bạn làm DELETE FROM mysql.user;, tất cả người dùng đã biến mất. Đăng nhập sau khi khởi động lại mysql tiếp theo hoặc FLUSH PRIVILEGES; loại bỏ người dùng khỏi bộ nhớ. Dưới đây là ví dụ về một trong các bài đăng của tôi khi thực hiện DELETE FROM mysql.user có trách nhiệm: dba.stackexchange.com/questions/4614/… - RolandoMySQLDBA
@Geoffrey SHOW GRANTS FOR 'user'@'host'; - fancyPants
thay vì nhóm bạn chỉ có thể sử dụng DISTINCT từ khóa: SELECT DISTINCT user FROM mysql.user; - user2683246


Tôi thấy định dạng này hữu ích nhất vì nó bao gồm trường máy chủ lưu trữ quan trọng trong MySQL để phân biệt giữa các bản ghi người dùng.

select User,Host from mysql.user;

417
2017-09-29 22:29



Chỉ tò mò thôi. Khi nào điều này host đi vào chơi khi làm việc với cơ sở dữ liệu mysql? [Mysql Noob] - Prabhakar
@Packer the host phát huy tác dụng khi bạn kết nối từ một máy chủ khác. Có thể cấp quyền truy cập khác nhau cho 'packer'@'example.com' và 'packer'@'google.com' - Ray Baxter


Tài khoản người dùng bao gồm tên người dùng và quyền truy cập cấp máy chủ.

Do đó, đây là truy vấn cung cấp tất cả tài khoản người dùng

SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;

109
2017-09-29 22:01



Điều này về cơ bản giống như câu trả lời của spkane. Lợi ích của việc kết nối cột người dùng và máy chủ lưu trữ là gì? - Iain Samuel McLean Elder
Một ví dụ: user@host định dạng được sử dụng để đặt mật khẩu. Bỏ qua máy chủ từ SET PASSWORD lệnh tạo ra một lỗi. SET PASSWORD FOR wordpressuser = PASSWORD('...'); tạo ra lỗi ERROR 1133 (42000): Can't find any matching row in the user table. Bao gồm máy chủ và nó hoạt động. SET PASSWORD FOR wordpressuser@localhost = PASSWORD('...');sản xuất Query OK, 0 rows affected (0.00 sec). - Iain Samuel McLean Elder
Câu trả lời hay nhất, bất cứ điều gì người trả lời có thể phàn nàn. Điều duy nhất tôi muốn thay đổi là phụ thêm ORDER BY user cho nó. - sjas


để tránh lặp lại người dùng khi họ kết nối từ nguồn gốc khác nhau:

select distinct User from mysql.user;

46
2017-07-16 03:28





Nếu bạn đang đề cập đến người dùng MySQL thực tế, hãy thử:

select User from mysql.user;

27
2017-10-26 10:33





MySQL lưu trữ thông tin người dùng trong cơ sở dữ liệu riêng của nó. Tên cơ sở dữ liệu là MySQL. Bên trong cơ sở dữ liệu đó, thông tin người dùng nằm trong một bảng, một tập dữ liệu, có tên user. Nếu bạn muốn xem những gì người dùng được thiết lập trong bảng người dùng MySQL, hãy chạy lệnh sau:

SELECT User, Host FROM mysql.user;

+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| root             | localhost |
| root             | demohost  |
| root             | 127.0.0.1 |
| debian-sys-maint | localhost |
|                  | %         |
+------------------+-----------+

24
2017-07-16 03:29





SELECT * FROM mysql.user;

Đó là một bảng lớn, do đó bạn có thể muốn chọn lọc hơn trên các trường bạn chọn.


20
2018-03-04 06:46



Tôi có 3 người dùng root với các máy chủ khác nhau. localhost, 127.0.0.1 và ::1. Tôi phải giữ cái nào và tôi phải xóa cái gì? Cảm ơn! - emotality
Nếu bạn không muốn mọi người kết nối qua mạng, tiêu chuẩn cũ là xóa tất cả những điều này. Ngày nay, mặc dù, có vẻ như đề nghị là để giữ cho những người localhost, vì họ không thể truy cập qua mạng anyway; điều này có nghĩa là bạn nên thay vào đó giữ Tất cả bọn họ. - trysis


Đăng nhập vào mysql dưới dạng root và gõ truy vấn sau

select User from mysql.user;

+------+
| User |
+------+
| amon |
| root |
| root |
+------+

17
2017-12-27 20:09



Tôi muốn nói +1 cho việc đề cập đăng nhập bằng root. Tôi đã thử mà không làm như vậy và nó không hoạt động;) - leenephi
Bạn cần cấp đặc quyền cho user1 để hiển thị danh sách người dùng. Nếu không có người dùng root, bạn sẽ gặp lỗi. Vì vậy, trước tiên cung cấp các đặc quyền. Đăng nhập với tư cách người dùng root rồi nhập lệnh GRANT SELECT ON mysql.user TO 'user1'@'localhost';   bây giờ đăng nhập như user1 và gõ lệnh select User from mysql.user;  Bạn sẽ thấy danh sách người dùng được hiển thị. :) +1 Thưởng thức - sandip divekar


Bảng mysql.db có thể quan trọng hơn trong việc xác định quyền của người dùng. Tôi nghĩ rằng một mục trong nó được tạo ra nếu bạn đề cập đến một bảng trong lệnh GRANT. Trong trường hợp của tôi bảng mysql.users cho thấy không có quyền cho người dùng khi nó rõ ràng là có thể kết nối và chọn, vv

mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host          | Db              | User   | Select_priv | Insert_priv | Update_priv | Del...

15
2018-05-05 12:19



Theo quan điểm của tôi, điều quan trọng là những gì người dùng được phép thực hiện trên cơ sở dữ liệu. Vì vậy, "SHOW GRANTS" khá hữu ích vì nó cho thấy ai được phép làm gì. - Willmore


Peter và Jesse là chính xác nhưng chỉ cần chắc chắn rằng bạn đầu tiên chọn DB mysql.

use mysql;

select User from mysql.user;

mà nên làm thủ thuật của bạn


11
2017-11-02 19:01



Nó không cần thiết để use mysql; trong trường hợp bạn phạm vi bảng vào cơ sở dữ liệu mysql như bạn đã làm. Bạn chỉ có thể select User from mysql.user; - vitaLee
Đang thêm use mysql; chỉ là để bạn có thể sử dụng select User from user; thay thế select User from mysql.user; vì nó thường là truy vấn một lần, không cần sử dụng db mysql - Dan
sau use mysql nếu bạn đã sử dụng select user from user; có thể là thứ gì đó, nhưng thay vào đó bạn đang sử dụng mysql.user, sử dụng use mysql lúc đầu không cần thiết. - Sнаđошƒаӽ


Tôi sử dụng điều này để sắp xếp người dùng, vì vậy các máy chủ được phép dễ dàng phát hiện hơn:

mysql> SELECT User,Host FROM mysql.user ORDER BY User,Host;

11
2017-09-09 11:12