Lưu trữ mật khẩu máy khách MySQL hoặc xác thực mật khẩu ít xác thực


11

Tôi đang sử dụng máy khách dòng lệnh mysql và tôi không muốn cung cấp mật khẩu mỗi khi tôi khởi động máy khách. Những lựa chọn của tôi là gì?


Vui lòng chấp nhận câu trả lời cho một số câu hỏi trước đây của bạn, vì có vẻ như một số câu trả lời đã là giải pháp chính xác - nhấp vào dấu kiểm được phác thảo ở bên trái của câu trả lời.
Shane Madden

Câu trả lời:


15

Tạo một tập tin có tên .my.cnftrong thư mục nhà của bạn trông như thế này. Đảm bảo rằng các quyền của hệ thống tập tin được đặt sao cho chỉ người dùng sở hữu mới có thể đọc nó (0600).

[client]
host     = localhost
user     = username.
password = thepassword
socket   = /var/run/mysqld/mysqld.sock
#database = mysql

Vì bạn cũng đã gắn thẻ câu hỏi của bạn mysqldump, bạn nên xem câu hỏi này.

Sử dụng mysqldump trong cron job mà không cần mật khẩu root

Cập nhật (2016-06-29) Nếu bạn đang chạy mysql 5.6.6 trở lên, bạn nên xem công cụ mysql_config_editor cho phép bạn lưu thông tin đăng nhập trong một tệp được mã hóa. Cảm ơn Giovanni đã đề cập điều này với tôi.


Thật tuyệt khi nó hoạt động .. Thanku
Chuyến đi

Nếu câu trả lời đã giải quyết vấn đề của bạn thì bạn nên nhấp vào dấu kiểm để chấp nhận nó.
Zoredache

1
Điều này sẽ lưu trữ mật khẩu dưới dạng văn bản đơn giản, một thực tế mà tôi không khuyến khích từ quan điểm bảo mật.
Giovanni

@Giovanni chắc chắn, mặc dù mysql_config_editor bạn đề cập trong câu trả lời của bạn, trong khi hữu ích không có sẵn cho đến khi bạn đang chạy 5.6.6. Ngày nay vẫn có bản phân phối có phiên bản cũ hơn.
Zoredache

Nhưng làm thế nào điều này được thực hiện trên Windows?
Wolfpack'08

9

Bạn có thể sử dụng mysql_config_editortiện ích để lưu trữ thông tin xác thực trong tệp đường dẫn đăng nhập được mã hóa có tên .mylogin.cnf.

Để tạo một bộ thông tin đăng nhập mới chạy:

mysql_config_editor set --host=db.host.org --user=dbuser --password

và nhập mật khẩu của bạn khi được nhắc.

Điều này sẽ lưu trữ thông tin xác thực của bạn trong clientđường dẫn đăng nhập mặc định .

Bạn có thể lưu trữ nhiều thông tin xác thực bằng cách chỉ định một --login-pathtùy chọn khác nhau :

mysql_config_editor set --login-path=db2 --host=db2.host.org --user=dbuser --password

Theo mặc định, mysqlmáy khách đọc [client][mysql]các nhóm từ các tệp tùy chọn khác, do đó, nó cũng đọc chúng từ tệp đường dẫn đăng nhập. Với một --login-pathtùy chọn, các chương trình máy khách cũng đọc đường dẫn đăng nhập được đặt tên từ tệp đường dẫn đăng nhập. Các nhóm tùy chọn đọc từ các tệp tùy chọn khác vẫn giữ nguyên. Hãy xem xét lệnh này:

mysql --login-path=db2

Các mysqlkhách hàng đọc [client][mysql]từ các tập tin tùy chọn khác, và [client], [mysql][mypath]từ đường dẫn tập tin đăng nhập.

Để in ra tất cả các thông tin được lưu trữ trong tập tin cấu hình chạy:

mysql_config_editor print --all=true

Thông tin thêm về tiện ích có thể được tìm thấy tại "mysql_config_editor - Tiện ích cấu hình MySQL" .


2

Chúng ta không được giả vờ rằng .mylogin.cnf hoàn toàn an toàn vì tôi có thể sử dụng my_print_defaults -s [use your login-path]để làm cho mật khẩu đó xuất hiện trong văn bản thuần túy. Đây là lý do tại sao MariaDB không hỗ trợ phương pháp 'bảo mật bằng cách tối nghĩa' này.


Vì vậy, những gì câu trả lời cho câu hỏi này sau đó?
Pierre.Vriens

0

Có một cách khác, trực giao với các phương pháp được đề cập ở trên, nhưng nó có thể là một rủi ro bảo mật nếu người khác đang theo dõi màn hình của bạn, HOẶC nếu bạn đang lưu lịch sử của mình .

Tuy nhiên, đây là một tùy chọn, sẽ ngăn bạn khỏi bị nhắc, và một tùy chọn mà tôi sử dụng trong các hình ảnh docker vứt đi và như vậy ....

mysql -u YOUR_USER --password=YOUR_PASSWORD_HERE your_database -e "your query" etc.

Bạn sẽ không được nhắc, bạn có thể đặt bí danh tạm thời trong trình bao nếu bạn muốn.

Sử dụng cẩn thận.

mysql Ver 14,14 Phân phối 5.5.61-38.13, cho debian-linux-gnu (x86_64) bằng cách sử dụng readline 5.1

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.