在CentOS修改MySQL数据库目录很简单,在my.cnf更改datadir路径后,启动即可,但在Ubuntu系统初次更改,可就上火了,因为Ubuntu有个AppArmor,是一个Linux系统安全应用程序,类似于Selinux,AppArmor默认安全策略定义个别应用程序可以访问系统资源和各自的特权,如果不设置服务的执行程序,即使你改了属主属组并0777权限,也是对服务起不到作用。网上大多数资料都说是权限问题,的确目录属性必须要改的,但不能解决问题。操作很简单,留个备忘,请看步骤!
1、停掉MySQL
# sudo /etc/init.d/mysql stop
2、修改MySQL数据库默认存放位置
# vi /etc/mysql/my.cnf
将datadir = /var/lib/mysql
修改为datadir = /data0/mysql
3、设置新数据库目录属主属组为mysql
# sudo chown mysql:mysql /data0/mysql
4、修改Ubuntu系统安全设置
# vi /etc/apparmor.d/usr.sbin.mysqld
将/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
修改为现在目录
/data0/mysql/ r,
/data0/mysql/** rwk,
然后重启AppArmor:sudo /etc/init.d/apparmor restart
注:如果不修改,就会报如下错:
1 2 3 4 5 6 7 |
|
5、重新初始化数据库
# sudo mysql_install_db
6、启动MySQL
# sudo /etc/init.d/mysql start
注:如果出现以下报错,debian-sys-maint是对mysql简单维护用的,这个用户信息记录在/etc/mysql/debian.cnf,因为mysql安装完成后已经生成密码,现在这个生成的和之前的不同,自然登陆不到mysql,故此报错。
ERROR 1045 (28000): Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)
解决如下,先查看原来密码,然后修改为现在的密码:
1 2 3 4 5 6 7 8 9 |
|
7、设置数据库ROOT登陆密码
# mysqladmin -uroot password '123456'