Làm thế nào để MySQL có quyền người dùng root của máy?


0

Tôi đang cố chạy mysqlcheck. Nó thất bại với:

$ sudo su -
# mysqlcheck --auto-repair --all-databases
mysqlcheck: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect

Các câu hỏi và câu trả lời khác nói để sửa đổi hoặc đặt lại mật khẩu MySQL. Tôi không thực sự muốn làm điều đó vì tôi không biết tác động. Nếu có bất kỳ kịch bản sử dụng nó, sau đó tôi sẽ phá vỡ chúng. Tối thiểu, tôi phải chia sẻ nó với hai quản trị viên hệ thống [bán thời gian] khác, vì vậy điều này chủ yếu là một nỗi đau.

Điều tôi muốn là MySQL nhận ra người dùng root của máy (uid 0) và cho phép nó với tất cả các đặc quyền được trao cho root.

Tôi đang làm việc trên CentOS 7.2. Làm thế nào để tôi có MySQL cho phép người dùng root?


Dưới đây là một số câu hỏi liên quan. Tất cả đều dẫn trở lại để sửa đổi mật khẩu.

Câu trả lời:


1

Trong MySQL 5.5+, bạn có thể sử dụng auth_socket plugin xác thực cho việc này:

CREATE USER 'root'@'localhost' IDENTIFIED WITH auth_socket;

MariaDB 5.2.0+ có tương tự unix_socket plugin - theo như tôi biết, nó thậm chí còn hoạt động theo mặc định:

INSTALL PLUGIN unix_socket SONAME 'auth_socket';
CREATE USER root IDENTIFIED VIA unix_socket;

Tương tự, PostgreSQL có phương thức auth "cục bộ" trong nó pg_hba.conf và cho phép nó theo mặc định.

Trên Unix, cơ chế chung thường được gọi là "ngang hàng" , như trong SO_PEERCRED. (Tương đương với Windows thường được gọi là "Xác thực bản địa Windows".)


Cảm ơn @Grawity. Bạn có kiến ​​thức về Linux và Unix thật tuyệt vời. Tôi cần kiểm tra làm những điều trên (ngây thơ, mặc dù tôi sẽ lật một chút mysql.conf ). Tôi sẽ phải lấy lại cho bạn một sự chấp nhận.
jww

0

Dựa trên những gì bạn nói tôi sẽ đưa ra giả định rằng người dùng MySQL của bạn 'root'@'localhost' có mật khẩu kể từ khi bạn đề cập đến việc chia sẻ với người khác. Và vì điều đó tôi giả sử bạn vẫn biết mật khẩu đó.

Bây giờ chúng ta hãy xem thông báo lỗi nói gì:

Access denied for user 'root'@'localhost' (using password: NO)

Vì vậy, những gì tôi đang thấy ở đây là bạn đang cố gắng kết nối với MySQL mà không cung cấp mật khẩu trong khi người dùng mysql có mật khẩu. Rõ ràng là không hoạt động.

Tôi đặt cược mysqlcheck --auto-repair --all-databases -p sẽ làm việc. Nó sẽ hỏi mật khẩu và bạn nên đi.


Đã nói tất cả những gì tôi khuyên bạn không nên sử dụng tài khoản MySQL gốc cho những thứ khác ngoài việc quản trị máy chủ MySQl (kể từ khi bạn đề cập If there are any scripts using it ), chỉ cần tạo một người dùng MySQL khác cho tập lệnh đó với các quyền thích hợp. Và nếu bạn thực sự cần thiết lập lại mật khẩu gốc, việc nói với hai đồng nghiệp khác không phải là vấn đề quá lớn phải không? Nếu đó là tôi sẽ đánh giá các phương thức giao tiếp của công ty bạn ....


"sử dụng tài khoản root của MySQL ..." - Trên thực tế, đó là người dùng root của máy; và không phải là tài khoản MySQL. Thực tế, tôi đang yêu cầu một số tích hợp MySQL vào các cơ chế bảo mật của cài đặt Linux cục bộ.
jww

chắc chắn người dùng root máy, nhưng điều đó không thay đổi thực tế rằng MySQL chỉ sử dụng bất cứ tên người dùng máy nào nếu không được cung cấp. Thực tế, bạn vẫn sử dụng tài khoản root của MySQL
Olle Kelderman

" mysqlcheck --auto-repair --all-databases -p " - nhắc nhở mật khẩu ngay cả khi chạy với tư cách người dùng root với sudo su -.
jww

1
Vì vậy, về cơ bản câu hỏi này là "Làm thế nào để tôi đăng nhập vào MySQL với người dùng MySQL có mật khẩu mà không sử dụng mật khẩu"?
Olle Kelderman

Vâng, tôi đã sử dụng mật khẩu với sudo su -. Độ cao đã được xác thực và bối cảnh bảo mật mới có sẵn. Những gì tôi muốn là cho MySQL để tôn vinh hoặc sử dụng nó.
jww
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.