Mật khẩu quản trị viên của MariaDb dường như không hoạt động


8

Tôi vừa cài đặt MariaDbtrên Ubuntu Gnome mới và chạy mysql_secure_installation sau đó tôi đặt mật khẩu quản trị viên đàng hoàng, xóa người dùng ẩn danh, v.v.

Sau đó tôi nhận ra một số hành vi lạ liên quan đến mật khẩu quản trị viên:

  • Nếu tôi cố gắng đăng nhập từ tài khoản người dùng thông thường của mình bằng lệnh mysql -u root -ptôi luôn gặp lỗi: ERROR 1698 (28000): Access denied for user 'root'@'localhost'
    Tôi khá chắc chắn rằng mình đã nhập đúng mật khẩu mà tôi đã đặt với mysql_secure_installation trước đó ...
  • Khi tôi chạy lệnh từ root bằng cách sử dụng sudo mysql -u root -p, tôi luôn có quyền truy cập vào cơ sở dữ liệu, bất kể tôi thực sự nhập mật khẩu nào ...

Đây có phải là hành vi bình thường, tôi đang làm gì sai hay bằng cách nào đó tôi đã làm hỏng việc cài đặt?

Câu trả lời:


16

Đó là âm thanh hành vi phù hợp với tạo điều kiện cho các Plugin cho xác thực ổ cắm cho người dùng root, nơi tin tưởng MariaDB hoạt động thông tin hệ thống nhận qua socket và không dựa vào một mật khẩu. Bằng cách sử dụng sudohoặc đăng nhập với quyền root, bạn có thể kết nối với máy chủ cơ sở dữ liệu dưới quyền root, vì bạn đã root trên HĐH, nhưng những người dùng HĐH khác thì không thể.

Bạn có thể xóa tùy chọn đó bằng:

$ sudo mysql -u root

mysql> use mysql;
mysql> update user set plugin='' where User='root';
mysql> flush privileges;

và sau đó bạn nhận được hành vi mong đợi bất kỳ người dùng nào có mật khẩu gốc MariaDB sẽ có thể đăng nhập với quyền root.

Cách khác là thiết lập một người dùng khác, không phải root, cũng có đầy đủ đặc quyền của quản trị viên và sử dụng quyền đó, chứ không phải root, cho mục đích quản trị viên:

$ sudo mysql -u root
mysql> CREATE USER 'finley'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'finley'@'localhost'
->     WITH GRANT OPTION;

0

Câu trả lời từ HBruijn được chỉ định sử dụng

update user set plugin='' where User='root';

Tuy nhiên, điều này đã phá vỡ hệ thống đăng nhập đối với tôi, vì không ai có thể đăng nhập được nữa (dù có sử dụng đúng mật khẩu hay không, và sudo hay không)

Để tôi làm cho nó hoạt động, tôi cần sử dụng cái này thay thế:

update user set plugin="mysql_native_password" where User='root';
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.