ผู้ใช้ mysql เริ่มต้นเป็นสตริงว่าง ฉันจะเปลี่ยนเป็น "ฉัน" ได้อย่างไร (เช่น whoami)


0

ฉันเพิ่งอัปเดตระบบปฏิบัติการของฉันจาก Mavericks เป็น Yosemite และตอนนี้เมื่อฉันทำ mysql foo ฉันเข้าใจ:

ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'foo'

ใช้เพื่อเรียกใช้ mysql ด้วยชื่อผู้ใช้ของฉันตาม whoamiในฐานะผู้ใช้ mysql ฉันจะทำให้มันทำเช่นนั้นได้อีกครั้ง? (โดยไม่ผ่าน -u ข้อโต้แย้ง)

UPDATE ดูเหมือนว่าจะลดชื่อผู้ใช้ของฉันเป็นสตริงว่างแม้ว่าฉันจะให้ไว้อย่างชัดเจน

nickshanks$ mysql -u nickshanks foo
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'foo'
nickshanks$ mysql -u "'nickshanks'@'localhost'" foo
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'foo'

ทุกอย่างทำงานได้ดีถ้าฉันเข้าสู่ MySQL พรอมต์เป็น root.

คำตอบ:


1

ในไดเรกทอรีบ้านของคุณสร้างไฟล์ .my.cnf. นี่เป็นรูปแบบ "ini" พร้อมการสนับสนุนส่วน ตั้งค่าเริ่มต้นสำหรับโปรแกรมไคลเอนต์ภายใต้ส่วนลูกค้า ตัวเลือกสำหรับโปรแกรมเฉพาะสามารถระบุในส่วนที่มีชื่อเหมือนกับชื่อโปรแกรม

ตัวเลือกจะถูกตั้งชื่อหลังจากตัวเลือกแบบยาวสำหรับโปรแกรม (ไม่มีขีดกลางสองอันแรกเนื่องจากเป็นส่วนหนึ่งของ getopt (3) และไม่ใช่ส่วนหนึ่งของชื่อ)

ดังนั้นฐานที่ดีคือสิ่งนี้ (โปรดทราบว่ามันยากในการเข้ารหัสชื่อผู้ใช้):

cat <<EOF >~.my.cnf
[client]
user = $USER
database = $USER

EOF

หรือถ้าเจตนาที่แท้จริงของคุณคือให้มันเหมือนกับผู้ใช้ที่เรียกใช้โปรแกรมฉันสงสัยว่า MySQL จะดูตัวแปรสภาพแวดล้อมบางอย่างถ้าไม่มีผู้ใช้ ฉันไม่พบสิ่งนี้ในเอกสารประกอบ แต่อาจดูที่ $ USER ซึ่งหมายความว่าข้อมูลโค้ดด้านบนจะสร้างค่าว่างและจะอธิบายการเปลี่ยนแปลงในพฤติกรรมหลังจากอัปเกรด

ตรวจสอบกับ env หากชื่อผู้ใช้ของคุณมีอยู่ในตัวแปร หากไม่ตั้งค่าให้ $ USER และ $ USERNAME เป็นอีกทางเลือกหนึ่งในไฟล์ shell rc ของคุณ (.bashrc, .zshrc, .profile หรืออะไรก็ตามที่ใช้) อย่าลืมโหลดใหม่หลังจากการเปลี่ยนแปลงหรือตั้งค่ารันไทม์ผ่านการส่งออกหรือ setenv


0

ฉันคิดออกแล้ว สิทธิ์ผู้ใช้ปกติของฉันสำหรับโฮสต์ '127.0.0.1' (ตั้งค่าเนื่องจาก localhost ใช้เพื่อแก้ไขปัญหาไม่ถูกต้องในบางกรณี) ฉันเข้าสู่ระบบในฐานะ root และเปลี่ยนพวกเขาทั้งหมดเป็น localhost และฐานข้อมูลทั้งหมดของฉันปรากฏขึ้นอีกครั้งเมื่อเข้าสู่ระบบโดยไม่ได้รับสิทธิพิเศษ แต่ความรุ่งโรจน์ถึงเมลวินเนื่องจากการแทงเพื่อหาคำตอบจากระยะไกล

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