2017-06-01 29 views
6

Tôi muốn bảo mật mysql bằng cách đặt mật khẩu gốc. tôi đặt lại mật khẩu gốc thành công:Mysql (MariaDB 10.0.29): Đặt mật khẩu gốc, nhưng vẫn có thể đăng nhập mà không hỏi mật khẩu?

MariaDB [(none)]> select Host, User, Password from mysql.user; 
+-----------+------+-------------------------------------------+ 
| Host  | User | Password         | 
+-----------+------+-------------------------------------------+ 
| localhost | root | *58319282EAB9E38D49CA25844B73DA62C80C2ABC | 
+-----------+------+-------------------------------------------+ 
1 row in set (0.00 sec) 

Nhưng, mysql sau khi đặc quyền tuôn ra, khởi động lại Mysql, tôi vẫn có thể đăng nhập (trên máy chủ địa phương) mà không cần gõ mật khẩu.

[email protected]:/# mysql 
Welcome to the MariaDB monitor. Commands end with ; or \g. 
Your MariaDB connection id is 10 
Server version: 10.0.29-MariaDB SLE 12 SP1 package 

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. 

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. 

MariaDB [(none)]> 

Tôi có thể buộc mật khẩu yêu cầu mysql khi kết nối như thế nào? Cảm ơn !

Trả lời

13

Trên bàn MySQL bạn có một hàng gọi là plugin:

MariaDB [(none)]> SELECT host, user, password, plugin FROM mysql.user LIMIT 0,1; 
+-----------+------+-------------------------------------------+--------+ 
| host  | user | password         | plugin | 
+-----------+------+-------------------------------------------+--------+ 
| localhost | root | *           |  | 
+-----------+------+-------------------------------------------+--------+ 
1 row in set (0.00 sec) 

Nếu tôi nhớ chính xác các plugin mặc định cho việc cài đặt mariaDB là 'điều khiển' hoặc 'unix_socket', và plugin này cho phép bạn nhập mà không cần mật khẩu, từ bảng điều khiển. Nhưng cũng vô hiệu hóa xác thực bằng mật khẩu và bạn không thể kết nối từ một máy khách khác.

Chỉ cần cập nhật trường plugin có giá trị trống (''), và sau đó, sử dụng FLUSH PRIVILEGES;

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass'); 
UPDATE mysql.user SET plugin = '' WHERE user = 'root' AND host = 'localhost'; 
FLUSH PRIVILEGES; 

Với điều này, bạn đã giải quyết được vấn đề.

+0

Thankyou @Sakura Kinomoto. Tôi đã làm điều đó nhưng vẫn không có may mắn! – thanhpt

+0

Không may mắn ... hãy kiểm tra bảng mysql.user của bạn nếu có người dùng khác đã bật plugin. Có thể bạn đang đăng nhập bằng một dòng khác, ví dụ root @% –

+0

'code'MariaDB [(none)]> chọn Host, User, Password, plugin từ mysql.user; + ----------- + -------- + --------------------------- ---------------- + -------- + | Máy chủ | Người dùng | Mật khẩu | plugin | + ----------- + -------- + --------------------------- ---------------- + -------- + | localhost | root | * 58319282EAB9E38D49CA25844B73DA62C80C2ABC | | + ----------- + -------- + --------------------------- ---------------- + -------- + 1 hàng trong bộ (0,00 giây) 'mã' Tôi chắc rằng người dùng bảng chỉ có một bản ghi (gốc @localhost) với giá trị plugin trống. – thanhpt

Các vấn đề liên quan