Tôi đang sử dụng tiện ích dòng lệnh MySQL và có thể điều hướng qua 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
.
Tôi đang sử dụng tiện ích dòng lệnh MySQL và có thể điều hướng qua 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
.
Câu trả lời:
Sử dụng truy vấn này:
SELECT User FROM mysql.user;
Sẽ xuất ra một bảng như thế này:
+-------+
| User |
+-------+
| root |
+-------+
| user2 |
+-------+
Như Matthew Scharley chỉ ra trong các nhận xét về câu trả lời này , bạn có thể nhóm theo User
cột nếu bạn chỉ muốn xem tên người dùng duy nhất.
User
, để chỉ nhận các giá trị người dùng duy nhất, vì có một hàng riêng biệt cho mỗi mục nhập user
@ host
.
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 mysql tiếp theo khởi động lại hoặc FLUSH PRIVILEGES;
loại bỏ người dùng khỏi bộ nhớ. Dưới đây là một ví dụ về một trong những bài đăng của tôi về việc thực hiện có DELETE FROM mysql.user
trách nhiệm: dba.stackexchange.com/questions/4614/ mẹo
SHOW GRANTS FOR 'user'@'host';
DISTINCT
từ khóa:SELECT DISTINCT user FROM mysql.user;
Tôi thấy định dạng này hữu ích nhất vì nó bao gồm trường máy chủ 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;
host
động khi làm việc với cơ sở dữ liệu mysql? [Mysql Noob]
host
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'
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 cho tất cả các tài khoản người dùng
SELECT CONCAT(QUOTE(user),'@',QUOTE(host)) UserAccount FROM mysql.user;
user@host
định dạng được sử dụng để thiết lập 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 các 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)
.
ORDER BY user
nó.
để tránh sự lặp lại của người dùng khi họ kết nối từ nguồn gốc khác nhau:
select distinct User from mysql.user;
MySQL lưu trữ thông tin người dùng trong cơ sở dữ liệu riêng của mình. Tên của 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 bộ dữ liệu, được đặt 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 |
| | % |
+------------------+-----------+
Nếu bạn đang đề cập đến người dùng MySQL thực tế, hãy thử:
select User from mysql.user;
SELECT * FROM mysql.user;
Đó là một bảng lớn để bạn có thể muốn chọn lọc hơn trên các lĩnh vực bạn chọn.
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!
Đăng nhập vào mysql bằng root và gõ truy vấn sau
select User from mysql.user;
+------+
| User |
+------+
| amon |
| root |
| root |
+------+
GRANT SELECT ON mysql.user TO 'user1'@'localhost';
ngay bây giờ đăng nhập với tên 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
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 đó được tạo 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 không hiển thị quyền cho người dùng khi rõ ràng nó có thể kết nối và chọn, v.v.
mysql> select * from mysql.db;
mysql> select * from db;
+---------------+-----------------+--------+-------------+-------------+-------------+--------
| Host | Db | User | Select_priv | Insert_priv | Update_priv | Del...
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;
Peter và Jesse là chính xác nhưng chỉ cần đảm bảo rằng trước tiên bạn chọn DB mysql.
use mysql;
select User from mysql.user;
đó nên làm trò lừa của bạn
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;
use mysql;
chỉ là để bạn có thể sử dụng select User from user;
thay 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 mys db
use mysql
nếu bạn đã sử dụng select user from user;
hơn đó có thể là một cái gì đó, nhưng thay vào đó bạn đang sử dụng mysql.user
, điều đó làm cho việc sử dụng use mysql
lúc đầu không cần thiết.
Điều này hiển thị danh sách người dùng duy nhất:
SELECT DISTINCT User FROM mysql.user;
$> mysql -u root -p -e 'Select user from mysql.user' > allUsersOnDatabase.txt
Thực hiện lệnh này trên dấu nhắc linux trước tiên sẽ yêu cầu mật khẩu của người dùng root mysql, khi cung cấp mật khẩu chính xác, nó sẽ in tất cả người dùng cơ sở dữ liệu vào tệp văn bản.
Tôi thấy một thông tin hữu ích hơn vì nó cung cấp thêm thông tin về các đặc quyền DML và 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;
sử dụng truy vấn trên để có được người dùng Mysql