ผู้ใช้ขั้นสูงมีขั้นตอนที่ดีทีละขั้นตอนเกี่ยวกับวิธีแก้ปัญหานี้
นี่คือชุดคำสั่งอื่น ๆ เกี่ยวกับการทำสิ่งเดียวกัน
http://www.ubuntugeek.com/how-to-change-the-mysql-data-default-directory.html
นี่คือมันโพสต์ใหม่ ขึ้นและลงคะแนนต้นฉบับถ้าคุณทำได้กับผู้ใช้ super
หลังจากความสับสนทั่วไปเกี่ยวกับการอนุญาตฉันรู้ว่าปัญหาไม่ใช่ว่าฉันไม่มีสิทธิ์และเส้นทางที่ถูกต้อง แต่ AppArmor ป้องกัน mysql ไม่ให้อ่านและเขียนไปยังตำแหน่งใหม่
นี่คือทางออกของฉัน:
ก่อนอื่นหยุด MySQL ดังนั้นไม่มีอะไรแปลกเกิดขึ้นในขณะที่คุณเล่นซอ:
$ sudo stop mysql
จากนั้นย้ายไดเร็กทอรีฐานข้อมูลทั้งหมดไปที่โฮมใหม่:
$ sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/
อย่าย้ายไฟล์พวกเขาจะถูกสร้างโดย mysql เพียงแค่ย้ายโฟลเดอร์ (ซึ่งเป็นฐานข้อมูล)
จากนั้นขอให้ AppArmor อนุญาตให้ mysql ใช้โฟลเดอร์ใหม่อย่างสุภาพ:
$ sudo vim /etc/apparmor.d/usr.sbin.mysqld
เพิ่มบรรทัด:
/new-mysql-dir/ r,
/new-mysql-dir/** rwk,
จากนั้นบอก mysql ว่า datadir ย้ายแล้ว:
$ sudo vim /etc/mysql/my.cnf
เปลี่ยนสาย:
datadir=/var/lib/mysql
ไปที่:
datadir=/my-new-db-dir/
หมายเหตุ: ขึ้นอยู่กับการตั้งค่าฐานข้อมูลของคุณคุณอาจจำเป็นต้องเปลี่ยน innodb-data-home-dir เป็นต้นเช่นกัน
จากนั้นรีสตาร์ท AppArmor เพื่ออ่านการตั้งค่าใหม่:
$ sudo /etc/init.d/apparmor restart
และเริ่ม MySQL อีกครั้งโดยใช้ datadir ใหม่:
$ sudo start mysql
หวังว่านี่จะช่วยได้!