MySQL 数据文件迁移至新硬盘

MySQL 数据文件迁移至新硬盘,第1张

[mysqld]

# * Basic Settings

user            = mysql

pid-file        = /var/run/mysqld/mysqld.pid

socket          = /var/run/mysqld/mysqld.sock

port            = 3306

basedir        = /usr

datadir        = /data/c/mysql 修改

#datadir        =/var/lib/mysql

这个原因有二,其中任意的一个原因都会造成你被系统告知这个warning。如果你不是一个专业的linux系统安全工程师,或者你只是个PHP程序员,并没有对系统安全有深入的研究,你就不会太容易找到它的答案。

第一,selinux,记得当年念书时,字符界面安装redhat(很古老的 *** 作系统么。。。)的时候,有这么一个选项,通常大家都听取前辈的建议,改变默认值以不安装它。但如果你恰好要 *** 作的这台机器开着selinux,它确实能够使你的mysql无法在新目标位置进行mysql_install_db的 *** 作,并爆出标题所示的警告。一个简单的解决办法是使用命令暂时关闭selinux,以便让你的 *** 作可以继续下去 setenforce 0 但最好使用一个永久方法,以便在重启后继续不要这货。 修改/etc/selinux/config文件中设置SELINUX=disabled ,然后重启或等待下次重启。

第二,apparmor,这个坑爹货和selinux一样的坑爹,它也对mysql所能使用的目录权限做了限制 在 /etc/apparmor.d/usr.sbin.mysqld 这个文件中,有这两行,规定了mysql使用的数据文件路径权限

/var/lib/mysql/ r, /var/lib/mysql/** rwk,

你一定看到了,/var/lib/mysql/就是之前mysql安装的数据文件默认路径,apparmor控制这里mysqld可以使用的目录的权限 我想把数据文件移动到/data/mysql下,那么为了使mysqld可以使用/data/mysql这个目录,照上面那两条,增加下面这两条就可以了

/data/mysql/ r, /data/mysql/** rwk,

  /var/lib/mysql/ r,

  /var/lib/mysql/** rwk,

  /datc/c/mysql/ r,

  /data/c/mysql/** rwk,

  /var/lib/mysql-files/ r,

  /var/lib/mysql-files/** rwk,

  /data/c/mysql-files/ r,

  /data/c/mysql-files/** rwk,

  /var/lib/mysql-keyring/ r,

  /var/lib/mysql-keyring/** rwk,

  /data/c/mysql-keyring/ r,

  /data/c/mysql-keyring/** rwk,

apparmor,/etc/inid.d/apparmor restart////////////     /etc/init.d/apparmor restart

pid文件的作用

1.pid文件的内容

用cat命令查看,可以看到内容只有一行,记录了该进程的ID

2.pid文件的作用

防止启动多个进程副本

3.pid文件的原理

进程运行后会给.pid文件加一个文件锁,只有获得pid文件(固定路径固定文件名)写入权限(F_WRLCK)的进程才能正常启动并把自身的PID写入该文件中。其它同一个程序的多余进程则自动退出。

mysql的pid文件

mysql pid文件记录的是当前mysqld进程的pid. 《linux 就该这么学》

通过Mysqld_safe启动mysql时,mysqld_safe会检查pid文件,未指定PID文件时,pid文件默认名为$DATADIR/`hostname`.pid

1)pid文件不存在,不做处理.

2)文件存在,且pid已占用则报错"A mysqld process already exists"

文件存在,,但pid未占用,则删除pid文件。

mysqld启动后会通过create_pid_file函数新建pid文件,通过getpid()获取当前进程pid并将PID写入pid文件。

1、修改相关目录的权限,配置文件中datadir和basedir,以及log的位置等,必须是mysql有写入的权限。

2、不要使用service mysql start来启动数据库了,因为你的系统之前可能已经安装了mysql,这个service是之前的那个mysql的。因此,可以使用mysqld_safe &来启动。看看情况,能不能启动

2、上面的步骤之后还是没法启动,那么再次删除mysql,保证删除

(1)、/etc/init.d/下面的mysql服务

(2)、清除mysql之前使用的数据文件目录内容


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7627598.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存