Cho phép truy cập không mật khẩu vào MySQL


15

Làm cách nào để xóa mật khẩu cho MySQL? Tôi không muốn có mật khẩu để kết nối với cơ sở dữ liệu. Máy chủ của tôi đang chạy Ubuntu.


Chỉ là vấn đề quan tâm, tại sao bạn không muốn có mật khẩu?
John Gardeniers

Ví dụ: tôi gặp lỗi khi chạy "dpkg-cấu hình lại phpmyadmin". Nó dừng với lỗi 1045 với quyền truy cập bị từ chối root @ localhost "mật khẩu: không" kết thúc.
Lacek

Câu trả lời:


29

Cá nhân, tôi nghĩ thay vào đó tốt hơn là đặt mật khẩu và lưu mật khẩu trong /root/.my.cnf:

Đầu tiên:

mysqladmin -u root password 'asdfghjkl'

Sau đó chỉnh sửa tập tin .my.cnf của root:

[client]
password = asdfghjkl

Hãy chắc chắn chmod 0600 .my.cnf.

Bây giờ bạn có mật khẩu nhưng bạn không còn được nhắc nhập nữa. Cài đặt máy chủ MySQL mặc định của tôi là một mật khẩu duy nhất hoàn toàn ngẫu nhiên cho mỗi máy chủ MySQL, được lưu trong tệp .my.cnf như thế này.


1
Tôi hoàn toàn đồng ý với cài đặt môi trường của bạn để tự động xác thực bạn và xóa mật khẩu.
Zoredache

2
Bạn có thể cần trích dẫn xung quanh mật khẩu đó trong .my.cnf. Nó không làm việc cho tôi mà không có.
dùng67641

1
@ user67641: Có thể phụ thuộc vào phiên bản và mật khẩu của bạn ... Tất cả đều là chuỗi ký tự chữ và số ngẫu nhiên dài (không có ký tự đặc biệt) và không cần trích dẫn.
freiheit

2
Nếu bạn cần tạo /root/.my.cnf, bạn nên đặt 0600 quyền một cách rõ ràng để đảm bảo không người dùng nào khác có thể rình mò. Hầu hết thời gian người dùng bình thường không thể xuống / root, nhưng sự hoang tưởng thêm hầu như luôn được bảo hành.
Dale Anderson

Thiếu mv ./+%Y%m%d. $ Ds.sql $ OUTPUT` giữa mysqldump và gzip
Siddharth

9

Nếu bạn có mật khẩu được đặt cho MySQL, hãy làm theo các hướng dẫn tại Khôi phục mật khẩu gốc của MySQL và sau đó đặt mật khẩu của bạn thành null:

Cho 5.7.6 trở lên

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass'

Cho 5.7.5 trở về trước

update user set password=PASSWORD("") where User='root';

* cần khởi động lại DB (xem hướng dẫn tại liên kết) để điều này có hiệu lực.

sudo service mysql restart

trong trường hợp này, đừng quên "tuôn ra đặc quyền;"
Marco Ramos

@meyosef - vui lòng đánh dấu một câu trả lời là đã trả lời nếu nó giải quyết vấn đề của bạn (nhấp vào dấu kiểm màu xanh lá cây dưới số phiếu bầu).
jneves

Tôi nghĩ rằng tôi có thể sử dụng mật khẩu trống chỉ cho ổ cắm Unix và không phải loopback, nhưng điều đó là không thể. Các unix_socketplugin làm một điều hơi khác nhau.
lưu vực

9

Có, ít mật khẩu có thể là một điều tốt. Nhưng đừng chỉ mở cơ sở dữ liệu cho mọi người.

thông qua unix_socket:

grant usage on *.* to 'root'@'localhost' identified via unix_socket;

Điều này cung cấp cho bạn tài khoản mysql không mật khẩu cho người dùng root đã đăng nhập cục bộ. Btw. đây là mặc định trong các bản phát hành ubfox / debian gần đây.

some_user@box: mysql -u root  # denied
root@box: mysql               # good
some_user@box: sudo mysql     # good, if "some_user" has sudo rights.

Các slide giải thích: https://www.sl slideshoware.net/ottokekalainen/less-passwords-more-security-unix-socket-authentication-and-other-mariadb-hardening-tips .


2
Chào mừng đến với SF! Câu trả lời đầu tiên đáng yêu: rõ ràng, một bản tóm tắt tốt, một liên kết để khám phá thêm, và nó thêm một cái gì đó vào kho câu trả lời hiện có. Tôi rất vui mừng khi trở thành người đầu tiên của bạn và tôi hy vọng bạn ở lại để viết thêm câu trả lời như thế này.
MadHatter hỗ trợ Monica

Các slide đều ổn, nhưng đây là tài liệu thực tế: mariadb.com/kb/en/l Library / authentication
plugin

5

Bạn cũng có thể làm:

grant all privileges on *.* to 'root'@'localhost' identified by '';

1

Tôi khá chắc chắn rằng theo mặc định không có mật khẩu nếu người dùng quản trị viên của bạn và truy cập nó cục bộ. Bạn đang tìm thấy một cái gì đó khác nhau?

Cái này có hoạt động không?

#> mysqladmin -u root password ''
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.