Bạn cần sử dụng -p
cờ để gửi mật khẩu. Và thật khó vì bạn không được có khoảng trắng giữa -p
và mật khẩu.
$ mysql -h "server-name" -u "root" "-pXXXXXXXX" "database-name" < "filename.sql"
Nếu bạn sử dụng dấu cách sau -p
nó làm cho ứng dụng khách mysql nhắc bạn một cách tương tác về mật khẩu và sau đó nó diễn giải đối số lệnh tiếp theo dưới dạng tên cơ sở dữ liệu:
$ mysql -h "server-name" -u "root" -p "XXXXXXXX" "database-name" < "filename.sql"
Enter password: <you type it in here>
ERROR 1049 (42000): Unknown database 'XXXXXXXX'
Trên thực tế, tôi thích lưu trữ người dùng và mật khẩu trong ~ / .my.cnf nên tôi không phải đặt nó trên dòng lệnh:
[client]
user = root
password = XXXXXXXX
Sau đó:
$ mysql -h "server-name" "database-name" < "filename.sql"
Nhận xét lại của bạn:
Tôi luôn chạy các lệnh mysql ở chế độ hàng loạt như trên trên dòng lệnh và trong các tập lệnh shell mọi lúc. Thật khó để chẩn đoán điều gì sai với tập lệnh shell của bạn, bởi vì bạn chưa chia sẻ tập lệnh chính xác hoặc bất kỳ đầu ra lỗi nào. Tôi khuyên bạn nên chỉnh sửa câu hỏi ban đầu của mình ở trên và cung cấp ví dụ về những gì sai.
Ngoài ra, khi khắc phục sự cố tập lệnh shell, tôi sử dụng -x
gắn cờ để tôi có thể biết cách nó thực thi từng lệnh:
$ bash -x myscript.sh