我正在尝试更改 mysql 的数据目录。我正在使用 12.04 ubuntu。但是当 mysql 启动时出现错误。错误是“开始:作业无法启动”。
我尝试过以下事情
停止mysql服务器:
stop mysql
创建新目录:
mkdir /array2/mysql
仅复制数据库文件夹:
cp -R /var/lib/mysql /array2/mysql
cp -R /var/lib/mysql/users /array2/mysql
备份my.cnf
文件:
cp /etc/mysql/my.cnf /root/my.cnf.backup
编辑my.cnf
文件:
nano /etc/mysql/my.cnf
将所有提及的旧数据目录和套接字更改为您的新位置
我的变成了:
datadir=/array2/mysql
socket=/array2/mysql/mysql.sock
更新目录权限:
chown -R mysql:mysql /array2/mysql
重命名旧目录:
mv /var/lib/mysql /var/lib/mysql-old
创建一个符号链接(symbolic link),以防万一:
ln -s /array2/mysql /var/lib/mysql
让 AppArmor 知道新的数据目录:
echo "alias /var/lib/mysql/ -> /your/new/datadir/," >> /etc/apparmor.d/tunables/alias
重新加载 apparmor 配置文件
sudo /etc/init.d/apparmor reload
然后启动mysql:
start mysql
最佳答案
我一直在查看您的更改,没有必要进行符号链接(symbolic link)、套接字更改和/或删除旧目录。请按照以下步骤操作。
service mysql stop
cp -R /var/lib/mysql /array2/mysql
chown -R mysql.mysql /array2/mysql
现在备份/etc/my.cnf 然后编辑数据目录变量
datadir = /array2/mysql
编辑 apparmor 规则,通常在/etc/apparmor.d/usr.sbin.mysqld 中,通过在/usr/sbin/mysqld 组中添加以下行:
/array2/mysql/ r,
/array2/mysql/** rwk,
重新加载app armor并启动mysql服务
service apparmor restart
service mysql start
问候,
关于php - 如何在 ubuntu 12.04 中更改 mysql 数据目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48324401/