Kiểm tra thông tin đăng nhập MySQL từ dòng lệnh Linux?


16

Làm thế nào để bạn kiểm tra thông tin đăng nhập MySQL từ dòng lệnh trên máy chủ Linux?

Câu trả lời:


5

Câu trả lời của @ PhilCâu trả lời của @ Mr.Brownstone đủ cho câu hỏi của bạn, vì vậy +1 cho cả hai.

Đối với những điều sau đây, giả sử bạn đang đăng nhập bằng tên người dùng myuser

Khi bạn đã kết nối với mysql, bạn nên chạy truy vấn sau:

SELECT USER(),CURRENT_USER();
  • USER () báo cáo cách bạn đã cố xác thực trong MySQL
  • CURRENT_USER () báo cáo cách bạn được phép xác thực trong MySQL

Đôi khi, chúng khác nhau. Điều này có thể cung cấp cho bạn cái nhìn sâu sắc về lý do tại sao bạn được phép đăng nhập vào mysql.

Đây là một truy vấn khác bạn cần chạy:

SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';

Điều này sẽ cho bạn thấy những cách mà bạn được phép đăng nhập như myuser.

Nếu bạn thấy 'myuser'@'localhost', thì bạn có thể xác thực từ bên trong Máy chủ DB.

Nếu bạn thấy 'myuser'@'127.0.0.1'và không thấy 'myuser'@'localhost', thì bạn có thể xác thực lại từ bên trong Máy chủ DB nhưng bạn phải chỉ định --protocol=tcptừ dòng lệnh.

Nếu bạn thấy 'myuser'@'%', thì bạn có thể đăng nhập từ xa từ bất kỳ máy chủ nào.

Nếu bạn thấy 'myuse'r@'10.20.30,%', thì bạn chỉ có thể thực hiện đăng nhập từ xa từ 10,20.30.% Netblock.

Khi bạn thấy 'mysql.user' có gì cho người dùng của mình, bạn có thể muốn cho phép hoặc hạn chế myuser khỏi logggin theo một cách chứ không phải theo cách khác.

Nếu bạn chỉ muốn kiểm tra xem mật khẩu cho myuserwhateverpassword, bạn có thể làm như sau:

SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');

Bạn có thể kiểm tra từ dòng lệnh như sau:

PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`

Nếu bạn không rootvà chỉ muốn kiểm tra myuser, bạn có thể làm điều này:

PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`

Nếu bạn nhận được 1, mật khẩu cho myuser được xác minh là tốt.


13
mysql -h host -u user -p<whatever> -e"quit"

Điều này cho phép bạn sử dụng cùng một chuỗi kết nối mà bạn sử dụng để gửi các truy vấn đến máy chủ theo chương trình. Bạn có thể thêm || exit 1vào cuối để tự động thoát trên các đối số không hợp lệ. Bạn cũng có thể muốn chuyển hướng stderr đến /dev/nullnếu bạn không thích thông báo lỗi MySQL được tạo tự động.


6

Bạn có thể sử dụng lệnh sau (giả sử rằng bạn đã thiết lập mysql trong PATH của mình):

máy chủ mys -h -u người dùng -p

Chỉ cần thay thế máy chủngười dùng bằng các giá trị chính xác và sau đó bạn sẽ được nhắc nhập mật khẩu của mình.


2
Tôi muốn kiểm tra theo chương trình. Giống như một cái gì đó trả về đúng hay sai.
Jake Wilson

2
mysql --user=user_name --password=your_password dbname

Là câu hỏi của bạn đơn giản, hoặc có một trường hợp cụ thể bạn cần kiểm tra?

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.