Cho phép người dùng root linux truy cập root mysql mà không cần mật khẩu


28

Trên cPanel khi tôi đăng nhập bằng root và gõ "mysql" mà không có tên máy chủ và mật khẩu, nó cho phép tôi truy cập trực tiếp vào người dùng root mysql.

Tôi muốn làm điều này cho một trong những máy chủ không phải cpanel của tôi, nơi người dùng root linux nhận được mật khẩu ít đăng nhập vào người dùng root mysql theo cách tương tự như trên cPanel.

Điều này có thể không?

Câu trả lời:


53

Cách dễ nhất để làm điều này là sử dụng phần máy khách của tệp ~ / .my.cnf và thêm thông tin đăng nhập vào đó.

[client]
user=root
password=somepassword
...

đó là một ý tưởng tốt để làm cho tập tin đó chỉ có thể đọc được bằng root.


1
Có, nó hoạt động và đây là cách cPanel đang thực hiện
user1066991 27/12/13

9
Tôi cần hướng đến một vấn đề bảo mật tiềm ẩn .. Bạn cần cẩn thận một chút rằng bạn không chỉnh sửa vấn đề này trong /etc/my.cnfđó máy chủ mysql sử dụng để khởi động. Nếu bạn đặt người dùng root mysql vào /etc/my.cnfBẤT CỨ AI thì có thể sử dụng máy chủ mysql với TẤT CẢ các đặc quyền trên MỌI cơ sở dữ liệu mà không cần mật khẩu. Iain chỉ về phía người dùng vỏ .my.cnftrong nhà gốc là điều tất nhiên.
Koen van der Rijt

Nếu không có tập tin ~ / .my.cnf thì sao? Nếu tôi tạo nó và khởi động lại mysqld, thì tôi có nên làm điều này không?
Amalgovinus

21

Đối với mysql 5.7+, nếu bạn đặt mật khẩu trống cho thiết lập ban đầu, mysql sẽ tự động sử dụng auth_socketlàm chiến lược. Một nỗ lực để cập nhật mật khẩu mà không thay đổi chiến lược sẽ không có kết quả. Bạn luôn có thể đăng nhập mà không cần sử dụng mật khẩu nếu người dùng của bạn là root.

Giải pháp Chạy lệnh sau để thay đổi chiến lược xác thực và đặt mật khẩu

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''

tham khảo: https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/


3
Tôi đã phải thêm một chuỗi trống vào cuối để làm cho nó hoạt động:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
kramer65

Intersting @kramer, chỉ hoạt động nếu tôi đặt nó là bạn ... BY "";. Cảm ơn!
Juan Antonio

Nó đang thay đổi mật khẩu thành 'ANY_PASSWORD' và không xóa mật khẩu. Để xóa và đăng nhập mà không cần mật khẩu, hãy đặt nó thành một chuỗi trống.
Fernando Kosh

7

Kể từ MySQL 5.6.6, bạn có thể sử dụng mysql_config_editor để tạo một tệp được mã hóa sẽ tự động đăng nhập bạn:

mysql_config_editor set --login-path=client --host=localhost --user=root --password

Sau đó nhập mật khẩu khi được nhắc.

Lưu ý: nếu mật khẩu của bạn có '#' trong đó và có thể các ký tự khác, hãy sử dụng dấu ngoặc đơn khi nhập mật khẩu.


Bạn có thể giải thích về nhận xét trích dẫn đơn? Nó đang nhắc bạn nhập mật khẩu trên thiết bị đầu cuối, bạn có đang bọc mật khẩu trong các dấu ngoặc đơn không
user2299958

Có, tôi thấy rằng việc nhập nó mà không có dấu ngoặc kép sẽ không hoạt động nếu nó có các ký tự đặc biệt. Vì vậy, khi được nhắc, chỉ cần nhập '(trích dẫn đơn), sau đó nhập mật khẩu, sau đó'.
Brian Det mét

0

Tạo một tệp chỉ chứa mật khẩu gốc mysql và chỉ root mới có thể đọc được.

# ls -l /root/.mysqlpw 
-rw------- 1 root root 7 2013-08-19 13:24 /root/.mysqlpw

Bạn có thể nhập cơ sở dữ liệu với

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase < databasedump.sql

hoặc kết nối với cơ sở dữ liệu của bạn và đưa ra các lệnh mysql

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20460
Server version: 5.1.63-0ubuntu0.10.04.1 (Ubuntu)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

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

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| yourdatabase       |
+--------------------+
3 rows in set (0.00 sec)

mysql> show tables;
...

5
Đây là công việc nhiều hơn so với câu trả lời khác. Và mật khẩu của bạn quá ngắn. :)
Michael Hampton

8
Đừng làm điều này. Nó đặt mật khẩu trên dòng lệnh mà bất kỳ ai cũng có thể đọc với ps(1)
camh

Đó thực sự là một ý tưởng không hay
Fernando Kosh
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.