วิธีการให้ MySQL ให้สิทธิ์ผู้ใช้รูทของเครื่อง?


0

mysqlcheckฉันพยายามที่จะเรียกใช้ มันล้มเหลวด้วย:

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

คำถามและคำตอบอื่น ๆ พูดเพื่อแก้ไขหรือรีเซ็ตรหัสผ่าน MySQL ฉันไม่อยากทำอย่างนั้นเพราะฉันไม่รู้ผลกระทบ หากมีสคริปต์ใด ๆ ที่ใช้มันแล้วฉันจะทำลายพวกเขา อย่างน้อยที่สุดฉันต้องแบ่งปันกับผู้ดูแลระบบอีกสองคน (พาร์ทไทม์) คนอื่น ๆ ดังนั้นมันจึงเป็นความเจ็บปวดเป็นส่วนใหญ่

สิ่งที่ฉันต้องการสำหรับ MySQL คือการจดจำผู้ใช้รูทของเครื่อง (uid 0) และให้สิทธิ์กับรูททั้งหมด

ฉันกำลังทำงานกับ CentOS 7.2 ฉันจะให้ MySQL ให้สิทธิ์ผู้ใช้รูตได้อย่างไร


นี่คือคำถามที่เกี่ยวข้อง พวกเขาทั้งหมดนำกลับไปแก้ไขรหัสผ่าน

คำตอบ:


1

ใน MySQL 5.5+ คุณสามารถใช้ปลั๊กอินการรับรองความถูกต้องauth_socketสำหรับสิ่งนี้:

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

MariaDB 5.2.0+ มีปลั๊กอินunix_socket ที่คล้ายกัน- เท่าที่ฉันรู้มันมีการใช้งานตามค่าเริ่มต้น:

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

ในทำนองเดียวกัน PostgreSQL มีวิธีการรับรองความถูกต้อง "ในพื้นที่" pg_hba.confและเปิดใช้งานตามค่าเริ่มต้น

เมื่อวันที่ Unixes กลไกทั่วไปมักจะเรียกว่า"peercred"SO_PEERCREDในขณะที่ (เทียบเท่า Windows มักจะเรียกว่า "Windows Native Authentication")


ขอบคุณ @Grawity คุณรู้เรื่อง Linux และ Unix ได้อย่างยอดเยี่ยม ฉันต้องตรวจสอบการทำข้างต้น (ไร้เดียงสาฉันแม้ว่าฉันจะพลิกเล็กน้อยในmysql.conf) ฉันจะต้องตอบกลับให้คุณเพื่อยอมรับ
jww

0

จากสิ่งที่คุณพูดฉันจะสมมติว่าผู้ใช้ MySQL ของคุณ'root'@'localhost'มีรหัสผ่านตั้งแต่ที่คุณพูดถึงการแบ่งปันกับผู้อื่น และด้วยเหตุนี้ฉันจึงถือว่าคุณยังรู้รหัสผ่านนั้นอยู่

ตอนนี้เรามาดูสิ่งที่ข้อความแสดงข้อผิดพลาดบอกว่า:

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

สิ่งที่ฉันเห็นที่นี่คือคุณพยายามเชื่อมต่อกับ MySQL โดยไม่ต้องระบุรหัสผ่านในขณะที่ผู้ใช้ mysql มีรหัสผ่าน เห็นได้ชัดว่ามันไม่ทำงาน

ฉันเดิมพันmysqlcheck --auto-repair --all-databases -pจะทำงาน มันจะขอรหัสผ่านและคุณควรจะไปดี


ต้องบอกว่าสิ่งที่ฉันขอแนะนำอย่างยิ่งต่อการใช้บัญชี MySQL-root สำหรับสิ่งอื่น ๆ นอกเหนือจากการดูแลเซิร์ฟเวอร์ MySQl (ตั้งแต่ที่คุณพูดถึงIf there are any scripts using it) เพียงแค่สร้างผู้ใช้ MySQL อีกคนสำหรับสคริปต์นั้นด้วยสิทธิ์ที่เหมาะสม และถ้าคุณต้องการรีเซ็ตรหัสผ่านรูทของคุณจริงๆการบอกเพื่อนร่วมงานอีกสองคนไม่น่าจะมีปัญหามากมายใช่ไหม ถ้าเป็นฉันจะประเมิน บริษัท วิธีการสื่อสารของคุณ ....


"ใช้บัญชี MySQL-root ... " - จริงๆแล้วมันคือผู้ใช้รูทของเครื่อง และไม่ใช่บัญชี MySQL อย่างมีประสิทธิภาพฉันขอบูรณาการ MySQL บางอย่างในกลไกความปลอดภัยของการติดตั้ง Linux ในเครื่อง
jww

แน่ใจว่าเป็นผู้ใช้รูทเครื่อง แต่นั่นไม่ได้เปลี่ยนความจริงที่ว่า MySQL ใช้สิ่งที่ชื่อผู้ใช้ของเครื่องถ้าไม่มีให้ อย่างมีประสิทธิภาพคุณยังคงใช้บัญชีรูทของ MySQL
Olle Kelderman

" mysqlcheck --auto-repair --all-databases -p" - ที่พร้อมท์ให้ใส่รหัสผ่านแม้ว่าจะเป็นผู้ใช้รูทด้วยsudo su -ก็ตาม
jww

1
ดังนั้นโดยทั่วไปคำถามนี้คือ "ฉันจะเข้าสู่ MySQL ด้วยผู้ใช้ MySQL ที่มีรหัสผ่านโดยไม่ต้องใช้รหัสผ่าน" ได้อย่างไร?
Olle Kelderman

ฉันใช้รหัสผ่านไปsudo su -แล้ว การยกระดับสิทธิ์ได้รับการรับรองความถูกต้องและบริบทความปลอดภัยใหม่พร้อมใช้งาน สิ่งที่ฉันต้องการคือ MySQL ให้เกียรติหรือใช้
jww
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.