[MySQL] Hướng dẫn cấu hình đăng nhập MySQL console không cần nhập user-pass

Hướng dẫn cấu hình đăng nhập MySQL console mà không cần nhập thông tin user/pass trên terminal.

Thông thường thì nếu bạn muốn đăng nhập vào giao diện command-line (console) của dịch vụ MySQL bạn sẽ nhập trực tiếp thông tin user/pass trên command-line ssh terminal chẳng hạn :

# mysql -uroot -p
Enter password: 

 
Còn bây giờ bạn sẽ nghĩ đến 2 kịch bản sau để không cần/muốn đăng nhập thông tin mật khẩu trên terminal :
+ Bạn không muốn phải gõ mật khẩu để đăng nhập MySQL command-line. Vì bạn quá lười ? vì bạn không muốn ai nhìn thấy mình gõ mật khẩu ? Bạn tự tin là hệ thống khó ai truy cập vào để biết mật khẩu database chứa ở file.
+ Nếu bạn muốn thực thi 1 script chạy ở môi trường non-interactive, tức là môi trường thực thi chương trình lệnh bạn không thể nhập input từ keyboard vào được ấy, thì hẳn phải có 1 cách nào đó để load thông tin user/pass tương ứng cho các chương trình script đó sử dụng đăng nhập thực hiện lệnh MySQL.

Vậy để giải quyết 2 kịch bản trên, bạn sẽ lưu trữ thông tin user/pass đăng nhập MySQL xuống 1 file text. Ví dụ, trên hệ thống unix bạn sẽ chứa thông tin đó ở file “.my.cnf” tại thư mục $HOME của user tương ứng. Các chương trình của dịch vụ MySQL như mysql, mysqldump, mysqlcheck,… khi tiến hành đăng nhập sẽ tìm kiếm file “.my.cnf” ở thư mục $HOME của user đang thực thi chương trình để tìm kiếm thông tin đăng nhập. Nếu không có sẽ xét đến các input thông tin trên terminal. Nội dung file đó như sau :

# vi ~/.my.cnf
[client]
user=root
password=matkhaucuaban

 
Sau đó ta sẽ phân quyền để bảo mật file này chỉ được phép truy xuất bởi user đó hoặc root. Ta set mode 400 hoặc 600 nhé.

# chmod 600 ~/.my.cnf

 
Như vậy là xong rồi, bây giờ bạn có thể đăng nhập MySQL mà không cần phải nhập thông tin user/pass từ bàn phím. Hãy thử xem nào.

# mysql

Lưu ý :
– Nếu bạn để thông tin file ở đường dẫn khác mặc định “~/.my.cnf” và bạn muốn chương trình mysql được chỉ định load thông tin file ở đường dẫn đó thì hãy dùng option “–defaults-extra-file=” . Option này sẽ chỉ cho MySQL biết đường dẫn cụ thể và chính xác để load thông tin user/pass nếu có trong file đó để sử dụng.
– Bạn nên sử dụng đường dẫn tuyệt đối và cụ thể nhé.

# mysql --defaults-extra-file=/tmp/.my.cnf

 
Xong rồi các bạn nhé. Chúc các bạn thành công.

Previous article[MySQL] Hướng dẫn cấu hình log “slow query” trên dịch vụ MySQL
Next article[MySQL] Fix lỗi “mysqldump: Error: Can’t create/write to file /tmp/..”‏ trên dịch vụ MySQL
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !