php - 如何在 ubuntu 12.04 中更改 mysql 数据目录

标签 php mysql ubuntu

我正在尝试更改 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/

相关文章:

mysql - 从包含两个外键数据的表中获取所有数据

mysql - 在 MySQL 中使用 CSV 列作为条件显示所有值

ubuntu - 崇高文本 3 个字母和括号未对齐

linux - 如何将具有符号链接(symbolic link)的文件夹复制到另一个目录

ubuntu - 如何创建可在不同版本的 Ubuntu 上使用的 deb 包

javascript - 更新 DOM 并发送当前时间

php - 单击编辑按钮时,必须在表单中填写相应的详细信息以进行编辑

php - 在 codeigniter 中向多个收件人发送邮件

java - hibernate : Unknown column in field list

php - .user.ini 文件是否适用于子目录?