เก็บรหัสผ่านไคลเอนต์ MySQL หรือรหัสผ่านการตั้งค่าน้อยกว่าการตรวจสอบ


11

ฉันกำลังใช้ไคลเอนต์บรรทัดคำสั่ง mysql และฉันไม่ต้องการให้รหัสผ่านทุกครั้งที่ฉันเริ่มไคลเอนต์ ตัวเลือกของฉันคืออะไร?


โปรดยอมรับคำตอบสำหรับคำถามก่อนหน้านี้ของคุณเนื่องจากดูเหมือนว่าคำตอบหลายข้อนั้นเป็นวิธีการแก้ไขที่ถูกต้อง - คลิกเครื่องหมายถูกที่ระบุไว้ทางด้านซ้ายของคำตอบ
เชนหัวเสีย

คำตอบ:


15

สร้างไฟล์ชื่อ.my.cnfในไดเรกทอรีบ้านของคุณที่มีลักษณะเช่นนี้ ตรวจสอบให้แน่ใจว่ามีการตั้งค่าการอนุญาตของระบบไฟล์เพื่อให้ผู้ใช้ที่เป็นเจ้าของเท่านั้นสามารถอ่านได้ (0600)

[client]
host     = localhost
user     = username.
password = thepassword
socket   = /var/run/mysqld/mysqld.sock
#database = mysql

เมื่อคุณติดแท็กคำถามของคุณ mysqldump คุณควรดูคำถามนี้

การใช้ mysqldump ในงาน cron โดยไม่มีรหัสผ่านรูต

อัปเดต (2016-06-29) หากคุณใช้ mysql 5.6.6 ขึ้นไปคุณควรดูเครื่องมือmysql_config_editorที่ให้คุณจัดเก็บข้อมูลประจำตัวในไฟล์ที่เข้ารหัส ขอบคุณGiovanni ที่พูดถึงสิ่งนี้กับฉัน


มันเยี่ยมมากมันทำงานได้ดีขอบคุณ
เดินทาง

หากคำตอบสามารถแก้ไขปัญหาของคุณได้คุณควรคลิกเครื่องหมายถูกเพื่อยอมรับมัน
Zoredache

1
นี้จะเก็บรหัสผ่านเป็นข้อความธรรมดาการปฏิบัติที่ฉันจะกีดกันจากมุมมองความปลอดภัย
Giovanni

@Giovanni แน่นอนแม้ว่า mysql_config_editor ที่คุณพูดถึงในคำตอบของคุณในขณะที่มีประโยชน์ไม่สามารถใช้ได้จนกว่าคุณจะทำงาน 5.6.6 ยังมีการแจกแจงในวันนี้ที่มีเวอร์ชั่นเก่ากว่า
Zoredache

แต่สิ่งนี้ทำบน Windows ได้อย่างไร
Wolfpack'08

9

คุณสามารถใช้ยูทิลิตี้ในการจัดเก็บข้อมูลประจำตัวของการตรวจสอบในแฟ้มเส้นทางการเข้าสู่ระบบการเข้ารหัสชื่อmysql_config_editor.mylogin.cnf

ในการสร้างชุดข้อมูลรับรองใหม่ให้ทำดังนี้

mysql_config_editor set --host=db.host.org --user=dbuser --password

และป้อนรหัสผ่านของคุณเมื่อได้รับแจ้ง

สิ่งนี้จะจัดเก็บข้อมูลรับรองความถูกต้องของคุณในclientเส้นทางเข้าสู่ระบบเริ่มต้น

คุณสามารถจัดเก็บข้อมูลรับรองความถูกต้องหลายอย่างโดยการระบุ--login-pathตัวเลือกอื่น:

mysql_config_editor set --login-path=db2 --host=db2.host.org --user=dbuser --password

ตามค่าเริ่มต้นmysqlไคลเอนต์จะอ่าน[client]และ[mysql]กลุ่มจากไฟล์ตัวเลือกอื่น ๆ ดังนั้นจึงอ่านได้จากไฟล์พา ธ การล็อกอินเช่นกัน ด้วย--login-pathตัวเลือกโปรแกรมไคลเอนต์จะอ่านพา ธ การล็อกอินที่ระบุชื่อเพิ่มเติมจากไฟล์พา ธ การล็อกอิน กลุ่มตัวเลือกที่อ่านจากไฟล์ตัวเลือกอื่น ๆ จะยังคงเหมือนเดิม พิจารณาคำสั่งนี้:

mysql --login-path=db2

mysqlลูกค้าอ่าน[client]และ[mysql]จากไฟล์ตัวเลือกอื่น ๆ และ[client], [mysql]และ[mypath]จากแฟ้มเส้นทางการเข้าสู่ระบบ

หากต้องการพิมพ์ข้อมูลทั้งหมดที่เก็บไว้ในไฟล์กำหนดค่าให้รัน:

mysql_config_editor print --all=true

ข้อมูลเพิ่มเติมเกี่ยวกับยูทิลิตี้สามารถพบได้ที่"mysql_config_editor - MySQL Configuration Utility"


2

เราต้องไม่แสร้งว่า. mylogin.cnfนั้นปลอดภัยเพราะฉันสามารถใช้my_print_defaults -s [use your login-path]เพื่อทำให้รหัสผ่านนั้นปรากฏเป็นข้อความธรรมดา นี่คือสาเหตุที่ MariaDB ไม่สนับสนุนวิธีการ 'รักษาความปลอดภัยด้วยความสับสน'


ดังนั้นสิ่งที่เป็นคำตอบให้กับคำถามนี้แล้ว?
Pierre.Vriens

0

มีวิธีอื่นเป็นมุมฉากกับวิธีการดังกล่าวข้างต้นแต่มันอาจจะเป็นความเสี่ยงด้านความปลอดภัยถ้าคนอื่นจะดูจอมอนิเตอร์ของคุณหรือถ้าคุณกำลังบันทึกประวัติของคุณ

อย่างไรก็ตามมันเป็นตัวเลือกที่จะป้องกันไม่ให้คุณได้รับแจ้งและเป็นสิ่งที่ฉันใช้ในภาพนักเทียบท่าทิ้งและ ....

mysql -u YOUR_USER --password=YOUR_PASSWORD_HERE your_database -e "your query" etc.

คุณจะไม่ได้รับแจ้งคุณสามารถตั้งค่านามแฝงชั่วคราวในเชลล์ได้หากต้องการ

ใช้ด้วยความระมัดระวัง

mysql Ver 14.14 Distrib 5.5.61-38.13 สำหรับ debian-linux-gnu (x86_64) โดยใช้ readline 5.1

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