Làm thế nào để thay đổi thư mục dữ liệu MySQL?


158

Có thể thay đổi thư mục dữ liệu MySQL mặc định của tôi sang một đường dẫn khác không? Tôi có thể truy cập cơ sở dữ liệu từ vị trí cũ không?


3
Có câu trả lời nào cho câu hỏi này không nếu hệ thống trong Win8?
Jonathan M

1
Đối với cửa sổ - xem tại đây: dba.stackexchange.com/questions/24403/ trộm
Tiến sĩ Aaron Dishno

Đối với người dùng mac, tất cả những gì bạn cần là đây và bước 1-4 từ câu trả lời của @ user1341296.
shellbye

Câu trả lời:


270
  1. Dừng MySQL bằng lệnh sau:

    sudo /etc/init.d/mysql stop
  2. Sao chép thư mục dữ liệu hiện có (mặc định nằm trong /var/lib/mysql) bằng lệnh sau:

    sudo cp -R -p /var/lib/mysql /newpath
  3. chỉnh sửa tập tin cấu hình MySQL bằng lệnh sau:

    sudo gedit /etc/mysql/my.cnf   # or perhaps /etc/mysql/mysql.conf.d/mysqld.cnf
  4. Tìm kiếm mục nhập datadirvà thay đổi đường dẫn (cần phải /var/lib/mysql) sang thư mục dữ liệu mới.

  5. Trong terminal, nhập lệnh:

    sudo gedit /etc/apparmor.d/usr.sbin.mysqld
  6. Tìm kiếm các dòng bắt đầu với /var/lib/mysql. Thay đổi /var/lib/mysqltrong các dòng với đường dẫn mới.

  7. Lưu và đóng tập tin.

  8. Khởi động lại hồ sơ AppArmor bằng lệnh:

    sudo /etc/init.d/apparmor reload
  9. Khởi động lại MySQL bằng lệnh:

    sudo /etc/init.d/mysql restart
  10. Bây giờ hãy đăng nhập vào MySQL và bạn có thể truy cập cùng cơ sở dữ liệu bạn đã có trước đây.


33
Ở trên không thể giải quyết vấn đề cho tôi trên Ubuntu 12.04 (Chính xác). Tôi phát hiện ra rằng người ta cần chỉnh sửa tệp /etc/apparmor.d/tunables/alias để bao gồm một dòng "bí danh / var / lib / mysql / -> / newpath /," Với điều này, tôi không cần bất kỳ thay đổi trong bất kỳ tệp AppArmor nào khác. Nó hoạt động ngay lập tức sau khi khởi động lại AppArmor với "/etc/init.d/apparmor restart" và MySQL với "restart mysql".
mak

2
Apparmor không liên quan trên CentOS. Có Selinux thay thế. Có thể đọc về cách vô hiệu hóa hoặc quản lý tại đây blog.oracle.com/jsmyth/entry/selinux_and_mysql
Noam

12
trên phiên bản của mak (cần thiết) đừng quên dấu phẩy ở cuối dòngalias /var/lib/mysql/ -> /newpath/,
Michael

4
Không thể nhấn mạnh đủ tầm quan trọng của nhận xét của Michel ở trên là: THÊM GIAO DỊCH COMMA và lưu một số tế bào thần kinh. Xin lỗi về mũ.
alx

2
Không làm việc cho tôi. Tôi nhận được công việc cho mysql.service không thành công. Xem 'trạng thái systemctl mysql.service' và 'Tạp chí -xn' để biết chi tiết khi cố gắng khởi động lại mysqld, và lỗi là đĩa đã đầy. Nó có 500GB dung lượng trống ...
Frank H.

17

Nhanh chóng và dễ dàng để làm:

# Create new directory for MySQL data
mkdir /new/dir/for/mysql

# Set ownership of new directory to match existing one
chown --reference=/var/lib/mysql /new/dir/for/mysql

# Set permissions on new directory to match existing one
chmod --reference=/var/lib/mysql /new/dir/for/mysql

# Stop MySQL before copying over files
service mysql stop

# Copy all files in default directory, to new one, retaining perms (-p)
cp -rp /var/lib/mysql/* /new/dir/for/mysql/

Chỉnh sửa /etc/my.cnftệp và dưới [mysqld]dòng này:

datadir=/new/dir/for/mysql/

Nếu bạn đang sử dụng CageFS (có hoặc không có CloudLinux) và muốn thay đổi thư mục MySQL, bạn PHẢI thêm thư mục mới vào tệp này:

/etc/cagefs/cagefs.mp

Và sau đó chạy lệnh này:

cagefsctl --remount-all

1
Rất vui được nghe: P
sMstyle

Rất cảm ơn, và để thêm nếu bạn muốn hoàn toàn kịch bản như tôi đã làm, bạn có thể sử dụng cái này: sed -i 's | datadir = / var / lib / mysql | datadir = / data / var / lib / mysql | g' / vv / my.cnf
berimbolo

Điều này đã không làm việc cho tôi. Tôi đã thử điều này và rất nhiều lựa chọn thay thế khác. Tôi đang đi đến kết luận giống như người dùng3338098 khi anh ta nói rằng đây là cách duy nhất hoạt động: serverfault.com/questions/503887/
mẹo

@Volksman tất cả các liên kết nói rằng anh ta phải gỡ bỏ và cài đặt lại ... rất có thể cả hai bạn đều có một số vấn đề cụ thể về máy chủ khác, vì cả MySQL và MariaDB đều hỗ trợ cấu hình datadir và gần đây tôi đã làm điều này (6 tháng trước) máy chủ không có vấn đề
sMstyle

@sMyles có, nó đã được gỡ bỏ và cài đặt nhưng sau khi gắn / var / lib / mysql ở nơi khác, tức là một phân vùng lớn không giống như một / var đã được gắn vào trước đó. Nếu có một vấn đề cụ thể với các hệ thống của chúng tôi, thật tuyệt vời khi biết rằng đây là vấn đề. Đây là bản cài đặt chuẩn hệ điều hành mới của Centos 7 OS với RAID 10 với 8 x HDD nhưng thông thường các chi tiết mảng đĩa như vậy là trong suốt đối với phần mềm.
Volksman

15

bạn sẽ phải sao chép dữ liệu hiện tại vào thư mục mới và thay đổi my.cnfMySQL của bạn.

[mysqld]
datadir=/your/new/dir/
tmpdir=/your/new/temp/

Bạn phải sao chép cơ sở dữ liệu khi máy chủ không chạy .


Vâng đó là những gì tôi không thể làm. Tôi muốn thay đổi thư mục nhưng tôi muốn tạo cơ sở dữ liệu mới trong thư mục mới. Và muốn truy cập cả thư mục cũ và cơ sở dữ liệu thư mục mới.
MySQL DBA

1
@MySQL DBA: nếu bạn sử dụng một số ln -slynx tượng trưng tĩnh sẽ không làm cho nó?
RageZ

Vâng, tôi hơi bối rối với việc sử dụng lệnh này. Như tôi đã giải thích trước khi tôi muốn tạo cơ sở dữ liệu mới trong thư mục mới. Có thể với symlink.
MySQL DBA

1
bạn có thể tạo một thư mục mới, sử dụng liên kết tượng trưng để làm cho tệp xuất hiện trong thư mục mới và thay đổimy.cnf
RageZ

2
đã bỏ phiếu vì nó không hoạt động như chi tiết tại serverfault.com/a/733998/279553
user3338098

14

Trước tiên, bạn nên dừng máy chủ mysql. ví dụ

# /etc/init.d/mysql stop

Sau đó, bạn nên sao chép thư mục dữ liệu cũ (vd / var / lib / mysql). đặc quyền cho thư mục mới của bạn thông qua

# cp -R -p /var/lib/mysql /new/data/dir

bây giờ bạn có thể thay đổi /etc/mysql/my.cnfdữ liệu mới và khởi động lại máy chủ

# /etc/init.d/mysql restart

5
đã bỏ phiếu vì nó không hoạt động như chi tiết tại serverfault.com/a/733998/279553
user3338098

7

Nếu giống như tôi, bạn đang ở trên debian và bạn muốn di chuyển thư mục mysql đến nhà của bạn hoặc một đường dẫn trên / home / ..., thì giải pháp là:

  • Dừng mysql bằng "dịch vụ sudo mysql dừng"
  • thay đổi biến "datadir" thành đường dẫn mới trong "/etc/mysql/mariadb.conf.d/50-server.cnf"
  • Thực hiện sao lưu / var / lib / mysql: "cp -R -p / var / lib / mysql / path_to_my_backup"
  • xóa thư mục này: "sudo rm -R / var / lib / mysql"
  • Di chuyển dữ liệu sang thư mục mới: "cp -R -p / path_to_my_backup / path_new_dir
  • Thay đổi quyền truy cập bằng "sudo chown -R mysql: mysql / path_new_dir"
  • Thay đổi biến "ProtectHome" bằng "false" trên "/etc/systemd/system/mysqld.service"
  • Tải lại systemd bằng "sudo systemctl daemon-reload"
  • Khởi động lại mysql bằng "khởi động lại dịch vụ mysql"

Một ngày để tìm giải pháp cho tôi trên tài liệu mariadb. Hy vọng điều này sẽ giúp một số kẻ!


Tệp /etc/systemd/system/mysqld.service không có ở đây. Bất cứ ý tưởng nơi tôi đang tìm kiếm?
Ron Piggott

1
Đối với những người sử dụng MariaDB , tệp dịch vụ được đặt tại /lib/systemd/system/mariadb@.service
Ron Piggott

5

Tôi muốn giữ một cơ sở dữ liệu trên máy của mình, nhưng cũng có dữ liệu trên ổ cứng ngoài và chuyển đổi giữa việc sử dụng hai.

Nếu bạn đang dùng Mac và cài đặt MySQL bằng Homebrew, thì nó sẽ phù hợp với bạn. Nếu không, bạn sẽ chỉ cần thay thế các vị trí thích hợp cho MySQL datadirtrên máy của bạn.

#cd to my data dir location
cd /usr/local/var/

#copy contents of local data directory to the new location
cp -r mysql/ /Volumes/myhd/mydatadir/

#temporarily move the old datadir
mv mysql mysql.local

#symlink to the new location
ln -s /Volumes/myhd/mydatadir mysql

Sau đó, khi bạn muốn chuyển trở lại chỉ cần làm:

mv mysql mysql.remote

mv mysql.local mysql

và bạn đang sử dụng cơ sở dữ liệu địa phương của bạn một lần nữa. Mong rằng sẽ giúp.


1
đây không phải là giải quyết chính xác câu hỏi như đã nêu - tuy nhiên đây chính xác là những gì tôi đang tìm kiếm - và đó là một cách xử lý gọn gàng một trường hợp / lỗi cạnh mà my.cnf không xử lý tốt khoảng trắng: bug.mysql.com /bug.php?id=26033 . Tôi sẽ liên kết cách giải quyết này trên báo cáo lỗi đó.
gabe

đã bỏ phiếu vì nó không hoạt động như chi tiết tại serverfault.com/a/733998/279553
user3338098

5

Điểm dừng đầu tiên của mysqld

mysql_install_db --user=mysql \
                 --basedir=/opt/mysql/mysql \
                 --datadir=/opt/mysql/mysql/data

Sau đó thay đổi datadir trong của bạn /etc/mysql/my.cnf
Bắt đầu mysqld

Ghi chú:
# 1: có lẽ bạn phải điều chỉnh cài đặt SELinux của mình (dùng thử với Selinux bị vô hiệu hóa trong trường hợp gặp sự cố), Apparmor (Ubuntu) cũng có thể gặp sự cố.

# 2: xem Tài liệu tham khảo DB cài đặt MySQL


4

Trước tiên hãy dừng mysql của bạn

sudo service mysql stop

sao chép dữ liệu mysql vào vị trí mới.

sudo cp -rp /var/lib/mysql /yourdirectory/

nếu bạn sử dụng apparmor, hãy chỉnh sửa tệp sau và thực hiện như sau

sudo vim /etc/apparmor.d/usr.sbin.mysqld

Thay thế where / var / lib / by / yourdirectory / sau đó thêm follwaging nếu không tồn tại vào tệp

    /yourdirectory/mysql/ r,
    /yourdirectory/mysql/** rwk,

Lưu tệp bằng lệnh

:wq

Chỉnh sửa tập tin my.cnf

sudo vim /etc/mysql/my.cnf

Thay thế vị trí / var / lib / by / yourdirectory / sau đó lưu lại bằng lệnh

:wq

cuối cùng bắt đầu mysql

sudo service mysql start

@ xem thêm về raid0, tối ưu hóa ici


đã bỏ phiếu vì nó không hoạt động như chi tiết tại serverfault.com/a/733998/279553
user3338098

có lẽ điều này không hoạt động cho phân phối khác, nhưng nếu bạn đang sử dụng ubfox, điều này hoạt động tốt với tôi và tôi thay đổi đường dẫn cho mọi máy chủ ub Ubuntu mới được cài đặt để kích hoạt raid0.
naddame 6/11/2015

2
Tôi biết mọi người đang hạ thấp điều này, nhưng tôi muốn nói với bạn rằng điều này đã cứu tôi. Cảm ơn!
Daniel Loureiro

3

Giải pháp này hoạt động trong Windows 7 bằng Workbench. Bạn sẽ cần đặc quyền của Quản trị viên để làm điều này. Nó tạo ra một điểm nối (như lối tắt) đến bất cứ nơi nào bạn thực sự muốn lưu trữ dữ liệu của mình

Mở Workbench và chọn INSTANCE - Khởi động / Tắt máy dừng máy chủ

Cài đặt Junction Master từ https://bitsum.com/jeftmaster.php

Điều hướng đến C: \ ProgramData \ MySQL \ MySQL Server 5.6

Nhấp chuột phải vào Dữ liệu và chọn "DI CHUYỂN và sau đó thư mục LINK đến ..." Chấp nhận đích cảnh báo Điểm đến "Thư mục dữ liệu mới của bạn ở đây mà không có dấu ngoặc kép" Nhấp vào DI CHUYỂN VÀ LINK

Bây giờ đi đến "Thư mục dữ liệu mới của bạn ở đây mà không có dấu ngoặc kép"

Nhấp chuột phải vào Dữ liệu Chuyển đến tab bảo mật Nhấp vào Chỉnh sửa Nhấp vào Thêm Loại dịch vụ MẠNG sau đó Kiểm tra tên Nhấp vào OK Nhấp vào hộp kiểm Cho phép kiểm soát hoàn toàn và sau đó OK

Quay trở lại Workbench và khởi động máy chủ

Phương pháp này hiệu quả với tôi khi sử dụng MySQL Workbench 6.2 trên Windows 7 Enterprise.


2

Mọi thứ như @ user1341296 đã nói, cộng với ...

Tốt hơn hết là bạn không nên thay đổi /etc/mysql/my.cnf Thay vào đó, bạn muốn tạo tệp mới /etc/mysql/conf.d/ext.cnf(bất kỳ tên nào, nhưng nên mở rộng cnf)

Và đưa vào đó sự thay đổi của bạn:

[mysqld]
datadir=/vagrant/mq/mysql

Theo cách này

  • Bạn không cần thay đổi tệp hiện có (dễ dàng hơn cho các tập lệnh tự động hóa)
  • Không có vấn đề với bản cập nhật phiên bản MySQL (và đó là cấu hình!).

1

Tôi thường cần phải làm điều này khi nâng cấp máy, chuyển từ hộp này sang hộp khác. Ngoài việc di chuyển / var / lib / mysql đến một vị trí tốt hơn, tôi thường cần khôi phục các bảng DB cũ từ bản cài đặt MySQL cũ. Để làm điều này ...

  1. Dừng mysql. Thực hiện theo các hướng dẫn ở trên, nó cần thiết.
  2. Sao chép các thư mục cơ sở dữ liệu - sẽ có một thư mục cho mỗi cơ sở dữ liệu cài đặt cũ của bạn - vào vị trí DATADIR mới. Nhưng bỏ qua các thư mục "mysql" và "Performance_schema".
  3. Quyền chính xác trong số các thư mục cơ sở dữ liệu sao chép. Quyền sở hữu phải là mysql: mysql, thư mục nên là 700 và các tệp phải là 660.
  4. Khởi động lại mysql. Tùy thuộc vào cài đặt của bạn, các tệp DB phiên bản cũ sẽ được cập nhật.

xin lỗi vì đã bỏ phiếu, giải pháp này có thể đúng, chưa thử.
dùng3338098

1

Chúng tôi phải chuyển MySQL vào /homethư mục vì nó được ánh xạ từ một đĩa vật lý khác. Để làm cho đơn giản hơn, thay vì thay đổi thư mục trong my.cnf, chúng tôi đã ánh xạ thư mục mới /home/mysqlvào vị trí của thư mục gốc /var/lib/mysql. Nó hoạt động đối với chúng tôi như một bùa mê (được thử nghiệm trên CentOS 7.1).

Tạo thư mục mới và đặt quyền chính xác.

mkdir -p /home/mysql
chmod 755 /home/mysql
chown mysql:mysql /home/mysql

Dừng MySQL nếu chạy.

systemctl stop mysql

Di chuyển các dữ liệu dir.

mv -f /var/lib/mysql/* /home/mysql

Tạo một mount vĩnh viễn và thực hiện nó.

echo "/home/mysql /var/lib/mysql none    bind   0 0" >> /etc/fstab
mount -a

Khởi động lại máy chủ.

systemctl start mysql

1

Nếu bạn muốn thực hiện việc này theo chương trình (không nhập văn bản thủ công bằng gedit) thì đây là phiên bản dành cho Dockerfile dựa trên câu trả lời của người dùng1341296 ở trên:

FROM spittet/ruby-mysql
MAINTAINER you@gmail.com

RUN cp -R -p /var/lib/mysql /dev/shm && \
    rm -rf /var/lib/mysql && \
    sed -i -e 's,/var/lib/mysql,/dev/shm/mysql,g' /etc/mysql/my.cnf && \
    /etc/init.d/mysql restart

Có sẵn trên trung tâm Docker tại đây: https://hub.docker.com/r/richardjecooke/ruby-mysql-in-memory/


1

Trong trường hợp bạn là người dùng Windows và đã đến đây để tìm hiểu rằng tất cả các câu trả lời đều dành cho Người dùng Linux, đừng thất vọng! Tôi sẽ không để bạn lãng phí thời gian như cách tôi đã làm.

Một chút nói nhảm nhí trước giải pháp:

MySQL sử dụng một thư mục Dữ liệu để lưu trữ dữ liệu của các cơ sở dữ liệu khác nhau mà bạn tạo. Chà, cuối cùng, nó phải lưu trữ chúng dưới dạng các tệp có thêm một số trò tung hứng trong ứng dụng và định dạng tệp để đảm bảo Cơ sở dữ liệu hứa hẹn rằng bạn đã học trong các lớp Cơ sở dữ liệu còn nguyên vẹn.

Bây giờ bạn muốn đảm bảo có đủ không gian để lưu trữ cơ sở dữ liệu lớn mà bạn có thể tạo trong tương lai, và vì vậy bạn nghĩ, Hey! Tôi muốn đặt nó vào một ổ đĩa khác có nhiều không gian hơn.

Vì vậy, bạn làm như sau.

Bước - 1 : Dừng dịch vụ MySQL.

  Window Key + R - will open Run
  servies.msc    - will open services manager
  Locate MySQL80 (80 is for version 8.0, look for the one you've).
  Stop it.       (Right click, Stop)

Bước - 2 : Tìm ra thư mục Dữ liệu hiện tại

 Goto C:\ProgramData\MySQL\MySQL Server 8.0

Theo mặc định, cần có một thư mục ở đây được đặt tên Data, đây là thư mục được sử dụng bởi MySQL trong cài đặt mặc định (miễn là họ không tìm thấy vị trí khác tốt hơn), nhưng hãy kiểm tra xem.

Tìm my.initập tin, nên ở ngay đó.

Mở nó trong một trình soạn thảo (Notepad ++ có thể).

Thực hiện CTRL + F để tìm hiểu datadirtrong tệp.

Bất cứ điều gì được đề cập ở đây là vị trí thực tế hiện đang được MySQL sử dụng cho thư mục dữ liệu. Đây là những gì bạn muốn thay đổi.

Bước - 3 : Thay thế nó bằng một thư mục dữ liệu mới.

Giả sử bạn muốn thư mục dữ liệu mới của mình là W: __ MySQL_Data. Hãy thay đổi datadirgiá trị trong my.initệp thành giá trị này. Giữ giá trị trước đó được nhận xét để bạn sẽ không phải nhớ nó.

 # Path to the database root
 # datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data
   datadir=W:/__MySQL_Data

Bây giờ sử dụng xcopyđể sao chép mặc định datadirsang W:\. Khởi chạy dấu nhắc lệnh (Window + R, cmd, Enter)

 >> xcopy "\C:\ProgramData\MySQL\MySQL Server 8.0" "W:\" /E /H /K /O /X

Và đổi tên thư mục đã sao chép thành datadirgiá trị mới mà bạn đã thay đổi. Đây:W:/__MySQL_Data

Tại sao không chỉ đơn giản là sao chép? Chà vì đó không phải là COOL!, Điều này giúp bạn không bị mất quyền trên thư mục đã sao chép, do đó khi bạn khởi động lại MySQL80, nó sẽ không gây ra lỗi ngu ngốc: "Dịch vụ MySQL80 trên Máy tính cục bộ đã khởi động và sau đó dừng lại. chúng không được sử dụng bởi các dịch vụ hoặc chương trình khác. " - Lịch sự: Microsoft

Bước - 4 : Khởi động lại dịch vụ

 Well, go back to the Services Manager to Start again, 
 "MySQL80" that you stopped, to restart it again.

Bước - 5 : Xong! Bây giờ trở lại làm việc !!


1
Cảm ơn điều đó rất hữu ích nhưng cảnh báo: my.ini không thể ghi được bởi người dùng bình thường trừ khi bạn thay đổi quyền của nó. Oh và ProgramData là một thư mục ẩn nên bạn phải thay đổi cài đặt thư mục Explorer để xem.
JonP

0

Trước tiên, bạn nên biết tập tin cấu hình của bạn ở đâu? tập tin cấu hình của bạn ở đâu?

NẾU bạn đã cài đặt với apt-get hoặc yum install

tập tin cấu hình có thể xuất hiện trong

/etc/mysql/my.cnf

datafile có thể xuất hiện trong

/ var / lib / mysql

và những gì bạn nên làm là

  1. dừng mysql
  2. thay đổi dữ liệu mysql sang dirctory mới
  3. thay đổi tập tin cấu hình
  4. tải lại tập tin cấu hình
  5. khởi động lại mysql

và sau đó công việc được thực hiện.

Nhưng nếu bạn không cài đặt nó bằng apt hoặc yum, direcotry có thể không thích điều này và bạn có thể tìm thấy các tệp mysql với

mysis ở đâu


đã bỏ phiếu vì nó không hoạt động như chi tiết tại serverfault.com/a/733998/279553
user3338098

0

Trong SuSE 13.1, điều này hoạt động tốt để di chuyển thư mục dữ liệu mysql sang nơi khác, ví dụ: / home / example_user / và để đặt cho nó một tên nhiều thông tin hơn:

Trong / var / lib /:

# mv -T mysql /home/example_user/mysql_datadir
# ln -s /home/example_user/mysql_datadir ./mysql

Tôi đã khởi động lại mysql:

# systemctl restart mysql.service

nhưng nghi ngờ rằng thậm chí điều đó là không cần thiết.


0

Đối với một trong những môi trường tôi đã thay đổi thư mục dữ liệu mysql sang vị trí mới nhưng trong quá trình khởi động lại máy chủ mysql, nó đã mất thời gian. Vì vậy, tôi đã kiểm tra cổng và thấy rằng quá trình khác đang lắng nghe trên cổng mysql. Vì vậy, tôi đã giết quá trình và khởi động lại máy chủ mysql và nó hoạt động tốt.

Tôi đã làm theo các bước dưới đây để thay đổi thư mục dữ liệu hoạt động tuyệt vời. thay đổi thư mục dữ liệu mysql trong Linux


Chào mừng bạn đến với Stack Overflow! Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
Tim Diekmann

0

Các bước trên là nền tảng và cơ bản. Tôi đã theo dõi họ và vẫn gặp lỗi "mysql không khởi động được".

Đối với thư mục mới để lưu trữ dữ liệu mysql, bạn cần đảm bảo rằng thư mục đó có quyền và quyền sở hữu mysql: mysql.

Bên cạnh đó, nó cần kiểm tra các quyền và quyền sở hữu thư mục mẹ của mysql nếu có, nói, / data / mysql /. Ở đây / data / thư mục nên là root: root. Tôi đã sửa lỗi "mysql fail to start" sau khi thay đổi quyền sở hữu thư mục mẹ của / mysql. Hệ điều hành trong VM của tôi là RHEL 7.6.


Tôi đã thử selinux trong RHEL7.6 bằng cách thay đổi SELINUX = thực thi thành SELINUX = cho phép, không hiệu quả với tôi.
dùng3325137William

0

Cũng có thể liên kết symadir. Ít nhất là trong macOS, môi trường dev.

(homebrew), vd

# make sure you're not overwriting anything important, backup existing data
mv /usr/local/var/mysql [your preferred data directory] 
ln -s [your preferred data directory] /usr/local/var/mysql

Khởi động lại mysql.


-1

Nếu bạn đang sử dụng SE linux, hãy đặt nó ở chế độ cho phép bằng cách chỉnh sửa / etc / selinux / config và thay đổi SELINUX = bắt buộc thành SELINUX = permissive


như chi tiết ở đây serverfault.com/questions/503887/ Lỗi selinux không có lỗi, có một số vấn đề khác ngăn cản việc thay đổi datadirtài sản
user3338098
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.