วิธีเปลี่ยนเจ้าของจุดยึด


44

เราได้ย้ายไดเรกทอรีข้อมูล mysql ไปยังดิสก์อื่นดังนั้นตอนนี้/var/lib/mysqlก็เป็นเพียงจุดเชื่อมต่อไปยังพาร์ติชันอื่น เราตั้งเจ้าของไดเรกทอรีไป/var/lib/mysqlmysql.mysql

root.rootแต่ทุกครั้งที่เราติดตั้งพาร์ทิชันที่เป็นเจ้าของที่มีการเปลี่ยนแปลงไป ด้วยเหตุนี้เราจึงไม่สามารถสร้างฐานข้อมูล MySQL เพิ่มเติม

รายการ fstab ของเรา:

/dev/mapper/db-db   /var/lib/mysql    ext3    relatime        0       2

วิธีการเปลี่ยนเจ้าของจุดเชื่อมต่อเป็นผู้ใช้อื่นที่ไม่ใช่รูท

คำตอบ:


43

คุณต้องเปลี่ยนการอนุญาตของระบบไฟล์ที่ติดตั้งไม่ใช่ตำแหน่งเมานต์เมื่อระบบไฟล์ไม่ได้ถูกเมาท์ ดังนั้นแล้วmount /var/lib/mysql chown mysql.mysql /var/lib/mysqlสิ่งนี้จะเปลี่ยนการอนุญาตของรูทของระบบไฟล์ฐานข้อมูล MySQL

แนวคิดพื้นฐานคือระบบไฟล์ที่เก็บฐานข้อมูลจำเป็นต้องเปลี่ยนไม่ใช่จุดต่อเว้นแต่เส้นทางของมันจะมีปัญหาบางอย่างเช่นlibสามารถอ่านได้โดยรูทเท่านั้น


32

ด้วย

mount device mount-point -o uid=foo -o gid=foo

ถ้ากลุ่มจะต้องมีการเปลี่ยนแปลงด้วย


2
โดยที่ uid fooคือชื่อของผู้ใช้ที่คุณต้องการเป็นเจ้าของจุดเชื่อมต่อ และ gid fooคือชื่อของกลุ่มผู้ใช้โดยทั่วไปเหมือนกับชื่อผู้ใช้ สงสัยเพียงพิมพ์ls -lไดเรกทอรีบ้านของคุณและตรวจสอบชื่อและนามสกุลที่สองตามลำดับ
Zequez

10

เพิ่ม uid และ gid เช่นนี้:

/dev/mapper/db-db  /var/lib/mysql ext3  relatime,rw,exec,uid=frank,gid=www-group        0       2

คุณสามารถใช้ชื่อผู้ใช้ / กลุ่มจริง (ระวังช่องว่าง) หรือค่าตัวเลข, gid ฉันเพิ่ม rw และ exec ซึ่งอาจช่วยคุณป้องกันปัญหาการเข้าถึงเพิ่มเติม (สมมุติว่าคุณอยู่ในระบบการพัฒนาไม่ใช่เซิร์ฟเวอร์ที่ใช้งานจริง)

PS: สำหรับการเข้าถึงที่มากยิ่งขึ้น (หากต้องการ) ให้เพิ่ม ", dir_mode = 0777, file_mode = 0777"


3
relatimeไม่มัน lwn.net/Articles/244829
endolith

7
-1 เนื่องจากuidและตั้งgidค่าสถานะใช้งานได้เฉพาะกับระบบไฟล์ที่ไม่สนับสนุนสคีมาการอนุญาต Linux - เช่น FAT และ NTFS และอื่น ๆ ดูaskubuntu.com/a/34068/329506
mgarciaisaia

2
ใช่ฉันวิ่งเข้าไปในปัญหา uid / gid - มีทางออกหรือไม่?
tofutim

สิ่งนี้ช่วยฉันในการขับเคลื่อน FAT32 ของฉัน ขอขอบคุณ.
Naeem Khan

3

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

นอกจากนี้คุณสามารถเพิ่มตัวเลือก 'ผู้ใช้' ลงใน fstab ของคุณตัวอย่าง:

/dev/mapper/db-db   /var/lib/mysql    ext3    relatime,user        0       2

นี่ควรหมายความว่าคำสั่ง mount (ถ้าจำเป็นต้องเรียกใช้) จะไม่ต้องการสิทธิ์พิเศษในการเมานต์โวลุ่มนั้น การไม่เปลี่ยน fstab จะไม่ทำให้คุณแก้ไขปัญหาได้!


2

ฉันมักจะทำเช่นนี้ในไดเรกทอรี unmounted เปล่า

chmod 777 <directory>

จากนั้นทำ

chown -R mysql.mysql <directory>

จากนั้นใน / etc / fstab ทำ

<device>    <directory>  ext3   user,defaults 0 2

จากนั้นใช้

mount -a

เพื่อเมานต์ระบบไฟล์ทั้งหมดที่ระบุไว้ใน / etc / fstab

มันใช้งานได้สำหรับฉัน ให้มันลอง


2

หากคุณต้องการที่จะทำมันเป็นเพียงส่วนหนึ่งของmountบรรทัดคำสั่งคุณสามารถใช้-oสวิตช์และทำ:

mount device mount-point -o uid=foo

ที่จะเปลี่ยนเจ้าของจุดเชื่อมต่อเป็นผู้ใช้fooแทนการรูท

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