อนุญาตให้ผู้ใช้รูทลีนุกซ์ mysql เข้าถึงรูทได้โดยไม่ต้องใช้รหัสผ่าน


28

ใน cPanel เมื่อฉันเข้าสู่ระบบในฐานะ root และพิมพ์ "mysql" โดยไม่มีชื่อโฮสต์และรหัสผ่านมันทำให้ฉันสามารถเข้าถึงผู้ใช้ root ของ mysql ได้โดยตรง

ฉันต้องการทำสิ่งนี้สำหรับเซิร์ฟเวอร์ที่ไม่ใช่ cpanel ของฉันซึ่งผู้ใช้รูทลินุกซ์ได้รับรหัสผ่านเข้าสู่ระบบน้อยกว่าผู้ใช้รูท mysql ในลักษณะเดียวกับที่ทำบน cPanel

เป็นไปได้ไหม

คำตอบ:


52

วิธีที่ง่ายที่สุดในการทำเช่นนี้คือใช้ส่วนไคลเอนต์ของไฟล์ ~ / .my.cnf และเพิ่มข้อมูลประจำตัวที่นั่น

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

เป็นความคิดที่ดีที่จะทำให้ไฟล์นั้นสามารถอ่านได้โดยรูทเท่านั้น


1
ใช่มันใช้งานได้และนี่คือวิธีที่ cPanel กำลังทำอยู่
user1066991

9
ฉันต้องชี้ไปที่ปัญหาความปลอดภัยที่อาจเกิดขึ้น .. คุณต้องระวังนิดหน่อยว่าคุณจะไม่แก้ไขสิ่ง/etc/my.cnfที่เซิร์ฟเวอร์ mysql ใช้ในการบูตเครื่อง หากคุณใส่ผู้ใช้ root mysql ใน/etc/my.cnfทุกคนสามารถใช้เซิร์ฟเวอร์ mysql ด้วยสิทธิ์ทั้งหมดในฐานข้อมูลทุกคนโดยไม่ต้องใช้รหัสผ่าน Iain ชี้ไปยังผู้ใช้เชลล์.my.cnfในบ้านของรูทซึ่งถูกต้องแน่นอน
Koen van der Rijt

จะเกิดอะไรขึ้นถ้าไม่มีไฟล์ ~ / .my.cnf ถ้าฉันสร้างและรีสตาร์ท mysqld ฉันควรจะทำสิ่งนี้ได้หรือไม่?
Amalgovinus

21

สำหรับ mysql 5.7+ หากคุณตั้งรหัสผ่านว่างเปล่าสำหรับการตั้งค่าเริ่มต้น mysql จะใช้auth_socketเป็นกลยุทธ์โดยอัตโนมัติ ความพยายามในการอัปเดตรหัสผ่านโดยไม่มีการเปลี่ยนแปลงกลยุทธ์จะไม่มีผลลัพธ์ rootคุณสามารถเสมอสามารถที่จะเข้าสู่ระบบโดยไม่ต้องใช้รหัสผ่านถ้าผู้ใช้ของคุณคือ

โซลูชัน รันคำสั่งต่อไปนี้เพื่อเปลี่ยนกลยุทธ์การรับรองความถูกต้องและตั้งรหัสผ่าน

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

การอ้างอิง: https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/


3
ฉันต้องเพิ่มสตริงว่างในตอนท้ายเพื่อให้มันทำงาน:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '';
kramer65

Intersting @kramer ... BY "";ทำงานเฉพาะในกรณีที่ผมตั้งเป็นคุณ ขอบคุณ!
Juan Antonio

กำลังเปลี่ยนรหัสผ่านเป็น 'ANY_PASSWORD' และไม่ล้างรหัสผ่าน หากต้องการล้างและลงชื่อเข้าใช้โดยไม่มีรหัสผ่านให้ตั้งเป็นสตริงว่าง
Fernando Kosh

7

ในฐานะของ MySQL 5.6.6 คุณสามารถใช้ mysql_config_editor เพื่อสร้างไฟล์เข้ารหัสที่จะเข้าสู่ระบบของคุณโดยอัตโนมัติ:

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

จากนั้นป้อนรหัสผ่านเมื่อได้รับแจ้ง

หมายเหตุ: หากรหัสผ่านของคุณมี '#' อยู่และอาจเป็นอักขระอื่นให้ใช้เครื่องหมายอัญประกาศเดี่ยวเมื่อป้อนรหัสผ่าน


คุณสามารถอธิบายเพิ่มเติมเกี่ยวกับความคิดเห็นคำพูดเดียวได้หรือไม่? มันแจ้งให้คุณใส่รหัสผ่านบนเครื่องคุณใส่รหัสผ่านไว้ในเครื่องหมายคำพูดเดี่ยวหรือ
เปล่า

ใช่ฉันพบว่าการป้อนโดยไม่มีเครื่องหมายอัญประกาศไม่ทำงานหากมีอักขระพิเศษ ดังนั้นเมื่อได้รับแจ้งให้ป้อน '(คำพูดเดียว) จากนั้นรหัสผ่านแล้ว'
Brian Deterling

0

สร้างไฟล์ที่มีรหัสผ่าน root ของ mysql เท่านั้นและมีเพียงรูทเท่านั้นที่สามารถอ่านได้

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

คุณสามารถนำเข้าฐานข้อมูลด้วย

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

หรือเชื่อมต่อกับฐานข้อมูลของคุณและออกคำสั่ง 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
นี่เป็นงานที่มากกว่าคำตอบอื่น ๆ และรหัสผ่านของคุณสั้นเกินไป :)
Michael Hampton

8
อย่าทำอย่างนี้. มันใส่รหัสผ่านบนบรรทัดคำสั่งที่ทุกคนสามารถอ่านได้ด้วยps(1)
camh

นั่นเป็นความคิดที่ไม่ค่อยดีนัก
เฟอร์นันโดโคช
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.