Câu hỏi Tại sao không sudo -S làm việc cho lệnh 'mysql'?


Tôi thường chạy sudo mysql database < database.dump và nhập mật khẩu vào lời nhắc.

Để tự động hóa điều này, tôi đã cố thực hiện echo 'password' | sudo -S mysql database < database.dump nhưng nó không nhận ra mật khẩu của tôi.

tôi có thể sudo -S các lệnh khác bình thường. Rắc rối có thể là cái gì?


1
2017-10-25 18:41


gốc




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


No you do not

Nếu bạn cần phải làm một cái gì đó như thế này như là người chủ, hãy làm điều đó đúng cách.

  • Tạo tập lệnh mới trong /usr/local/bin/ như /usr/local/bin/my_mysql_task. Nó sẽ cần phải được sở hữu bởi root và chmod +xed. Điều quan trọng ở đây là không ai ngoài root có thể chỉnh sửa nó.
  • Sau đó, để người dùng của bạn chạy tập lệnh đó dưới dạng root mà không cần mật khẩu bằng cách chạy sudo visudo và thêm một số thông tin như sau:

    username   ALL=NOPASSWD: /usr/local/bin/my_mysql_task
    

Bây giờ, bạn không chỉ không đăng nhập mật khẩu tài khoản của mình ở mọi nơi (theo cách sẽ hiển thị trong ps cho hầu hết người dùng khác) nhưng bạn không phải là đường ống, do đó giải quyết vấn đề cốt lõi của bạn.

Không bao giờ nhúng mật khẩu. Nó không cần thiết.


4
2017-10-25 19:22



Giải pháp tốt. Chỉ vì tò mò, bạn có biết tại sao đường dây của tôi không hoạt động? Nice pic, btw. - ftkg
Tôi nghĩ Radu có lẽ đang đi đúng hướng nhưng tôi sẽ quấn nó hoàn toàn hơn một chút: echo "password" | sudo -S sh -c "mysql database < database.dump"  Chỉnh sửa: Tôi có thể xác nhận rằng nó hoạt động tốt. - Oli♦


Sự cố xảy ra vì bạn sử dụng chuyển hướng đường ống và đầu vào trong cùng một lệnh và trong trường hợp này sudo cố đọc mật khẩu của bạn database.dump tập tin. Đúng cách sẽ là:

mysql_cmd="mysql database < database.dump"
echo 'password' | sudo -S $mysql_cmd

hoặc là:

alias mysql_cmd="mysql database < database.dump"
echo 'password' | sudo -S mysql_cmd

hoặc, như Oli chỉ vào nhận xét này:

echo "password" | sudo -S sh -c "mysql database < database.dump"

1
2017-10-25 18:52



một cái gì đó sai với dòng: [sudo] password for user: mysql Ver 14.14 Distrib 5.5.32, for debian-linux-gnu (x86_64) using readline 6.2 [...] - ftkg